0 votos

No cambiar el foco a iterm ejecutando applescript

Estoy intentando abrir varias pestañas iterm y ejecutar comandos en ellas usando applescript. Pero quiero ejecutar el comando y cambiar a otra ventana iterm para hacer otras cosas mientras tanto. Desafortunadamente, el foco sigue volviendo a la ventana que ejecuta el applescript en cada "crear pestaña con perfil por defecto".

Cómo es posible mantener el script en esa ventana ejecutándose en segundo plano sin traer esa ventana al frente?

function iterm_project
osascript \
    -e 'tell application "iTerm"' \
    -e "  tell window id \"$argv[1]\"" \
    -e '    create tab with default profile' \
    -e '    tell current tab' \
    -e '      tell current session' \
    -e "        set name to \"$argv[2]\"" \
    -e "        write text \"cd $argv[3]\"" \
    -e '        split vertically with default profile' \
    -e '      end tell' \
    -e '      tell second session' \
    -e "        set name to \"$argv[2]\"" \
    -e "        write text \"cd $argv[3]\"" \
    -e '        split horizontally with default profile' \
    -e '      end tell' \
    -e '      tell third session' \
    -e "        set name to \"$argv[2]\"" \
    -e "        write text \"cd $argv[3]\"" \
    -e '      end tell' \
    -e '     end tell' \
    -e '  end tell' \
    -e 'end tell'
 end

Estoy usando un fish shell por lo que a iterm_project() se le pasarán tres variables siendo la primera el id de la ventana en la que se ejecutará este script. Esta función será llamada desde otra función que decidirá cuantas pestañas abrir y llamará a iterm_project() continuamente con el mismo id de ventana pero diferente "name" "path to cd in".

0voto

docgyneco69 Puntos 41
  1. Intenta llamar a Eventos del sistema para ejecutar su código applescript en lugar de invocar iTerm directamente. System Events es un proceso en segundo plano de MacOS dedicado a applescript y puede permitir la ejecución de su código al tiempo que evita la activación de iTerms en Windows. Para más información sobre el tema puede empezar aquí .

  2. Como se aconseja en los comentarios, utilizando HereDoc facilitan la ejecución de applescripting en el terminal (ejemplo a continuación).

    yourfunction() { /usr/bin/osascript 2>&- <<-_EOF tell application "System Events" ... ... end tell _EOF }

Con esta sintaxis, todas las líneas entre _EOF se interpretan como un un solo bloque de texto por lo que no es necesario citarlos, todo gracias a redirección .

2>&-

redirección de los mensajes de error de osascript

Puede eliminarse sin problemas, sobre todo con fines de depuración.

<<-

redirección para permitir el uso de pestañas en el código

Más información sobre las opciones de redirección de heredoc aquí .

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