How My Heart Sings

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では逆に、最全面のウィンドウがビジーであるかどうか調べられなかったので、常に新しいタブを開いて、そこでコマンドを実行させています。実行速度に不満があって、実行してからターミナルが開くまでに一呼吸どころか三呼吸ほど待たされますが、それいがいは問題ありません。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Comments

Add Comment...

スパム対策のため、一ヶ月を経過したエントリにはコメントを書き込めないのです…後、http:と書くこともできません。

Name:

Comment:

Le violon intérieur....
Yasuo Yamashita
vaiorinnhiATTOnaDOTrimDOTorjye-pi-
Y.A.S.U.O Ytterbium Artificial Sabotage and Utility Organism Y.A.S.U.O Yelling Abomination from the Sunless Underground Oasis

Pyblosxom and plugins. For detail, see http://viole.sakura.ne.jp/blosxom/blosxom.cgi/plugin_info