2011/11/28

在 Ubuntu 解 Windows 的 ZIP 壓縮檔

有沒有搞錯?這不是很簡單嗎?

是的,這很簡單。但問題是有些在 Windows 壓縮的 ZIP 檔內含的中文檔名是 Big5 編碼,Ubuntu 的壓縮檔管理員解開時會是亂碼。原因是 ZIP 格式並未定義如何標示檔名的編碼,所以壓縮檔管理員一律當成 Unicode 來解。

遇到這個問題,可以用 command line 的 unzip 來解決:
unzip -O big5 your_compressed_file.zip
PS: 我發現 Ubuntu 10.04 的 unzip 已經移除 -O 的功能 (怪怪~~稍微新或舊一點的版本卻都有)。需要此功能的朋友,可以到以下頁面下載稍微新一點的版本來用:
http://packages.ubuntu.com/oneiric/unzip

2011/11/18

縮小 Ubuntu Unity 的圖示

Ubuntu Unity 的圖示有 48 點,實在有夠大。縮小的方法是安裝 Compiz Configuration Settings Manager (簡稱 CCSM):
sudo apt-get install compizconfig-settings-manager
執行 ccsm 之後,找到 Ubuntu Unity Plugin > Experimental 的 Launcher icon size,就可自由調整 (最小 32 點)。

2011/11/17

Ubuntu Unity 與 Skype

最近重新安裝 Ubuntu,才注意到 Unity 搭配 Skype 有兩個問題。

第一個問題是 Skype 的圖示不會出現在 notification area。Ubuntu 13.04/13.10 的解法是:
sudo apt-get install sni-qt:i386
Ubuntu 12.04 之前的版本,解法需先安裝 dconf-tools 這個套件:
sudo apt-get install dconf-tools
接著執行 dconf-editor 並找到 com.canonical.Unity.Panel.systray-whitelist (較新的作法) 或 desktop.unity.panel.systray-whitelist (較舊的作法),然後在最後加上 'Skype' 即可 (需登出再登入)。例如:
['JavaEmbeddedFrame', 'Wine', 'scp-dbus-service', 'Update-notifier', 'Skype']

第二個問題是,若 Skype 啟動後再點 Unity 上的 Skype 圖示,這動作並不是叫出 Skype 的視窗,而是重新再起動另一份 Skype (會因重複登入而錯誤)。解法在參考資料二,有用但需要一點小技巧。(Ubuntu 12.10 和 Skype 4.1.0.20 的組合,似乎無此問題)

參考資料:

1. How can I get the Skype notification back in the system tray?
2. Unity launcher and multiple instances of Skype 
3. How do I add a Skype indicator?

2011/10/26

在 Ubuntu 上使用玉山銀行的 WebATM

玉山銀行的 WebATM 是極少數不但支援 Windows + IE 平台,也支援 Linux + Firefox/Chrome 等平台的網路銀行。單這一點,就值得大力推薦。

WebATM 安裝方法還算簡單,請參考:
可以歸納為三個步驟:
  1. 安裝 Ubuntu 提供的 pcscd 套件
  2. 安裝讀卡機提供的驅動程式
    • cd driver_ezusb_v1.5.3_for_64_bit/
    • sudo ./install
  3. 在 Firefox 安裝玉山銀行提供的 WebATM plugin (看第六點)
不過,根據我在 Ubuntu 11.10 和 12.10 上的經驗,這樣的安裝程序似乎還不夠。可到 WebATM 健診頁面跑檢測程式:
我的情況是前三關都順利通過,但就是抓不到讀卡機。且在 /var/log/syslog 會出現以下錯誤訊息:
pcscd: readerfactory.c:965:RFInitializeReader() Open Port 0x200000 Failed (USB:0CA6/0010:LIBUDEV:0:/DEV/BUS/USB/004/002)
pcscd: readerfactory.c:275:RFAddReader() CASTLES EZ100PU init failed.
pcscd: hotplug_libudev.c:377:HPAddDevice() Failed adding USB device: CASTLES EZ100PU
這問題有兩個解法:第一個較簡單,第二個較安全。

解法一是舊式的作法,需以 root 身份執行 pcscd。請先修改 /etc/init.d/pcscd,將以下片段的 "exit 0" 註解掉,再重開機即可:
# DO NOT start the daemon on startup
# comment the line to have the same behavior as in version < 1.6.0
#exit 0
解法二是較安全的方式,是以使用者身份動態執行 pcscd,但你必須賦予這台讀卡機特殊的權限。作法是新建一個檔案:/etc/udev/rules.d/92-pcscd-ccid.rules。內容如下:
# If not adding the device, go away
ACTION!="add", GOTO="pcscd_ccid_rules_end"
SUBSYSTEM!="usb", GOTO="pcscd_ccid_rules_end"
ENV{DEVTYPE}!="usb_device", GOTO="pcscd_ccid_rules_end"

# Castles Technology Co., Ltd EZUSB PC/SC Smart Card Reader
ATTRS{idVendor}=="0ca6", ATTRS{idProduct}=="0010", GROUP="pcscd"

# All done
LABEL="pcscd_ccid_rules_end"
注意上面的 idVendor 和 idProduct 必須對應到讀卡機的 USB ID。你可用 lsusb 查出 USB ID,譬如:
Bus 003 Device 003: ID 0ca6:0010 Castles Technology Co., Ltd EZUSB PC/SC Smart Card Reader
改完後 sudo service udev restart,應該就大功告成了。

參考資料:

2011/10/20

Ubuntu Unity UI 的術語

Ubuntu 11.04 的 Unity 感覺不是很穩,所以試用一陣子之後就 改用 AWN 了。此次,趁升級到 Ubuntu 11.10 時,又重新玩玩看。感覺進步不少,所以決定再給他一次機會:長時間持續使用並勉強自己克服既有操作習慣。

一週下來,還算理想。唯一的麻煩是有問題時不容易找答案:因為 google 時很難下 keyword,不知道該怎麼稱呼 Unity 的各個部位。後來,終於找到一份 Unity UI 的術語可作為參考:
PS: Oneiric 的 Unity 似乎跟 scim 相衝。因 Natty 之前 ibus 的酷音輸入法一直有問題,所以只能換成 scim。升級到 Oneiric 後,這個問題看起已經解決,換回 ibus 之後 Unity 和酷音輸入法都很正常。

2011/10/17

用 Python 來控制 Skype

終於找到一個可以利用 script 來控制 Skype 狀態的方法,先簡單留下參考資料:
利用 Skype for Linux 2.2.0.35 測試,確實可以改變 Skype 的狀態,但似乎還不夠穩,偶而會失敗。

利用 BlueProximity 和你的藍牙手機自動鎖住和解開 Ubuntu 桌面

你的 Ubuntu 桌面有啟動閒置幾分鐘後就自動鎖上嗎?時間設定太長,保防效果就低;但若太短,恐怕只是替自己添麻煩而已。

若你的手機有藍牙功能而且習慣手機不離身,那麼利用 BlueProximity 可讓 Ubuntu 偵測到你已經離開 (其實偵測對象是你的手機),你就可以在第一時間自動鎖上桌面。更酷的是,你回來後系統會自動解開等著你來用。

這方法是無意中看到的,還沒空測試,請大家自行參考、研究: