Alfred Terminal / Shell El comando no funciona

2

En Alfred, si escribo > ls debo abrir iTerm2 con ese comando. Bueno, no funciona para mí.

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

SiseleccionoAplicación→Personalizado,muestraelcódigodeApplecriptquepuedeveracontinuaciónyfunciona.

Si selecciono Aplicación → Personalizar y modifico la línea tell application que reemplaza la Terminal con iTerm, no funciona.

SiabroelEditordesecuenciasdecomandosyescriboelsiguientecódigodeApplecript,nofunciona:

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

Si elimino la línea do script abierta iTerm.

¿Alguna idea de por qué do script line no funciona con iTerm?

    
pregunta jherran 28.11.2014 - 12:18

4 respuestas

0

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

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
    
respondido por el jherran 30.11.2014 - 15:52
1

Este es un ejemplo práctico que derivé del ejemplo en enlace

Revisa 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
    
respondido por el f01 28.11.2014 - 12:25
1

De la publicación del blog de Alfred : "Usted puede encontrar algunos AppleScripts de integración de iTerm excelentes para las versiones más antiguas y más nuevas de iTerm en la página de Github de Alfred Github para el usuario de Alfred Stuart C Ryan's Custom iTerm. "

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
    
respondido por el Ben 16.09.2015 - 19:48
0

A partir de Alfred v3.7 y 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
    
respondido por el Shelton 21.09.2018 - 20:16

Lea otras preguntas en las etiquetas