2016-04-11T21:08:29+09:00

Open in Terminal 2.0 : 最前面のコンテキストに対応した working directory のターミナルを開きます

最前面のコンテキストに対応した working directory のターミナルを開きます。

同種のソフトはいくつかありますが、普通は Finder で選択されている場所に cd したターミナルを開くだけです。Finder ではなく、前面のアプリケーションの状態にあった場所に cd したターミナルを開きます。

同じ場所を開いているターミナルをが存在すれば、新しいターミナルを開くことなく、そのターミナルを前面に持ってきます。

最大の変更点は、OS X 10.11 で動作するようにしたこと。これまで、ターミナルのワーキングディレクトリを調べるために、TerminalControl.osax でターミナルウインドウのプロキシーアイコンの場所を取得していました。OS X 10.11 では、Rootless の影響で他のプロセスにスクリプティング機能追加をロードできなくなってしまいました。そこで、ターミナルのワーキングディレクトリを調べる、別の仕組みを開発しました。

~/.bash_profile に次の一文を追加してください。

source '/Applications/Open in Terminal.app/Contents/Resources/cwd-tty.sh'

これは、ターミナルが Apple のものであるとき、プロンプトが更新されるたびに $PWD とtty のデバイス名のペアを ~/.cwd-tty という隠しファイルに書き込みます。Open in Terminal は ~/.cwd-tty を読み取って、目的のディレクトリと同じ tty デバイスのターミナルウインドウを探します。なかったら新しいターミナルウインドウを開きます。

これまで、ターミナルのワーキングディレクトリを取得するためにターミナルウインドウのタイトルにパスを設定したり、スクリプティング機能追加をロードしたり、四苦八苦していたけど、それらよりずっと行儀の良い方法だと思います。はじめっから、こうすればよかったんだ。