Script abre dos ventanas de terminal

2

Codifiqué este pequeño AppleScript usando Automator :

tell application "Terminal"
do script "myscript"
end tell

Esto funciona perfectamente pero tiene un efecto secundario: cuando cierro la ventana, siempre hay que cerrar la ventana de la Terminal, por lo que hay dos ventanas, la que ejecuta el script y la Terminal.

¿Hay alguna manera de tener una sola ventana corriendo?

    
pregunta Ian Bell 25.01.2016 - 20:13

2 respuestas

3

Prueba:

tell application "Terminal"
    if not (exists window 1) then reopen
    activate
    do script "echo hi" in window 1
end tell
    
respondido por el adayzdone 25.01.2016 - 21:36
1

Parece que cuando el Terminal no está abierto, tell application Terminal abre el Terminal con la primera ventana y do script abre otra ventana (porque se supone que do script abre una nueva ventana).

La solución parcial es do script ... in window 1 , que obliga a ejecutar el script en una ventana recientemente abierta, pero cuando Terminal estaba en uso antes, esto secuestraría una ventana existente (y posiblemente un contexto inadecuado).

El siguiente script hizo el truco por mí:

if application "Terminal" is running then 
    tell application "Terminal"   
        # do script without "in window" will open a new window        
        do script "echo HELLO"             
        activate                          
    end tell                              
else                                      
    tell application "Terminal"   
        # window 1 is guaranteed to be recently opened window        
        do script "echo HELLO" in window 1 
        activate
    end tell
end if 

(Me inspiré en la propuesta de adayzdone , pero no funcionó para mí (en El Capitán). Parece que después de tell application "Terminal" la condición not (exists window 1) nunca se cumple.)

    
respondido por el Aivar 23.02.2017 - 17:28

Lea otras preguntas en las etiquetas