Follow me
RSS feed
My sources
My Viadeo

Menu contextuel dans MacOSX

Greg | 24 Sep 2009

devJe me suis encore une fois trouvé confronté à une question à laquelle je n'avais jamais réfléchis1 ! La demande concernait la possibilité d'ajouter une entrée dans le menu contextuel de MacOSX. OK, ce n'est peut-être pas très clair. Pour comprendre, ouvrez n'importe quel éditeur de texte et saisissez le texte suivant : Allez voir le site http://algorithmique.net ! Si vous sélectionnez n'importe quel mot de ce texte et que vous faire un clic droit (ou cmd clic), vous verrez apparaitre le menu suivant :

menu001

En l'occurrence, il n'y a rien de particulier dans ce menu. Par contre si vous sélectionnez l'adresse HTTP et que vous redemandez ce menu, vous verrez apparaitre une nouvelle entrée : Open URL

menu002

Et bien c'est cela que l'on souhaite faire. Ajouter une entrée dans ce menu contextuel. Je vous propose deux exemples.

Rechercher dans Wikipedia

Le premier exemple concerne l'ensemble des applications et permet d'ouvrir la page Wikipedia pour un mot sélectionné. Ainsi, si vous sélectionnez le mot algorithmique dans l'exemple précédent, nous voulons voir le menu contextuel suivant :

menu003

Et, en cliquant sur l'entrée Rechercher dans Wikipedia, nous devons nous retrouver sur la page correspondante.

Pour faire cela, nous allons utiliser Automator. Ouvrez ce dernier. Vous constaterez que dans la liste des modèles pour votre processus vous avez une entrée Service. C'est bien de cela dont nous avons besoin. En effet, comme indiqué, les services sont des processus contextuels disponibles dans Mac OS X.

Une fois le modèle Service sélectionné, ajoutez une action Exécuter un shell script. Nous réglons cette action de façon à ce que les données en entrée nous soient passées comme arguments et nous ajoutons le script suivant :

open "http://fr.wikipedia.org/wiki/"$1

Votre flux doit donc ressembler à ceci :

menu004

Il ne reste plus qu'à enregistrer ce service via le menu Fichier > Enregistrer sous.... Nommez le service Rechercher dans Wikipedia et le tour est joué. Vous pouvez tester !

Ouvrir dans TextMate

Dans l'exemple précédent, nous n'avons pas touché aux éléments réceptionnés en conservant texte comme type d'entrée, venant de N'importe quelle application. Dans ce second exemple, je vous propose de rajouter une entrée dans le menu contextuel du Finder (et lui uniquement) afin d'ouvrir les fichiers et/ou dossiers sélectionnés dans (l'excellent) TextMate.

Pour cela nous créons un nouveau service, mais cette fois-ci nous indiquons qu'en entrée nous réceptionnons des fichiers ou dossiers pour le Finder.

Nous ajoutons ensuite une action Exécuter un shell script. Contrairement à ce que nous avons fait précédemment, nous laissons les données en entrée vers stdin et nous ajoutons ceci comme script :

cat | xargs mate

Le flux ressemble à ceci :

menu005

Il ne reste plus qu'à sauvegarder sous le nom Ouvrir dans TextMate et le tour est joué !

menu006

Supprimer ces entrées

Si vous souhaitez enlever ces entrées du menu contextuel, rendez-vous dans ~/Library/Services et mettez à la poubelle les workflow que vous voulez supprimer.

1 j'adore !

Copyright © 2009 - 2011 Grégoire Lejeune.
All documents licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License, except ones with specified licence.
Powered by Jekyll.