2 votos

Alfred Terminal / Shell Command no funciona

En Alfred, si escribo > ls debe abrir iTerm2 con ese comando. Bueno, a mí no me funciona.

En la aplicación si selecciono Terminal en lugar de iTerm2, funciona.

enter image description here

Si selecciono Application Custom, me muestra el código applescript que puedes ver a continuación y funciona.

enter image description here

Si selecciono la aplicación personalizada y modifico el tell application línea sustituyendo Terminal por iTerm, no funciona.

enter image description here

Si abro script Editor y escribo el siguiente código applescript, no funciona:

tell application "iTerm"
    activate
    do script "ls"
end tell

Si quito do script línea abierta iTerm.

Alguna idea de por qué do script ¿la línea no funciona con iTerm?

1voto

f01 Puntos 408

Este es un ejemplo de trabajo que derivé del ejemplo en https://code.google.com/p/iterm2/wiki/AppleScript

Mira el comentario de stefan.v...@gmail.com

tell application "iTerm"
    activate

    try
        set _session to current session of current terminal
    on error
        set _term to (make new terminal)
        tell _term
            launch session "Default"
            set _session to current session
        end tell
    end try

    tell _session
        write text "ls"
    end tell
end tell

0 votos

Con exec command q Obtengo un error de sintaxis: Se esperaba el final de la línea, etc. pero se encontró el identificador.

0 votos

Por favor, pega todo el script por favor.

0 votos

Sustituir do script en línea con exec command "ls" de mi pregunta.

1voto

Desde el Entrada del blog de Alfred : "Puedes encontrar algunos excelentes AppleScripts de integración de iTerm para las versiones más antiguas y más nuevas de iTerm en la página de Github del usuario de Alfred Stuart C Ryan, Custom iTerm Applescripts for Alfred".

script para iTerm 2.1.1:

-- This is v0.3 of the custom script for AlfredApp for iTerm 2.1.1
-- Please see https://github.com/stuartcryan/custom-iterm-applescripts-for-alfred/
-- for the latest changes.

on is_running(app_name)
    tell application "System Events" to (name of processes) contains app_name
end is_running

-- Please note, if you store the iTerm binary in any other location than the Applications Folder
-- please ensure you update the two locations below (in the format of : rather than / for folder dividers)
-- this gets around issues with AppleScript not handling things well if you have two iTerm binaries on your system... which can happen :D

on alfred_script(q)
    if is_running("iTerm") then
        run script "
            on run {q}
                tell application \":Applications:iTerm.app\"
                    activate
                    try
                        set myterm to the first terminal
                    on error
                        set myterm to (make new terminal)
                    end try
                    tell myterm
                        set mysession to (launch session \"Default Session\")
                        tell mysession to write text q
                    end tell
                end tell
            end run
        " with parameters {q}
    else
        run script "
            on run {q}
                tell application \":Applications:iTerm.app\"
                    activate
                    tell the first terminal
                        tell the last session to write text q
                    end tell
                end tell
            end run
        " with parameters {q}
    end if
end alfred_script

0voto

jherran Puntos 6511

Estoy seguro de que hay una forma mejor, pero, a partir de ahora, esta es la única forma que me funciona:

tell application "iTerm"
    activate
    set the clipboard to q
    delay 0.5
    tell application "System Events" to tell (name of application processes whose frontmost is true) to keystroke "v" using command down
    tell application "System Events" to tell (name of application processes whose frontmost is true) to keystroke return
end tell

0voto

OJW Puntos 111

A partir de Alfred v3.7 e iTerm2 v3.2.0 y MacOS v10.13.6, esta solución funciona:

on alfred_script(q)

    tell application "iTerm"
        activate

        set _profile to "Default"

        -- if there are no terminal windows...
        if (current window is missing value) then
            set _window to (create window with profile _profile)

        -- otherwise get the current window and open a new tab
        else
            set _window to current window
            tell _window
                create tab with profile _profile
            end tell
        end if

        -- execute the command
        tell current session of _window
            write text q
        end tell

    end tell

end alfred_script

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