前置き
自分はmacOS Mojave
でFinderで現在いるディレクトリをワンクリックでiTerm 2で開けるGo2Shellを愛用しています。
しかしGo2Shell
は32bitアプリケーションかつ最終更新が4年前であるためmacOS Catalina
では使えず、アップデートも期待出来ない状況でした。
そんな時に@ryuta69さんが下記の素晴らしい記事を投稿してくださいました。
AppleScriptで「Finderでボタンポチるだけで、そのディレクトリでターミナル開く」(cloneしてドラッグ&ドロップするだけで利用可能)
この記事ではターミナル.app
を主題に他のアプリケーションでも活用可能なコードを複数掲載しており大変参考になりました。
また、本投稿を行う事についても快諾していただき大変感謝しています。
記事内にiTerm 2を開くコードを発見
記事内にiTerm 2
を開くコードを発見し「お、これは!」となりました。
挙動としては下記のようになっていました。
- 現在のディレクトリパスを取得
- iTerm 2のセッションからウィンドウを取得
- ウィンドウに新規タブを作成
-
cd [現在のディレクトリパス]
を入力
次にGo2Shell
の挙動は下記。
- 現在のディレクトリパスを取得
- 新規ウィンドウを作成
-
cd [現在のディレクトリパス]; clear; pwd
を入力
挙動の差としては下記。
- 前者はアクティブなウィンドウがない場合に実行が失敗してしまう
- 新規ウィンドウか既存ウィンドウへの新規タブか
- 実行されるコマンド
ここで「これは少し調整すればGo2Shell
になれるぞ?」と思いました。
Go2Shellの動作を再現するコード
tell application "Finder"
-- set _dir to POSIX path of ((folder of (front window)) as alias)
if exists Finder window 1 then
set currentDir to target of Finder window 1 as Unicode text
set posixPath to get POSIX path of currentDir
end if
end tell
tell application "iTerm"
activate
create window with default profile
set _current_session to current session of current window
tell current window
tell current session of current tab
write text "cd " & posixPath
write text "clear; pwd"
end tell
end tell
end tell
元コードとの違いとしては以下。
- 新規ウィンドウを作成している
- 新規タブの作成は行わない
-
write text "clear; pwd"
を実行している
作成からFinderに追加するまで
-
Automator.app
を開く 新規書類 > アプリケーション
- 「AppleScriptを実行」を右にドラッグドロップ
- 上記のコードをコピペして任意の名前で保存 (ここでは
OpeniTerm2.app
) -
OpeniTerm2.app
をCommand押しながらFinderのツールバーにドラッグドロップ - セキュリティ警告が出たら
システム環境設定 > セキュリティとプライバシー > 一般 > 下部から許可
詳細な手順は@ryuta69さんが投稿してくださった記事に丁寧にまとまっています。
終わりに
今現在自分はmacOS Catalina
へのアップグレードを行っていません。
しかしこれでアップグレード後の環境への懸念が1つ解消されました。
バグ修正などが更にリリースされ、安定した環境となった頃にアップグレードを試みたいと思います。