GNU LilyPond – Utilisation des programmes: 4.1.1 Configuration du système

### 4.1.1 Configuration du système

Lorsque cette fonctionnalité est active, LilyPond ajoute des hyperliens au fichier PDF ou SVG. Ces liens sont transmis à un « URI helper » ou au navigateur internet, qui se charge d’ouvrir un éditeur de texte à l’endroit même où le curseur pointe.

Afin que cette chaîne de traitement soit pleinement opérationnelle, il faut configurer votre visionneur de PDF de façon à ce qu’il suive les liens grâce au script ‘`lilypond-invoke-editor`’ fourni avec LilyPond.

‘`lilypond-invoke-editor`’ est un petit programme assistant. Il se charge d’appeler un éditeur pour les identifiants de ressource (URI) de type `textedit`, et un navigateur pour les autres. Il teste en outre les variables d’environnement `EDITOR` et `LYEDITOR` pour trouver et lancer l’éditeur favori. Dans la mesure où `LYEDITOR` aura préséance sur `EDITOR`, nous vous conseillons de l’utiliser si vous désirez utiliser un éditeur pour le terminal et un autre pour la fonctionnalité pointer-cliquer de LilyPond.

Les éditeurs peuvent recourir à des syntaxes différentes pour ouvrir un fichier à une ligne et une colonne spécifiques. LilyPond dispose déjà d’un certain nombre de commandes selon les éditeurs, définies dans le fichier ‘`scm/editor.scm`’. Il suffit donc de libeller, par exemple :

>     export LYEDITOR=atom

pour lancer la commande

>     atom %(file)s:%(line)s:%(column)s

où `%(file)s`, `%(line)s` et `%(column)s` seront respectivement remplacés par le fichier, la ligne et la colonne considérés.

L’utilisation d’un éditeur non répertorié dans le fichier ‘`scm/editor.scm`’ recquiert d’en connaître la syntaxe spécifique et d’assigner la commande complète à la variable `LYEDITOR`. Voici par exemple ce qui convient à l’éditeur Visual Studio Code :

>     export LYEDITOR="code --goto %(file)s:%(line)s:%(column)s"

Note : L’utilisation d’Emacs recquiert une configuration supplémentaire. Il faudra ajouter la ligne `(server-start)` à votre fichier ‘`~/.emacs`’ afin d’éviter qu’une instance supplémentaire d’Emacs ne s’ouvre à chaque clic sur un objet du PDF.

#### Utilisation avec Xpdf

Pour Xpdf, sous UNIX, vous devrez insérer la ligne suivante dans le fichier ‘`xpdfrc`’ – soit ‘`/etc/xpdfrc`’, soit dans votre répertoire personnel ‘`$HOME/.xpdfrc`’.

>     urlCommand     "lilypond-invoke-editor %s"

Dans un environnement Ubuntu, il est fort probable que la version de Xpdf installée avec le système plante à l’ouverture de tout fichier PDF – c’est un problème connu et persistant depuis plusieurs années et dû à des incohérences de bibliothèques. La solution consiste alors à installer une version à jour des paquetages ‘`xpdf`’ et ‘`libpoppler`’ directement à partir de Debian. Une fois assuré que tout fonctionne correctement, la commande

>     sudo apt-mark hold xpdf

permet d’empêcher Ubuntu de le remplacer par un paquetage défectueux à la prochaine « mise à jour ».

#### Utilisation avec GNOME 2

En ce qui concerne l’environnement GNOME 2 et les lecteur de PDF associés, la succession de commandes suivante permet de régler le système pour la gestion des URI par ‘`textedit:`’

    gconftool-2 -t string -s /desktop/gnome/url-handlers/textedit/command "lilypond-invoke-editor %s"
    gconftool-2 -s /desktop/gnome/url-handlers/textedit/needs_terminal false -t bool
    gconftool-2 -t bool -s /desktop/gnome/url-handlers/textedit/enabled true

Après ces invocations,

>     gnome-open textedit:///etc/issue:1:0:0

devrait appeler ‘`lilypond-invoke-editor`’ pour ouvrir les fichiers.

#### Utilisation avec GNOME 3

En ce qui concerne l’environnement GNOME 3, les URI sont gérés par la surcouche « gvfs » au lieu de « gconf ». Il faut donc créer un fichier dans un répertoire local tel que ‘`/tmp`’, que l’on appelera ‘`lilypond-invoke-editor.desktop`’. Il devra avoir le contenu suivant :

>     [Desktop Entry]
>     Version=1.0
>     Name=lilypond-invoke-editor
>     GenericName=Textedit URI handler
>     Comment=URI handler for textedit:
>     Exec=lilypond-invoke-editor %u
>     Terminal=false
>     Type=Application
>     MimeType=x-scheme-handler/textedit;
>     Categories=Editor
>     NoDisplay=true

puis exécuter les commandes

>     xdg-desktop-menu install ./lilypond-invoke-editor.desktop
>     xdg-mime default lilypond-invoke-editor.desktop x-scheme-handler/textedit

Après cette invocation,

>     gnome-open textedit:///etc/issue:1:0:0

devrait appeler ‘`lilypond-invoke-editor`’ pour ouvrir les fichiers.

#### Configuration spécifique à Evince

Il se peut que, bien que `gnome-open` soit fonctionnel, Evince refuse d’ouvir les liens pointer-cliquer pour des raisons d’autorisation. S’impose alors une modification du profil `Apparmor` d’Evince ; c’est lui qui contrôle le type d’action qu’Evince est autorisé à réaliser.

Sur une distribution Ubuntu, cela consiste à éditer le fichier ‘`/etc/apparmor.d/local/usr.bin.evince`’ et lui ajouter les lignes suivantes :

>     # Pour les liens Textedit
>     /usr/local/bin/lilypond-invoke-editor Cx -> sanitized_helper,

puis lancer la commande

>     sudo apparmor_parser -r -T -W /etc/apparmor.d/usr.bin.evince

Evince devrait alors être en mesure d’ouvrir les liens pointer-cliquer. Une telle configuration devrait être fonctionnelle pour d’autres visionneurs.

### Activation du pointer-cliquer

La fonctionnalité de « pointer-cliquer » est activée par défaut pour ce qui est des fichiers PDF et SVG.

L’option pointer-cliquer accroît la taille des fichiers de manière significative. Afin de réduire la taille de ces fichiers (ainsi que du PS), il est toujours possible de désactiver le pointer-cliquer en ajoutant

>     \pointAndClickOff

dans le fichier ‘`.ly`’. Il peut alors être activé de manière explicite grâce à

>     \pointAndClickOn

Le pointer-cliquer peut aussi être désactivé au moment de la compilation en ligne de commande :

>     lilypond -dno-point-and-click file.ly

Note : Lorsqu’un fichier LilyPond est destiné à être redistribué, pensez à désactiver le pointer-cliquer, de telle sorte que les chemins d’accès et autres informations propres à votre système ne se retrouvent pas inclus dans le fichier PDF.

### Pointer-cliquer sélectif

Pour certaines applications interactives, il est parfois préférable de limiter la fonctionnalité du pointer-cliquer à quelques éléments seulement. Par exemple, si vous avez l’intention de créer une application lançant l’audio et la vidéo à partir d’une note en particulier, il serait mal venu qu’un clic sur la note vous amène à l’altération ou une liaison qui l’affecterait.

Les événements générateurs de lien peuvent se gérer :

- En dur dans votre fichier ‘`.ly`’ :

  >     \pointAndClickTypes #'note-event
  >     \relative {
  >       c'2\f( f)
  >     }

  ou

  >     #(ly:set-option 'point-and-click 'note-event)
  >     \relative {
  >       c'2\f( f)
  >     }

- En ligne de commande :

  >     lilypond -dpoint-and-click=note-event exemple.ly

Plusieurs types d’événement peuvent être mentionnés :

- En dur dans votre fichier ‘`.ly`’ :

  >     \pointAndClickTypes #'(note-event dynamic-event)
  >     \relative {
  >       c'2\f( f)
  >     }

  ou

  >     #(ly:set-option 'point-and-click '(note-event dynamic-event))
  >     \relative {
  >       c'2\f( f)
  >     }

- En ligne de commande :

      lilypond \
        -e"(ly:set-option 'point-and-click '(note-event dynamic-event))" \
        exemple.ly

#### LilyPond — Utilisation des programmes v2.22.2 (branche stable).