Launch an application from a browser
當然不是真的由瀏灠器直接去執行某個應用程式,而是透過 protocol 來進行,例如 mailto 會開啟本機端註策到這個協定的應用程式。
我想在 git commits 資訊頁面,直接以 Textmate (或其他應用程式) 來開啟指定的檔案。這個的目的比較單純也僅使用於本機,所以乎略自訂協定或安全性的問題。
目前通用的協定有很多其實不常用到,所以挑選一個不常使用的協定來使用,例如 gopher,則要使用的連結為 gopher:///path/filename.ext
。然後使用 Apple Script 來處理這個協定,簡單的將傳進來的網址字串,把 gopher://
刪除便是檔案的位置 /path/filename.ext
,然後交由 Textmate 來開啟。
-- https://github.com/abbeycode/AppleScripts/blob/master/Scripts/Libraries/Strings.applescript
on replace_text(this_text, search_string, replacement_string)
set prevTIDs to AppleScript's text item delimiters
set AppleScript's text item delimiters to the search_string
set the item_list to every text item of this_text
set AppleScript's text item delimiters to the replacement_string
set this_text to the item_list as string
set AppleScript's text item delimiters to prevTIDs
return this_text
end replace_text
on open location _URL
set _path to replace_text(_URL, "gopher://", "")
tell application "TextMate"
open _path
end tell
end open location
瀏灠器只能將協定使用指定應用程式開啟,不能直接執行 script,所以還需要將 .scpt 檔轉為一般的應用程式。例如上述檔案 Open.scpt 轉成 Open.app
$ osacompile -o Open.app Open.scpt
瀏灠器點了 gopher 協定的連結後,選擇指定 Open.app 來開啟即可。