Comment créer des services Mac OS X avec Automator et shell ...

commentaires des lecteurs

52

avec 37 affiches participantes

Partagez cette histoire

Partager sur Facebook

Partager sur Twitter

Partager sur Reddit

Je suis récemment passé à Mac OS X comme système d'exploitation de bureau principal après avoir passé plus d'une décennie sur Linux. Bien que le système d'exploitation d'Apple fournisse pratiquement tous les outils de ligne de commande que je connais et que j'aime, je souhaite passer moins de temps dans une fenêtre de terminal et commencer à cultiver des flux de travail qui s'intègrent mieux à l'expérience utilisateur Mac.

Dans ma quête pour arracher la puissance de la ligne de commande du terminal, j'ai découvert que l'outil Automator d'Apple est un puissant allié. Bien qu'elle ne soit pas aussi puissante que la ligne de commande pour l'automatisation de l'improvisation, elle est utile pour définir des opérations autonomes que vous souhaitez pouvoir répéter. J'ai utilisé Automator au cours de la semaine dernière pour créer des applications simples qui remplacent certains de mes scripts shell personnels.

L'une des fonctionnalités les plus intéressantes d'Automator est la prise en charge de la création de services, c'est-à-dire des applications sans tête qui sont accessibles de manière omniprésente dans tout le système d'exploitation. De nombreux services sont contextuels et conçus pour traiter ou fonctionner sur la base des entrées de l'utilisateur. Un sondage bref et non scientifique d'amateurs de Mac a révélé que peu d'entre eux utilisent réellement le menu Services. Malgré sa relative obscurité parmi les utilisateurs, j'ai appris à apprécier sa valeur.

Apple propose un certain nombre de ses propres services, comme celui qui prend en charge la recherche dans le dictionnaire d'un mot sélectionné, qui fonctionnent avec les applications standard de la plate-forme. Les développeurs tiers peuvent également créer des services à déployer avec leurs applications. Automator permet aux utilisateurs finaux réguliers de créer très facilement leurs propres services avec des comportements spécialisés.

En tant que réfugié Linux, l'une des fonctionnalités qui rend Automator particulièrement convaincant est qu'il me permet d'intégrer des opérations de ligne de commande, des commandes et des pipelines dans mes flux de travail Automator. Dans ce didacticiel, je vais vous montrer deux des manières dont j'utilise les scripts shell dans les services Automator afin de simplifier mon travail.

Publicité

Un exemple trivial

J'écris pratiquement tous mes articles dans l'éditeur de texte Vim et j'utilise la syntaxe Markdown pour le formatage. Sous Linux, j'ai utilisé un outil de traitement Markdown à partir de la ligne de commande pour convertir mes articles en HTML, puis j'ai redirigé la sortie vers la commande xclip afin que je puisse simplement coller l'article fini directement dans le système de gestion de contenu d'Ars Technica. J'avais un script shell simple que je pouvais appeler directement depuis Vim lui-même pour effectuer ces étapes.

Cette même approche est toujours viable sur Mac OS X, mais je voulais explorer une solution plus native pour Mac au même problème. Plus important encore, je voulais une solution qui ne soit pas uniquement liée à Vim. C'est là qu'Automator entre en jeu. J'ai construit un service trivial qui enveloppe un processeur Markdown en ligne de commande. Je peux sélectionner un bloc de texte modifiable avec le formatage Markdown dans n'importe quelle application Mac et utiliser le service Markdown pour le convertir en HTML sur place.

Pour créer un service, vous commencez par sélectionner Nouveau dans le menu Fichier d'Automator. Automator vous montrera une liste des modèles disponibles et vous invitera à en choisir un pour votre nouveau projet. Vous devez sélectionner l'option Service, qui est accompagnée d'une icône d'engrenage. Dans votre nouveau service, vous verrez une barre en haut du volet de flux Automator. Il possède des combos qui vous permettent de définir des filtres qui établissent les conditions dans lesquelles votre service doit être rendu accessible. Vous souhaitez créer un service qui reçoit le texte sélectionné et qui fonctionnera dans n'importe quelle application.

Sous ces zones de liste déroulante se trouve une case à cocher que vous pouvez activer pour spécifier si vous souhaitez que la sortie de votre service remplace le bloc de texte sélectionné. Nous voulons absolument que cela soit vérifié pour notre service Markdown, car nous remplaçons le texte d'entrée au format Markdown par la sortie HTML fournie par le moteur de traitement Markdown.

Publicité

Le comportement de notre workflow Markdown est vraiment simple, il ne nécessitera donc qu'une seule action. Depuis le volet de bibliothèque d'actions de gauche, faites glisser l'action Exécuter le script shell vers le volet de flux de travail. Il créera automatiquement une connexion avec la barre supérieure, indiquant qu'il utilisera le texte sélectionné par l'utilisateur comme entrée initiale.

L'action de script shell a quelques options simples. Vous pouvez choisir l'environnement shell que vous souhaitez utiliser pour l'opération et vous pouvez choisir comment vous voulez qu'il gère l'entrée. Pour les besoins de cet exemple, nous souhaitons utiliser le shell Bash standard. Nous souhaitons également configurer l'action pour transmettre l'entrée à stdin, le flux d'entrée standard UNIX. Il s'agit d'une fonctionnalité très utile dans Automator, car elle permet de mélanger de manière transparente les flux de travail Automator avec les pipelines shell.

Dans la zone de texte principale de l'action du shell, nous devons spécifier quelle expression de ligne de commande nous voulons que Bash exécute. Dans ce cas, tout ce que nous voulons qu'il fasse est d'exécuter le

réduction

commander. J'ai déjà installé la commande markdown en utilisant le

Homebrew

package, mais le shell Bash d'Automator ne semble pas le trouver dans mon chemin de commande. Pour contourner la difficulté d'Automator à trouver la commande, j'ai simplement mis le chemin complet dans la zone de texte, comme vous pouvez le voir ci-dessous.

Maintenant que le workflow est terminé, il ne vous reste plus qu'à l'enregistrer sous le nom Markdown. Par défaut, Automator stockera vos services personnalisés dans le répertoire ~/Library/services. Tout service Automator copié dans ce chemin sera disponible via le menu des services dans les conditions applicables. Pour exécuter le nouveau service, il vous suffit de sélectionner du texte, puis de cliquer sur l'élément Markdown dans le menu des services.

Il existe plusieurs façons de personnaliser ce service pour obtenir des comportements alternatifs. Par exemple, vous pouvez utiliser l'action Copier dans le presse-papiers à la fin du flux de travail pour que la sortie aille dans le presse-papiers de l'utilisateur plutôt que de remplacer le texte sélectionné.

Articles populaires