0 votos

Cómo ejecutar una aplicación de automator que lanza una aplicación X11 vía shell script varias veces

Así que tengo un Applescript para lanzar xemacs, pero pensé que estaría bien tener algo en lo que pudiera soltar archivos (y tener una aplicación para elegir de los menús contextuales en el submenú "abrir con"), así que intenté hacer una aplicación de Automator.

He llamado a la aplicación "XEmacs Opener.app" y funciona... una vez. Pero no lanzará nuevas ventanas de XEmacs (a menos que haga clic en el botón de ejecución desde el propio automator) hasta que se cierre la primera.

He probado a ejecutar el shell script con nohup, he usado el '&' para ponerlo en segundo plano, y he llamado a exit después, pero esto no soluciona el problema:

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

Aquí tienes una captura de pantalla por si no te he explicado bien cómo se configura:

enter image description here

También he probado a llamar a xemacs sin argumentos. Entonces, ¿cómo puedo conseguir que esto abra múltiples instancias de xemacs - o no es posible?

3voto

hepcat72 Puntos 103

Lo he resuelto. Sólo necesito dirigir la salida a /dev/null:

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

Muy fácil. La salida estaba siendo agarrada por el shell script. Tan pronto como redirige tanto la salida estándar como el error estándar a /dev/null (es decir, al olvido), el resto del flujo de trabajo deja de esperar y termina.

1voto

user1155120 Puntos 330

Me he inspirado en tu pregunta para trastear un poco. No tengo xemacs ni uso emacs, así que probé un editor de texto en la terminal de Windows usando iterm.

También puede utilizar un segundo nivel de indirección en Automator lo hice para joe (Joe's Own Editor).

top level Automator app

Esto llama a una segunda aplicación (Untitled.app) que abre un archivo a la vez permitiendo comillas simples alrededor del argumento a joe, permitiendo espacios en los nombres de ruta para los archivos (abiertos uno a la vez debido a la primera aplicación):

subsidiary Untitled.app, passes spaces in path to single file

Al soltar varios archivos en la aplicación al mismo tiempo se obtiene:

three sessions open, one has spaces in path

La idea podría usarse con el emacs de OS X para aquellos acostumbrados a las sesiones tty, teniendo en cuenta que este script no se ocupa de los espacios en blanco en los nombres de las rutas tal cual.

También puedes cambiar el argumento del editor en Untitled.app, y soltar los archivos en Untitled.app directamente:

COMMAND="cd '$PWD'; joe -mouse -wordwrap $1 $2 $3 $4 $5; exit"

Y cualquier argumento nulo no se abrirá. Cualquier archivo sobrante caerá en el suelo según el orden del buscador. Se abrirán todos los archivos para los que haya argumentos en la misma sesión de terminal:

opening multiple sessions in the same terminal window

Y, por supuesto, hay un par de aplicaciones de emacs basadas en Cocoa, como Emacs para Mac OS X que por la fecha parece ser compatible con Yosemite.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X