由於時常需要同時開啟數個 Terminal 來作系統設定,因此一直在找一個方便安排視窗位置的軟體或方法。

雖說 GNU Screen 的 regions 機制,可以讓你在同一個 Screen window 中切割出不同的橫向視窗。但是你得熟記指令或熱鍵才好於不同的視窗間切換,無法使用滑鼠切換視窗焦點,當然也無法方便的利用滾動軸查看稍早的指令輸出。且 GNU Screen 目前還不支援垂直分割,必須套上額外的補釘

另外一個方式是使用 Tiling Tabbed Window Manager,若你習慣純粹使用 CLI 來工作,使用應該沒有甚麼大問題,它會協助你將終端機規矩的置於數個獨立視窗中,你可利用 Window Manager 設定的快速鍵來切換視窗。常見的軟體有 Ion, Aweson, Ratpoison, Stumpwm, Wmii 等。

但若你已經習慣了現有的 Window Manager,或習慣讓大部份的軟體使用浮動視窗的介面。你可以試試 terminator。terminator 是使用 Python 與 VTE Terminal Widget 所寫成,於其他的終端機模擬軟體不同的是,terminator 方便讓你把視窗排列組成格狀,你可以任意對視窗作橫向或垂直分割。於是你可以方便的開啟一堆視窗,並將他們安插在你想要的位置。

由於 terminator 支援 Gnome Terminal 的 Profile (設定組合),我習慣設定一個 coding profile,定義方便閱讀程式碼的小字型 (方便瀏覽更多程式碼),並使用 terminator -f -p coding,開啟一個全螢幕的視窗來工作。這是我查看 terminator 原始碼的畫面。

新版的 terminator 0.9 在七月初發行,增加了幾個重要的功能包含了 Tabs, Drag & Drop, Terminal zooming/maximizing, support for ~/.config/terminator/config 等 (細節請參照 trunk 中的 ChangeLog)。

拖拉視窗功能則是非常重要的殺手級功能,從此,你可以方便的將任一視窗拉近另外一個分割視窗、或另外一個分頁中。我在使用 Gnome Terminal 時,也時常使用拖拉功能,將分頁拉出成為獨立的視窗,可方便對照程式碼、文件,或者將相關於特定專案、伺服器的視窗拉近同一個視窗中作為分頁。Terminator 在新版中也一併實做了 Tabs 分頁功能。

另外一個好用的新功能是全螢幕或放大螢幕,由於你通常會開數個終端機進行不同的事情,若是想專注在單一視窗時,就可以使用全螢幕 (Ctrl+Shift+X),再按一次就可以回到多視窗功能。而 Zooming (Ctrl+Shift+Z) 則是將當下的視窗解析度放大到全螢幕,於是你可以得到大字型的單一視窗。

新版的中也做了設定檔,可以讓你稍微自訂一些參數設定。但是這尚未包含所有的設定,如 profiles 就還不能在設定檔中設定。

目前 terminator 已經相當好用,若是可以再實做類 Screen/Vim 的視窗切換快速鍵,那就更方便不過了。

專案首頁位於 Launchpad.

試著在剛裝好的 Ubuntu 上亂打一些指令時,發現在 CLI 介面,Ubuntu 會聰明的提醒你忘了裝甚麼軟體套件。

user@user-laptop:~$ proxychains
The program 'proxychains' is currently not installed.  
You can install it by typing:
sudo apt-get install proxychains
-bash: proxychains: command not found

稍微玩了一下,發現是 command-not-found 這個神奇法術。軟體套件包含 /usr/lib/command-not-found 、是一個用 Python 刻的指令稿,此軟體會查詢預先建成的指令/軟體名稱資料庫,只要餵給它指令名稱,他可以迅速的提示如何安裝含有該指令的軟體套件。由於資料庫是 gdbm,且大小只有 2.3M (command-not-found-data 0.2.17ubuntu1),因此查詢的速度相當快,使用者不太感覺到差異。

要使用此功能,尚必須在 bash 中定義一個 command_not_found_handle 函式,在查無指令時自動執行 command-not-found. Ubuntu 已經將這段程式建於 /etc/bash.bashrc.

不過目前使用的套件資料庫是預建的,因此不會依照你所使用的 apt sources 自動更新資料庫。若是可以整合 apt-file 與 dlocate 兩個的功能,應該可以提供較有彈性的功能吧。

Flash Player 9 後又過了一年半,Adobe 終於又將發行支援 Linux 的 Flash Player 10

新版的 Flash 在各種多媒體處理的能力與效能上都有重大的改進。包含了新的 繪圖/3D API、新的音效處理 API,在 Linux 平台上尚新增了以下功能

  • Linux WMODE (windowless mode)
  • Video4Linux v2 Support
  • unloadAndStop
  • Limited Fullscreen Keyboard Access
  • File Reference runtime access
  • Dynamic Sound Generation
  • Large Bitmap Support
  • Context Menu
  • GB18030 Compliance
  • Ubuntu OS Support

終於,Flash 不會老是浮起來蓋住 HTML。當然,我最關心的其中一個功能是新的 Flash Player 支援 v4l2,於是我終於有機會不需靠 Flashcam 或 patch libflashsupport.c 使用 Webcam,可以開始玩 Yahoo Live, wooMeseesmic 等網站。

但稍微測試了一下還是有些問題。Flash 似乎無法與我使用的 uvcvideo 融洽相處,總是會再抓了一張 frame 後抱怨 ‘Camera is unavailable, may be in use by another application‘。目前測試的版本是 Flash Player 10 Beta2,希望正式版發行前可以修正這個問題

另外一個令人感興趣的功能是,在新的 Flash 10 的 Release Note 中提到了 RTMFP,與 RTMP 不同的是,RTMFP 是以 UDP 為基礎的 P2P 通訊協定。根據 Release Note 中的敘述,這項技術來自 Adobe 於 2006 所收購的 Amicima 公司,在 RTMFP FAQ 中有稍微詳細的技術說明。以目前的技術規格來看,雖然無法做到類似 Bittorrnet 的 P2P Swarming 來作檔案分享。但是可以拿來作點對點的通訊協定替代品,對於建立像 wooMe 這樣的服務來講,可以省下大量的頻寬才是。

在追一個 Firefox 延伸模組時,試著玩了一下在 Firefox 外掛中使用 Java 的方法。

原來你可以用 XPConnect 來存取 Java Object,甚至將你的 Java object 封裝成 XPCOM,以方便 Java Script 取用。範例可參考 Simile ProjectJava Firefox Extension。於是乎,你的外掛介面可以用 XUL/Java Script 實做,但後端丟給 Java 來處理,若是拿來整合某些企業應用程式,應該可以比較快速的拉出使用者介面與整合商務邏輯。

或者,你也可以使用 JavaXPCOM,讓你的 Java 程式存取 XPCOM 介面的元件。

之前曾經介紹過中國移動的飛信服務,是整合短訊與電腦即時通訊的服務。最近知道有兩個開放原碼計畫分別實做了飛信的協定,一個是 Fetion Pidgin Plugin、另一則是 LibFetion。於是你在 Linux 上,也可以使用飛信來傳訊到手機上了。若是有人實做了 Telepathy project 介面,那就更容易整合到其它不同的通訊軟體上了。

Source: libfetion

不知道台灣電信產業是否有人想作類似的服務,而不是鎖定平台與通訊協定的服務 (中華電信台哥大, 遠傳)。或是讓只能傳送簡訊的低階手機也可使用,且提供合理的費率。(說真的,誰的錢多到想使用這樣的服務?)

今年三月底時,Adobe 在 Adobe Lab 發行Adobe AIR for Linux alpha 版本。Adobe AIR 是一種執行環境,提供一個可使用 Adobe Flash, Adobe Flex, HTMLAjax 開發桌面 RIA 應用程式的平台。

試玩了一下,可以安裝 twhirl (Running Twhirl on Ubuntu 7.10) 等軟體沒有問題。可惜的是,目前 Linux 版本還不能支援 XIM,以至於無法輸入中文。

另外一個惱人問題是 Adobe AIR 將 zip 格式檔案都以 xdg-mime (xdg-mime of Portland project) 註冊成使用 Adobe AIR 開啟,以至於你的 zip 檔、OpenOffice 文件檔 (也是 zip 壓縮格式) 都變成以 Adobe AIR 開啟了!

解決辦法是

先移除原本的 xdg-mime 設定

# xdg-mime uninstall --novendor "/opt/Adobe AIR/Versions/1.0/support/AdobeAIR.xml"

以編輯器開啟 "/opt/Adobe AIR/Versions/1.0/support/AdobeAIR.xml",並移除檔案中以下文字

<magic priority="100">
<match type="string" value="PK\003\004" offset="0" />
</magic> 

重新安裝 xgd-mime 設定

# xdg-mime install --novendor "/opt/Adobe AIR/Versions/1.0/support/AdobeAIR.xml"

上述 # 開頭指令,指使用 root 執行。