Alfred Terminal / Shell Command tidak berfungsi

2

Di Alfred, jika saya mengetik > ls harus membuka iTerm2 dengan perintah itu. Ya, tidak bekerja untuk saya.

Dalam Aplikasi jika saya memilih Terminal dan bukan iTerm2, berfungsi.

enter image description here

Jika saya memilih Aplikasi → Kustom, ini menunjukkan kode applescript yang dapat Anda lihat di bawah dan berfungsi.

enter image description here

Jika saya memilih Aplikasi → Kustom dan memodifikasi tell application line menggantikan Terminal dengan iTerm, tidak berfungsi.

enter image description here

Jika saya membuka Script Editor dan mengetik kode applescript berikut, tidak berfungsi:

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

Jika saya hapus do script saluran terbuka iterm.

Ada ide mengapa do script line tidak bekerja dengan ITerm?

jherran
sumber

Jawaban:

1

Ini adalah contoh kerja yang saya peroleh dari contoh di https://code.google.com/p/iterm2/wiki/AppleScript

Lihat komentar dari 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
f01
sumber
Dengan exec command q Saya mendapatkan Kesalahan Sintaks: Diharapkan akhir baris, dll. Tetapi menemukan pengidentifikasi.
jherran
Tolong tempelkan seluruh skrip.
f01
Menggantikan do script sejalan dengan exec command "ls" dari pertanyaan saya.
jherran
Kesalahan Sintaks: Diharapkan akhir baris tetapi ditemukan pengidentifikasi. on line set _session to current session of current terminal, kesalahan muncul pada kata terminal.
jherran
1

Dari Posting blog Alfred : "Anda dapat menemukan beberapa integrasi iTerm AppleScripts yang sangat baik untuk versi iTerm yang lebih lama dan lebih baru pada pengguna Alfred Stuart C Ryan Custom iTerm Applescripts untuk halaman Alfred Github."

Script untuk 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
Ben
sumber
0

Saya yakin ada cara yang lebih baik, tetapi, mulai sekarang, ini satu-satunya cara yang bekerja untuk saya:

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
jherran
sumber
0

Pada Alfred v3.7 dan iTerm2 v3.2.0 dan MacOS v10.13.6, solusi ini berfungsi:

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
Shelton
sumber