2012-03-12T23:10:55+09:00

Open in Terminal の Mac OS X 10.7 Lion の対応/開発状況

Open in Terminal, SmatTitle, TerminalCommander, TeminalControl.osax の Mac OS X 10.7 での動作についてですが、TerminalControl.osax をユーザードメインではなく、ローカルドメインにインストールする必要があります。

つまり、~/Library/ScriptingAddiotions ではなく、/Library/ScriptingAdditions にインストールする必要がある。

そうすれば、全部ちゃんと動く。

TerminalControl.osax は、ターミナル.app にロードされなきゃいけないのだけど、そういうことするスクリプティング機能追加は、インストールの際にパスワードの入力が必要な領域にインストールされなければいけませんよ、という制限だと思う。ごもっともだと思うけど、最初、分からなくてかなり困惑した。

TerminalControl.osax のインストーラでは、ユーザードメインにインストールするオプションは削除しよう。

ところで、Mac OS X 10.7 Lion のターミナルは、タイトルに関してかなりバグフィックスされているぜ。次の、長年悩まされていたバグが解消されている。

これらのバグを回避する為にどれだけ苦労した事か。7つものバージョンを繰り返して、やっとバグフィックス完了かい!。

愚痴はさておき、Mac OS X 10.7 のターミナルを初めて起動した時、working directory がプロキシーアイコンで表示されるのにはびっくりした。cd すると、ちゃんと working directory に追随するよ。すてきだ。これまで、タイトルにパス文字列を表示してきたのに比べればかなりスマートだ。SmartTitle がいらないかもしれない。

一体どうやっているんだろうと、仕組みを調べてみました。ターミナルが、シェルの環境変数を調べるとかしているのかしら?と思ったけど、そんなことはしていない。Open in Terminal の開発時に、そういうことをできない物かと、一生懸命調べたけど、すくなくとも Mac OS X 10.6 まではできない。Mac OS X 10.7 でプロセスの情報を外部から調べられるようになったのか?と思ったけど、そうであらず。PROMPT_COMMAND に update_terminal_cwd というコマンドが設定されていて、そこからエスケープシーケンスを出力していました。

だから、PROMPT_COMMAND を下手にいじると、プロキシーアイコンが消えちゃうんだぜ。update_terminal_cwdが設定されているには、bash だけで、他のシェルには設定されていないんだぜ。なんか間抜けな仕組みだぜ。

でも、前向きにとらえよう。プロキシーアイコンとして設定されている directory が分かれば、そのシェルの working directory が分かっちゃうというわけだ。Open in Terminal では、すでに開いているターミナルの中に、同じ working directory のターミナルがあれば、新しいターミナルを開かずに、そのターミナルを前面に持ってくる。でも、シェルの working directory を取得する手段がないから、タイトルに設定された3階層分のパスを当てにしていた。そして、タイトルに表示するパスを working directory に追随させる為に SmartTitle を提供しきました。正直、こんな仕組みでもかなりうまく動いていた。

でも、Mac OS X 10.7 Lion では、もう少しましな仕組みにできそうだ。プロキシーアイコンから完全な working directory の参照を取得する機能を TerminalControl.osax に実装しました。次の Open in Terminal では、SmartTitle を使わずとも、おなじ working directory のターミナルを重複して開くことはなくなる。今まで通り、類似のユーティリティーの中では、一番気が利いていると思うぜ。

TerminalControl.osax も Open in Terminal の開発は終了している。あとはマニュアルをアップデートしたらリリースできる。

もし早く欲しい人がいたら、励ましてください。