1 votes

Comment exécuter une application Automator qui lance une application X11 via un script shell plusieurs fois

Alors j'ai un script Applescript pour lancer xemacs, mais j'ai pensé que ce serait bien d'avoir quelque chose sur lequel je pourrais glisser des fichiers (et avoir une application à choisir dans les menus contextuels du sous-menu "ouvrir avec"), donc j'ai essayé de faire une application Automator.

J'ai appelé l'application "XEmacs Opener.app" et ça fonctionne... une fois. Mais cela ne lancera pas de nouvelles fenêtres XEmacs (à moins que je ne clique simplement sur le bouton exécuter depuis Automator lui-même) jusqu'à ce que la première soit fermée.

J'ai essayé d'exécuter le script shell avec nohup, utilisé '&' pour le mettre en arrière-plan, et appelé exit ensuite, mais cela ne résout pas le problème:

nohup /sw/bin/xemacs "$@" &
exit

Voici une capture d'écran au cas où je n'aurais pas expliqué complètement comment c'est configuré:

entrer la description de l'image ici

J'ai aussi essayé d'appeler xemacs sans aucun argument. Comment puis-je donc ouvrir plusieurs instances de xemacs - ou est-ce impossible?

4voto

hepcat72 Points 1077

J'ai trouvé la solution. Il me suffit simplement de rediriger la sortie vers /dev/null :

/sw/bin/xemacs "$@" &> /dev/null &

Facile comme tout. La sortie était capturée par le script shell. Dès que vous redirigez à la fois la sortie standard et l'erreur standard vers /dev/null (c'est-à-dire l'oblivion), le reste du flux de travail cesse d'attendre et se termine.

1voto

J'ai été inspiré par ta question pour bricoler un peu. Je n'ai pas xemacs et n'utilise pas emacs, donc j'ai essayé un éditeur de texte dans des fenêtres de terminal en utilisant iterm.

Vous pouvez également utiliser un deuxième niveau d'indirection dans Automator. J'ai fait cela pour joe (l'éditeur de Joe).

application Automator de premier niveau

Cela appelle une deuxième application (Untitled.app) ouvrant un fichier à la fois, permettant les guillemets simples autour de l'argument de joe, autorisant des espaces dans les noms de chemin des fichiers (ouverts un par un en raison de la première application):

application Untitled.app subsidiaire, passe les espaces dans le chemin d'un fichier

Déposer plusieurs fichiers sur l'application en même temps donne:

trois sessions ouvertes, l'une a des espaces dans le chemin

L'idée pourrait être utilisée avec emacs d'OS X pour ceux habitués aux sessions tty, notant que ce script ne gère pas les espaces blancs dans les noms de chemin tels quels.

Vous pourriez également modifier l'argument de l'éditeur dans Untitled.app, et déposer des fichiers directement sur Untitled.app:

COMMANDE="cd '$PWD'; joe -souris -retraitmot $1 $2 $3 $4 $5; exit"

Et tout argument nul ne s'ouvrira pas. Tout excès de fichiers tombera par terre en fonction de l'ordre du finder. Vous obtiendrez tous les fichiers pour lesquels il y a des arguments ouverts dans la même session de terminal:

ouverture de plusieurs sessions dans la même fenêtre de terminal

Et bien sûr, il y a quelques applications emacs basées sur Cocoa comme Emacs Pour Mac OS X, qui à partir de la date semble être probablement compatible avec Yosemite.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X