Sun, 14 Sep 2008
最全面のウィンドウをカレントディレクトリとしたターミナルを開く
いわゆるひとつの、BeOSにおけるSummon(召喚)のようなコンテキストメニューが欲しいと思ったので作りました。Terminal.app用とiTerm.app用。ありがち。
on run {input, parameters}
tell application "Finder"
try
set aFolder to (the target of the front window) as alias
set aPath to POSIX path of aFolder
end try
end tell
tell application "Terminal"
activate
try
if front window is busy then
display dialog "Terminal is busy. Try later." buttons {"OK"} default button 1
else
do script with command "cd " & quoted form of aPath in window 1
do script with command "clear" in window 1
end if
end try
end tell
return input
end run
on run {input, parameters}
tell application "Finder"
try
set aFolder to (the target of the front window) as alias
set aPath to POSIX path of aFolder
end try
end tell
tell application "iTerm"
activate
try
tell current terminal
launch session "Default Session"
tell the last session
write text "cd " & quoted form of aPath
write text "clear"
end tell
end tell
end try
end tell
return input
end run
Terminal.appでは、最全面のウィンドウがビジーであるかどうかを調べ、もしビジーであるならスクリプトの実行を止めています。System Eventsを使って新たにタブを開くこともできたのですが、何となくイヤだったのでそうしていません。iTerm.appでは逆に、最全面のウィンドウがビジーであるかどうか調べられなかったので、常に新しいタブを開いて、そこでコマンドを実行させています。実行速度に不満があって、実行してからターミナルが開くまでに一呼吸どころか三呼吸ほど待たされますが、それいがいは問題ありません。