web-dev-qa-db-ja.com

Mac OS:AutomatorまたはAppleScriptから特定のプロファイルでiTermターミナルを起動するにはどうすればよいですか?

特定のプロファイルでiTermの新しいウィンドウを起動するグローバルキーボードショートカットを割り当てようとしています。 (私はこれを実行して、AutomatorとAppleScriptで新しいChromeウィンドウを起動しましたが、これはより困難であることが証明されています)

これはiTermをアクティブにするのと同じで、トップメニューで[プロファイル]-> [マイプロファイル]を選択し、[alt]または[オプション]を押して、現在のウィンドウの新しいタブではなく、新しいウィンドウで開きます。 。

AutomatorまたはAppleScriptのいずれかでこれを行う方法について何かアイデアはありますか?

関連する場合は、Mac OS MountainLionを使用しています

(これが絶対的な初心者の質問である場合は申し訳ありませんが、私はWindowsからMacに移行したばかりで、常に行うことを最適化しようとしています)

ありがとうございました!

4
Daniel Magliola

terminalが廃止されたため、以前の回答はiTerm2(3)の最新バージョンでは機能しなくなりました。新しいアプローチは、create window with profileを使用することです。

ただし、これは期待どおりに機能しません。iTermが実行されている場合、適切なプロファイルを使用して新しいウィンドウが開きます。ただし、iTermが実行されていない場合は、デフォルトのプロファイルを使用してウィンドウが開き、次に、指定された他のプロファイルを使用して2番目のウィンドウが開きます。これに対処するために、次のスクリプトを思いつきました。

-- this script will start/activate iTerm (close the default window if the app had been newly started), then open a new session with a desired profile

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

set iTermRunning to is_running("iTerm2")

tell application "iTerm"
    activate
    if not (iTermRunning) then
        delay 0.5
        close the current window
    end if
    create window with profile "xxxxxx"
end tell

もちろん、iTermがコマンドラインパラメータをサポートしていれば、それは本当に簡単だったでしょう。うまくいけば ある時点で

2
lucianf

ITerm Webサイトの AppleScriptサンプルコードの11行目と58行目を組み合わせる...

tell application "iTerm"
activate
tell (make new terminal)
    launch session "Your Profile Name"
end tell
end tell
4
Daniel Beck

osascriptコマンドに関する上記の回答およびその他の回答に基づく:

AppleScriptをosascriptでラップしてBASHコマンドラインから

osascript -e "tell application \"iTerm\"
    create window with profile \"my-cool-profile\"
end tell"

または、プロファイル名を引数として取るBASH関数:

open-with () {
  osascript -e "tell application \"iTerm\"
    create window with profile \"$1\"
  end tell"
}

open-withのようなopen-with my-cool-profileBASHスクリプトとして

#! /usr/bin/env bash

PROFILE="${1-Default}"

osascript -e $"tell application \"iTerm\"
  create window with profile \"$PROFILE\"
end tell"

そして、開いたときにプログラム/コマンドを実行できるopen-run BASHスクリプトとして:

#! /usr/bin/env bash

PROFILE="${1-Default}"
CMD="${2-echo "I, \$(whoami), am here at \$PWD"}"

osascript -e "tell application \"iTerm\"
  set newWindow to (create window with profile \"$PROFILE\")
  tell current session of newWindow
    write text \"$CMD\"
  end tell
end tell"

例:特定のプロファイルで開き、sshコマンドを実行します

open-run my-ssh-profile 'ssh [email protected]'

例:独自のウィンドウでhtopを開き、ユーザーがhtopを終了するとウィンドウを自動的に閉じます

open-run my-htop-profile 'htop && exit'

例:ssh経由のリモートサーバーでの上記のように

open-run my-htop-profile 'ssh -t [email protected] bash -c htop && exit'

エスケープと引用はかなりクレイジーになる可能性がありますが、それは私が必要なことをします

0
Mike