Il comando Alfred Terminal / Shell non funziona

2

In Alfred, se digito > ls , devi aprire iTerm2 con quel comando. Beh, non funziona per me.

In Applicazione se seleziono Terminale invece di iTerm2, funziona.

SeselezionoApplicazione→Personalizzata,mostrailcodiceAppleScriptchepuoivederequisottoefunziona.

Se seleziono Applicazione → Personalizzata e modifica la riga tell application che sostituisce Terminal con iTerm, non funziona.

SeaproScriptEditoredigitoilseguentecodiceapplescript,nonfunziona:

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

Se rimuovo do script riga apri iTerm.

Qualche idea sul perché do script line non funziona con iTerm?

    
posta jherran 28.11.2014 - 12:18
fonte

4 risposte

0

Sono sicuro che c'è un modo migliore, ma, da ora, questo è l'unico modo che funziona per me:

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
    
risposta data 30.11.2014 - 15:52
fonte
1

Questo è un esempio funzionante che ho tratto dall'esempio del link

Guarda il commento di 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
    
risposta data 28.11.2014 - 12:25
fonte
1

Da post del blog Alfred : "Tu puoi trovare degli ottimi AppleScripts di iTerm per le versioni precedenti e più recenti di iTerm su Alfred User Stuart C Ryan's Custom iTerm Applescripts per Alfred Github page. "

Script per 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
    
risposta data 16.09.2015 - 19:48
fonte
0

A partire da Alfred v3.7 e iTerm2 v3.2.0 e MacOS v10.13.6, questa soluzione funziona:

 
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
    
risposta data 21.09.2018 - 20:16
fonte

Leggi altre domande sui tag