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 來開啟即可。

Ethan Liu avatar
Ethan Liu
A web developer, iOS developer, designer and a cat slave.
0 comment, 0 pingback