プログラム / 2008/05/14 (Wed) / 編集 |
右クリックメニューからフォルダをTerminalで開けるプラグインを作ってみた。
これを「ファイル」->「プラグインとして保存」->「Finder」とするとworkflowが「/Users/ユーザ名/Library/Workflows/Applications/Finder」に保存されて右クリックメニューから呼び出せるようになるっぽい。
でもってフォルダを選択したあと「右クリック」->「Automator」->「保存したときのファイル名」で実行するとTearminalが起動(すでに起動してる場合は新規Window)して選択していたフォルダまで勝手にcdしてくれる。
これを「ファイル」->「プラグインとして保存」->「Finder」とするとworkflowが「/Users/ユーザ名/Library/Workflows/Applications/Finder」に保存されて右クリックメニューから呼び出せるようになるっぽい。
でもってフォルダを選択したあと「右クリック」->「Automator」->「保存したときのファイル名」で実行するとTearminalが起動(すでに起動してる場合は新規Window)して選択していたフォルダまで勝手にcdしてくれる。
画像じゃわからないAppleScriptのソースコードはこれ
on run argv
--「:」を「/」に置換
set dirpath to my replaceTxt(item 1 of argv as string, ":", "/")
--display dialog dirpath as Unicode text
--Terminal.app
tell application "Terminal"
--ディレクトリを移動
do script "cd \"/Volumes/" & dirpath & "\" "
--前面に表示
activate
end tell
end run
--文字列置換専用関数
--[Apple Scriptの覚え書き]
--http://www.kiwi-us.com/~mizusawa/penguin/html_hint/applescript/script_memo.html#Delimit
on replaceTxt(myText, searchTxt, replaceTxt)
--デリミタを保存しておく
set oldDel to AppleScript's text item delimiters
--渡されたサーチワードをデリミタにする
set AppleScript's text item delimiters to searchTxt
--分解して
set myText to every text item of myText
--渡された置換ワードをデリミタにする
set AppleScript's text item delimiters to replaceTxt
--つなぐ
set myText to myText as string
--デリミタを元に戻す
set AppleScript's text item delimiters to oldDel
return myText
end replaceTxt
文字列置換の関数(replaceTxt)は[Apple Scriptの覚え書き]を参考にさせてもらいました。
ただこれ、みてのとおり例外処理をしてないのでファイルを選択していてもcdしようとします、かなしいですね、、、
でも実はアプリケーションは問題なくcdできたりw
補足として、Finderのpluginとしてではなくワークフローとして単体で動かしたい時は「選択されたFinder項目を取得」くらいを上につけるといいみたい。
ちなみに「選択されたFinder項目を取得」をつけたままプラグイン化すると「cd ~/」をやりたいのに「cd ~/~/」になってしまう、なぜだ?
on run argv
--「:」を「/」に置換
set dirpath to my replaceTxt(item 1 of argv as string, ":", "/")
--display dialog dirpath as Unicode text
--Terminal.app
tell application "Terminal"
--ディレクトリを移動
do script "cd \"/Volumes/" & dirpath & "\" "
--前面に表示
activate
end tell
end run
--文字列置換専用関数
--[Apple Scriptの覚え書き]
--http://www.kiwi-us.com/~mizusawa/penguin/html_hint/applescript/script_memo.html#Delimit
on replaceTxt(myText, searchTxt, replaceTxt)
--デリミタを保存しておく
set oldDel to AppleScript's text item delimiters
--渡されたサーチワードをデリミタにする
set AppleScript's text item delimiters to searchTxt
--分解して
set myText to every text item of myText
--渡された置換ワードをデリミタにする
set AppleScript's text item delimiters to replaceTxt
--つなぐ
set myText to myText as string
--デリミタを元に戻す
set AppleScript's text item delimiters to oldDel
return myText
end replaceTxt
文字列置換の関数(replaceTxt)は[Apple Scriptの覚え書き]を参考にさせてもらいました。
ただこれ、みてのとおり例外処理をしてないのでファイルを選択していてもcdしようとします、かなしいですね、、、
でも実はアプリケーションは問題なくcdできたりw
補足として、Finderのpluginとしてではなくワークフローとして単体で動かしたい時は「選択されたFinder項目を取得」くらいを上につけるといいみたい。
ちなみに「選択されたFinder項目を取得」をつけたままプラグイン化すると「cd ~/」をやりたいのに「cd ~/~/」になってしまう、なぜだ?
PR
トラックバック
URL :
コメント