Des lanceurs d'app X11 pour MacOSX

X11 logo

MacOSX reposant sur une base UNIX (et même certifié véritable UNIX depuis Leopard), il est tout à fait possible de lancer des applications X11 provenant du monde Linux ou d'ailleurs (merci MacPorts ). Seulement, ces applications si puissantes soient-elles, leur principal inconvénient est qu'elle doivent être lancées en ligne de commande, et avec xterm  par dessus-le marché...

Pas très intuitif pour un système orienté utilisateur comme MacOSX ! Heureusement, des initiatives intelligentes comme Platypus  nous rendent la vie plus facile...

Le chaînon manquant

Platypus est une application Cocoa permettant de créer des applications MacOSX natives à partir de simple scripts Shell, Perl, PHP, AppleScript et j'en passe. Il est donc très facile par exemple de créer des installeurs simples, sans avoir à déployer un .pkg.

Mais qui dit script dit que l'on peut avoir les mains totalement déliées pour lancer ce que l'on veut ! Ça tombe bien puisque je viens de compiler Dia  (logiciel de modélisation UML ) via MacPorts et que ça m'agace de devoir le lancer depuis la ligne de commande ! Oui, je tiens à mon démarrage avec QuickSilver :-P !

Créer son application

Il faut bien sûr commencer par télécharger et installer Platypus  (un petit coup d'oeil à la doc  ne fait pas de mal non plus).

Voici ce qu'on trouve lorsqu'on le lance pour la première fois :

Le principe est assez simple : On donne un nom à l'application, on glisse un belle icône et on crée/sélectionne un script à lancer. Plusieurs types d'affichages sont possibles comme la barre de progression ou le droplet. Il est également possible d'ajouter d'autres fichiers/scripts auxquels vous pourrez faire référence dans votre script principal.

Une fois que tout est OK, on clique sur Create et hop ! Une application gratuite !

X11 et les ennuis commencent

Et oui car ça aurait été trop facile sinon ! Dia, comme la plupart des applications graphiques proposées par MacPorts, est une application X11; il faut donc que l'environnement X11 soit lancé via X11.app (dans /Applications/Utilities).

Comment faire ?

Grâce à la commande open bien sûr ! Cette commande générique permet d'ouvrir à peu près n'importe quoi (fichier, URL, application... Voir la manpage de la commande open ). L'idée est donc d'ouvrir X11.app et de lui passer la commande à exécuter :

#!/bin/sh
 
source ~/.profile; # Intialisation de l'environnement pour l'utilisateur courant
open -a /Applications/Utilities/X11.app /opt/local/bin/dia; # Lancement du programme via X11

Simple et efficace. Ce script est bien sûr celui qui va servir à piloter notre application Platypus

"

Et si je veux passer des options à ma commande ? Car je voudrais lancer Dia avec l'option --integrated pour que tout s'affiche dans une seule fenêtre.

"

C'est là où les choses se corsent un peu car open ne permet pas de passer d'options à la commande embarquée. Il va donc falloir ruser un peu en créant un deuxième script Shell, launcher.sh que l'on ajoutera à l'application.

launcher.sh

#!/bin/sh
 
# Ligne de commande à exécuter
# Ajoutez toutes les options que vous voulez :)
/opt/local/bin/dia --integrated &

Et notre script principal devient :

#!/bin/sh
 
source ~/.profile; # Intialisation de l'environnement pour l'utilisateur courant
 
# Lancement du programme via X11
# par l'intermédiaire du script launcher.sh
# Le CWD par défaut est le répertoire Resources de l'application
# où se trouve les éléments ajoutés via Platypus
open -a /Applications/Utilities/X11.app launcher.sh;

Ecran complet de Platypus :

Le résultat final est l'application DiaLauncher que vous pouvez télécharger ici .

Cela fonctionne bien sûr pour n'importe quelle application du même genre (avec ou sans X11), comme JMeter  (télécharger le lanceur pour JMeter ). Il est même possible de pousser le vice jusqu'à lancer des applications en X11 forwarding  (si si, j'ai essayé et ça marche parfaitement !).

Vous trouverez sur cette page dédiée une liste de lanceurs  que je vais maintenir, au cas où ;-).


Commentaires

Nice (par expert assistance service)

This is really great work. Thank you for sharing such a good and useful information here in the blog for students.