傳統上 GTK 的應用程式都是顯示在 XWindow 的環境下,若是要在瀏覽器中操控遠端的應用程式或桌面,大都是使用 VNC 或是 NX 這類的方式,但是現在 GTK+ 從 3.2 版之後,增加了 broadway 這個 backend,讓應用程式可以直接顯示在支援 HTML5 的瀏覽器中,不需要像以前一樣還要透過別的通訊協定來達成。
這裡我們以 Ubuntu Linux 為例示範如何安裝與使用 broadway backend,目前的 Ubuntu 預設都不會啟動這個功能,若要啟動 broadway backend 可以使用 Nicolas Delvaux 的 PPA,它適用於 Ubuntu 13.04、12.10 與 12.04 這些版本。
下面的影片是 GTK+3 使用 broadway backend 之後,顯示在 HTML5 瀏覽器上的畫面:
這裡要注意一點:這個支援 broadway backend 的 GTK+3 PPA 適用於 Ubuntu 13.04、12.10 與 12.04 這些版本,而其所提供的 GTK+ 版本也都會對應到系統上預設的版本(當然 PPA 所提供的版本會啟動 broadway backend),也就是說如果你有自行使用其他更新的 PPA(例如 GNOME 3 PPA),那在使用這裡的 PPA 之前就要先把其他比較新的 PPA 移除,並降級相關的套件才能使用。另外這個 broadway backend 只適用於 GTK3 的應用程式。
在 Ubuntu 若要加入 GTK+3 broadway PPA 並升級 GTK3 到有支援 broadway 的版本,可使用下面的指令:
sudo add-apt-repository ppa:malizor/gtk-broadway
sudo apt-get update
sudo apt-get upgrade
然後登出系統之後,再重新登入,並執行要顯示在瀏覽器中的應用程式,執行方式如下:
GDK_BACKEND=broadway UBUNTU_MENUPROXY= LIBOVERLAY_SCROLLBAR=0 APPLICATION
其中 APPLICATION 就是要執行的 GTK 程式。例如要執行 gedit 就將其替換成:
GDK_BACKEND=broadway UBUNTU_MENUPROXY= LIBOVERLAY_SCROLLBAR=0 gedit
"UBUNTU_MENUPROXY=" 與 "LIBOVERLAY_SCROLLBAR=0" 這兩個參數是將全域的選單與 scrollbars 關閉,如果開啟的話會出現 segfault 錯誤。
最後,開啟 Firefox 瀏覽器(在測試時 Chrome 有一些問題),輸入下面這個網址:
http://localhost:8080
如果要在遠端的電腦操控的話,就把 localhost 替換為該機器的 IP 位址。
如果你想要同時執行很多個應用程式,可以讓不同的應用程式使用不同的 port,若要指定 port 可以在執行程式時,加入 BROADWAY_DISPLAY=PORT 這個參數,其中 PORT 就是要指定的 port,例如 BROADWAY_DISPLAY=8081。
除了這裡介紹的這個 PPA 之外,還有另外一個 PPA 提供適用於 Ubuntu 13.04 的最新 stable 版 GTK 3.8,它包含了一些額外的功能,像是密碼保護、同時在一個瀏覽器視窗中執行多個 GTK+ 應用程式等,但是 Ubuntu 13.04 預設並沒有安裝 GTK 3.8,所以這裡沒有建議使用這個 PPA,除非你使用虛擬機器來測試或是直接在伺服器上使用。如果你想使用,可以直接連上 Newer GTK+3 with the Broadway (HTML5) backend 網站,使用之前建議先閱讀一下它的說明。
最後如果你不想使用 broadway backend 這個功能時,若要移除,則可使用下面的指令:
sudo apt-get install ppa-purge
sudo ppa-purge ppa:malizor/gtk-broadway
參考資料:Web Upd8、GNOME Dev Center
沒有留言:
張貼留言