Gnome 3 即將在今年推出,最近已經開始試用新的 Gnome Shell 介面。Gnome Shell 將會是 Gnome 3.0 的一個最重要的特色。

雖然社群中一直有不的聲音,認為 Gnome Shell 改變了傳統的使用習慣,恐怕會嚇走很多使用者。不過對我而言,我其實是相當期待這些新的改變。別擔心,即便你真的不喜歡 Gnome Shell, 也可以將 Window Manager 改回只使用 Mutter,使用經驗會跟目前使用 Metacity 類似。

網路上針對 Gnome Shell 的操作介面介紹與批評已經相當多,所以我來談談似乎比較少人提到的設計理念

  • 為使用者經驗負責 (Take responsibility for the user’s experience)
  • 非中斷守則 (Principle of non-preemption)
  • 減少錯愕 (Principle of Least Astonishment)
  • 為新手設計容易自學的介面,為老手提供有效率的介面,並為大眾最佳化 (Design a self-teaching interface for beginners, and an efficient interface for advanced users, but optimize for intermediates)
  • 不依賴象徵 (Don’t unnecessarily rely on metaphor)
  • 簡即美 (Less is More)
  • 理解並原諒 (Be considerate and forgiving)
  • 技術應該扮演調解功能 (The technology should act as a mediator)

這些設計理念,可以看到 Gnome 社群對於使用者介面的經驗逐漸成熟。Gnome Shell 的設計考慮了幾個重點,一是使用者在使用電腦環境時,本來就習慣頻繁切換視窗,並在不同的軟體中完成特定事項,才切換回來。但傳統桌面設計,往往讓這些不同的視窗同時出現在畫面上,像是塞在你的工作列(Taskbar) 或狀態列 (System Status Area),於是使用者非常容易被不同的軟體取走注意力。而現在這個時代,最重要的就是寶貴專注力阿。上述種種的理念跟法條,例如改變操作模式讓使用者可以犯錯後再輕易修正,而非執行前詢問你是否確定。這些改變都是為了能夠把軟體的位置,從使用者必須學習並依賴的技術終點,變成運送使用者完成工作目標的載具。

另外一個值得一提是,Zeitgeist 計畫。事實上,我會將 Zeitgeist 視為 Gnome Shell 的核心,Zeitgeist 是一個可以用來紀錄你操作過程的軟體架構,現在會自動紀錄的有檔案存取、網頁瀏覽、聊天、電子郵件紀錄等。配合 GNOME Activity Journal 與 Gnome Shell, 你除了可以快速的查看曾經編輯的檔案的 metadata 外,也可以依照 Tags, 時間甚至「地點」來分類你的操作過程。

從這個角度來看,你的軟體操作不只是開啟檔案、閱讀網頁,而是可以視為在特定情境 (context) 下所進行一連串的「活動」(Activity)。這些活動,才是人使用電腦的重點阿。從過去幾年來,Gnome 社群推出的 tracker, desk-bar, gnome-do 等各種協助人們處理資訊的工具。

終於 Gnome 擺脫純粹模仿的階段,Gnome Shell 有機會再次改變人們使用軟體的習慣,或是….大反彈…我想有些的問題在初期會引起反彈,會有像是 task panel 不見了,那麼我最常用得 tomboy, hamster 該藏去哪裡呢 ? :-/

在使用者介面上,類似以 Activities 作為軟體操作概念,在 OLPC 的 Sugar 中以不同的形式實做。

Songbird 在四月初宣佈將另鳴新曲,終止正式對 Linux 版本的支援。此言一出,自然引起社群的騷動,Songbird 是類似 iTunes 的影音播放軟體,提供樂庫的管理功能,基於 Mozilla Gecko 而開發。目前支援 Windows, Mac 與 Linux 三種平台。

有趣的是,為了能夠讓這幾種平台都可以使用同一套原始碼 (code base),Songbird 後面的支持商業公司 POTI 在 1.0 時將原只支援 Linux 的 GStreamer 架構,移植到 Windows 與 Mac 平台上,並改寫成 Songbird 的播放核心 Media Core. 即便說要放棄 Linux 平台,我相信 POTI 內部還有許多人用 Linux 作開發,所以就算沒有正式支援,他們勢必還是得在內部維護一份。

令人好奇的是做出這個決定的支持因素是甚麽?

在受到批評後,Georges Auberger同篇文中揭露了一些數據,指稱 Linux 的使用者佔有率不高,依據市場考量決定放棄。讓我們檢視一番他所揭露的資訊,其實我不太相信這份數據是否準確,其中除了 Active Users 外,其他都是分析網頁瀏覽的頻率。稍微畫了一份圖,你可以見到 Windows 桌面使用者似乎在各項都佔了七成以上。不過有幾點很有趣,其中之一是翻譯貢獻,Linux 使用者顯然比 Mac 使用者高很多,分別是 25% 比 3%。

而上述 Bug 回報似乎是 Mac 高了 Linux 一些,是 14% 比 9% 。但是如果我們去翻查 Songbird’s Buzilla,會發現針對平台問題回報次數其實是 Linux 高一點,總共是 335 個比 193 個。

就像原文中所提到,Linux 使用者反而是更熱情活耀的,總是給予意見,並進行一些殺手級軟體開發。但是!POTI 有自己的道,沒有辦法接納或滿足這些需求,於是他們決定忍痛揚棄 Linux 的支援,甚至願意冒著惹火使用者的風險,正式宣佈這件事情。

簡單講,就是他們寧可放棄 Linux 市場,去跟同樣支援的 Windows, Mac 的 iTunes 對戰。

我們回頭看看 Songbird 的可能營收來源,看起來大約有兩種

在 Linux 平台上,Songbird 很可惜一直沒有進入主流 Linux distribution 的內建軟體名單上。即便 Songbird 的軟體授權為 GPL,應該是可以納入各種 Linux Distro 之中才對,缺了這項利基,使用者安裝 Songbird 自然不太方便、稍微有點門檻,特別是 Songbird 使用內建 GStreamer libraries 常常跟系統對衝,造成無法啟動的問題等,這都造成市占無法提高,自然也很難透過平台獲利。

此外,在 Linux 上有大量的替代品,像是 Amarok, BansheeRhythmbox 等等,功能或可滿足大部分的使用者。再加上 Ubuntu 也自己推出與 7digital 合作的 MusicStore。這讓 Songbird 想透過 Linux 平台獲利更增添變數。

於是,剩下最有利的機會就是羨慕 Apple 的  iTunes Music 市場,但是沒有方案可進入音樂市場的其他設備商了。這也難怪 POTI 長久以來忽視 Linux 使用者的需求,像是拔掉 iPod 的支援,把有限的資源用來專注開發合作廠商所需要的影片播放功能等。

如此如此令人失望,社群主動 fork 一個新的專案 Nightingale 專門來支援 Linux,也是很合理的事情阿!

There are a few wireless driver supports Master mode (infrastructure mode or AP mode), you can manage these interface with iw tools and provide network services for others, just like a wireless router do.

However, many of cards does not support this feature. But you still can use iwconfig to switch to ad-hoc mode, which most of cards support. With ad-hoc mode, the others can directly communicate with you when both agree on the same network name (SSID) and channel.

So, with properly setup, you can create a local wireless network for nearby nodes, or even share your network with others. What I am interested about it’s to share the network with others.

Actually, the modern linux distribution with Network Manager installed has already supported this kind of feature. It’s very easy to setup in Network Manager.

Basically, you just need to setup a ad-hoc network manually, and enable it when you are connected with ethernet or 3g network.

A quick tutorial –

Edit a network, left click the network-manager icon, and select Edit Connections, select Wireless and click on “Add” network.

In the connection editing window, change Mode to Ad-Hoc, and set the SSID you prefer to use.

Switch to IPv4 Settings tab of tab, and change method to “Shared to other computers”. Save the configs.

After you connect to the wan (like pppoe or 3g network), you need to create the ad-hoc network manually.
Left click the network-manager icon, and click on “Create New Wireless Network”.

Just select the connection profile we setup in the previous step, and click Create. That’s it. The network manager will setup your wireless interface and dnsmasq for you.

If you are not using Network Manager, here is my little script to setup an Ad-Hoc network. Use it at your own risk. This is a tips.

偶爾你會需要刪除特定目錄下的空目錄,一個一個去找顯然不太聰明而且相當費時。

可以簡單的利用  find 來找,兩個參數可用,分別是 -depth 與 -empty。另外你可以加上 -type d 讓它只找目錄,不加的話,它會會連空檔案都找出來。

$ find /tmp -depth -empty -type d

配合 -exec 就可以將這些檔案全部刪掉啦。

$ find /tmp -depth -empty -type d -exec rmdir -v {} \;

這是一篇 Tips

二月初發表了在 Linux 上移除 CNNIC 憑證一文後,受到相當多的文章引用與關注。

原文中,提到移除高風險憑證的作法,但其實我相信很多人弄不懂不同平台的作法,也不清楚所謂 NSS 的機制,沒有清除系統憑證,只是試圖移掉 Firefox 中的驗證。所以很多使用者不知道自己是否真的移除,或是以為移除,重新開啟 Firefox 後,因為 NSS 的設計,憑證又自動建入資料庫中。

依照目前的討論 (#542689, #476766),Mozilla 應該採無罪推論原則。也就是說雖然 CNNIC 的風評不佳,但在它實際作惡前,我們理因相信它無罪。雖然有一些技術上的提議,希望可以降低憑證管理的問題跟風險,但是這些功能恐怕需要點時間才會實踐。

所以,短時間內,使用者還是得自己做一些設定來自保。但是前文步驟又十分繁雜,我們需要給使用者一個比較簡單的操作措施。

在香港朋友 Benlau小兔黑黑倡議與支持下,我們寫了一個小 Firefox 附加元件,稱為 Cert Alert,這個元件的功能是「自動提醒」使用者,網頁中使用了特定 SSL Root CA 的內容。

這個附加元件採 MPL 1.1 授權釋出。你可以於 Firefox 附加元件網站下載安裝。開發者可於 Github 取得完整程式碼或提供建議。

另外一個值得推薦的是 timdream 所開發的 CA Untrustworthy。這個附加元件的功用是每次開啟 Firefox 時,自動移除或關閉高風險憑證。如此,若瀏覽使用高風險憑證網站時,Firefox 就會提醒你這是未受信任網站,你可以依照 Firefox 的憑證驗證機制來允許或關閉網頁。所以你就不用擔心,是否因為沒有完成移除系統憑證而造成安全問題啦。Tim 的 CA Untrustworthy 亦擺於 Github.

銘謝: Littlebtc 提醒 CertAlert 0.0.4 版前之 MITM 問題
備註: 中國朋友亦開發一 NoCNNIC 工具,可移除 Windows 平台的 NSS database 中 CNNIC 憑證。惟只支持 Windows 平台,且必須手動執行才可移除。僅供參考。

2011-03-27 updated

已更新支援 Firefefox 4.0

Thinkpad 的小紅點在 Linux 上似乎一直沒有完善圖形化介面的設定工具。若要設定的話,常得參考一些指令設定

驅動程式預設的速度、靈敏度都太低,推一陣子手指就累了,也無法按著中鍵移動小紅點來捲動視窗。不甚好用,稍做一些設定的筆記,作為未來參考。

在 GNU/Linux Debian/Ubuntu 上有數種機制可以更改小紅點設定,若是新手使用,大概會被 sysfs, udev, hal, DeviceKit, pm-utils, xorg.conf, xinput 等術語搞得一頭霧水。你若不想弄懂這些難解術語,也不想更改 xorg.conf,最快的作法是以 sudo 在虛擬終端機執行以下指令

#!/bin/sh
# 游標速度,可調整數值。大為快,小為幔
echo -n 120 > /sys/devices/platform/i8042/serio1/speed
# 靈敏度,最高應為 255
echo -n 250 > /sys/devices/platform/i8042/serio1/sensitivity
# 按小紅點為選取,1 為啟用,0 為關閉。
echo -n 0 > /sys/devices/platform/i8042/serio1/press_to_select

xinput list-props '"TPPS/2 IBM TrackPoint"'
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Wheel Emulation' 8 1
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Wheel Emulation Button' 8 2
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' "Evdev Wheel Emulation X Axis" 8 6 7
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' "Evdev Wheel Emulation Y Axis" 8 4 5
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' "Evdev Wheel Emulation Axes" 8 6 7 4 5
xinput list-props '"TPPS/2 IBM TrackPoint"'

這些指令可以幫你把 TrackPoint 的速度、靈敏度調高,並驅動中鍵模擬滾輪功能。頭三行 echo 指令需以 root 權限執行,你可自行調整偏好的數值。後面幾行 xinput 指令,必須在 X 視窗下執行。(意即,你不能拿到 console 下面來跑)

這些指令每次重開機或休眠後都需重新執行一次。你若嫌麻煩,目前最簡易的設定機制應該是寫成 udev rules,作法以 root 執行指令如下

# cat > /etc/udev/rules.d/90-trackpoint.rules <<EOF
# SUBSYSTEM=="serio", DRIVERS=="psmouse", ATTR{press_to_select}="0", ATTR{sensitivity}="250", ATTR{speed}="120"
DEVPATH=="/devices/platform/i8042/serio1", ATTR{press_to_select}="0", ATTR{sensitivity}="250", ATTR{speed}="120"

ACTION!="add|change", GOTO="xorg_trackpoint_end"
KERNEL!="event*", GOTO="xorg_trackpoint_end"

ENV{ID_PATH}!="platform-i8042-serio-1", GOTO="xorg_trackpoint_end"

ENV{x11_options.EmulateWheel}="1"
ENV{x11_options.EmulateWheelButton}="2"
ENV{x11_options.XAxisMapping}="6 7"
ENV{x11_options.Emulate3Buttons}="0"

LABEL="xorg_trackpoint_end"
EOF

這段程式碼,參考 ThinkWiki 網站理論上,會在你開機以及重休眠模式啟動時,自動套用小紅點速度設定與模擬滾輪設定。

實際上,因為一個已知的 #549379 udev/kernel 問題,滑鼠的速度設定無法自動套用。暫時可以先用前段的 echo/sysfs 方式解決。

這是一篇 Tip.