The Old Blog Archive (Traditional Chinese), 2004-2009

使用WebKit製作OV選字窗的實驗

晚上利用時間重新啟動了一個去年就進行過的實驗:使用WebKit來製作OpenVanilla的選字窗。翻譯成白話就是:「用web browser來做為輸入法的選字界面」。

由於OpenVanilla從0.7.0開始,選字窗的顯示是由另外一個process負責,也就是所謂的OVDisplayServer。Display server是透過Objective-C RPC來聯繫,因此我們只要kill掉display server的process,換上有相同RPC註冊名的process,就可以達到替換UI的功能。

目前這個實驗真的還在無比alpha的階段,以下步驟僅供the truly adventurous使用:

  1. 從svn取得OV最新原始碼
  2. 使用Xcode編製在trunk/Experiment/WebKitServer的project file (WebKitServer.xcodeproj)
  3. 在shell底下執行 “killall OVDisplayServer”,把原先的 OVDisplayServer process 殺掉
  4. 執行編好的WebKitServer.app
  5. 開啟新的應用程式(此時最好關閉舊的應用程式,不然切至OV時會發生問題)
  6. 切至OV,就會看到使用WebKit的選字窗
  7. 如果不喜歡default style,可以到 ~/Sites/ 建立一個名叫 WebKitServer 的目錄,然後在裡面建立一個 style.css
  8. 換上自己喜歡的body style

注意事項及現有問題:

  • style.css更新後,WebKitServer 不會即刻更新,得重新啟動(如何refresh WebKit中的stylesheet,得要研究一下)
  • 重新啟動 WebKitServer 代表先前啟動的應用程式也得關掉重新啟動,不然會當掉
  • 不能調整選字窗的大小和位置,不然OV會在選字窗內啟動,然後就陷入永劫回歸,orz
  • 選字窗目前是用default window style,這個得調
  • 選字窗內文目前是用重新載入HTML page source的方式做的,這個將來應該要改成用JavaScript來做:反正WebKit很邪惡嘛……

不能免俗,有圖有真相:

OpenVanilla DisplayServer on WebKit

2 Responses to “使用WebKit製作OV選字窗的實驗”

  1. [...] http://lukhnos.org/blog/zh/archives/349 [...]

  2. [...] 基本原理是:將輸入法輸出的各種訊息,透過 JavaScript 送到一個瀏覽器視窗(WebKit)裡頭,呈現候選字列表、警告訊息等(請山參見〈使用WebKit製作OV選字窗的實驗〉)。換言之,就是可以將各種網頁設計的技術,用來設計輸入法使用介面,甚至可以把所有 Dashboard Widget 擁有的功能都塞進選字視窗裡頭—可以放個 RSS Reader、天氣預報、電池用量、iTunes正在放什麼歌,或是連接線上字典。 [...]