[GNOME3] 在工具列顯示邪惡的 Notification Status Icon.

前兩天我在學姐機上安裝了 GNOME 3,或許是電波正好對上了的關係,感覺用起來超級直覺好用,甚至比 Mac OS X 給我的感覺還好用(雖然我本來就不認為 Mac OS 的界面有好用到哪去)。

但很不幸的,GNOME 的人似乎認為 DeadBeef / GCIN / PCManX / ... 以及其他一堆軟體在用的通知區域狀態圖示 (Notification Area Status Icon) 是邪惡的,必除之而後快。但不可否認,現在這是讓各個程式可以達成跨桌面環境而有 applet 效果的唯一法方。

事實上,我已經打算如果 GNOME 3 沒辦法像 GNOME 2 或是 XFCE 那樣讓 Notification Icon 顯示在永遠看得到的地方,我就不打算用 GNOME 3 了,就算其他方面再好用都一樣--畢竟,那等於是個半殘的桌面環境。

幸好經過了一番與根本沒寫過的 JavaScript 苦戰,終於成功地寫出了一個 GNOME Shell Extension,讓我常用的程式能夠在螢幕最上方的 top bar 來顯示。

下面是這個 Extension 的使用方式:

  1. 下載 EvailStatusForever 這個 Extension
  2. ~/.local/share/gnome-shell/extensions/ 這個目錄解壓縮
  3. 現在應該會在這個目錄出現一個 EvilStatusIconForever@NBGentoo 的目錄
  4. 用文字編輯器打開 EvilStatusIconForever@NBGentoo/extension.js 這個檔案

打開後,這個檔案的內容如下:

const StatusIconDispatcher = imports.ui.statusIconDispatcher;
const Panel = imports.ui.panel;

function main() {

    // Put those those notification you want display at top bar here.
    // The key is the text show when you hover your mouse to the notification
    // bar icon at the bottom in the lower case letter.

    //StatusIconDispatcher.STANDARD_TRAY_ICON_IMPLEMENTATIONS['gcin'] = 'gcin';
    StatusIconDispatcher.STANDARD_TRAY_ICON_IMPLEMENTATIONS['deadbeef'] = 'deadbeef';

    // Disable bulit-in icon that you don't need.
    Panel.STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['a11y'] = '';   // Accessiability icon
    // Panel.STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['volume'] = ''; // Sound Volume icon
    // Panel.STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['battery'] = '';
    // Panel.STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['keyboard'] = ''; 
    // Panel.STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['bluetooth'] = '';
    // Panel.STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['network'] = '';

}

注意第十行的地方,這裡設定了如果一個在螢幕底下的 Message Tray 裡的圖示叫做 deadbeaf 的話,就把他放到 top bar 的右上角去,要注意的是,在這裡要把名稱全部轉換成小寫。你可以把滑鼠移到螢幕下方 Message Tray 的圖示上,找出這個圖示的名稱,像下圖一樣。

接下來,只要依此類推,把你想要顯示在 top bar 上的程式放上去就可以了。設定完之後,將這個檔案存檔,並且按下 'Alt+F2',接著輸入r 後按下 Enter 鍵,gnome-shell 就會重新啟動,應該就可以看到像下面的畫面一樣,DeadBeaf 的圖示已經變成在 top bar 上囉。

不過這個做法有其限制--你的程式圖示只能在 top bar 和 message tray 裡面二選一,我還沒有找到怎樣才能讓圖示在兩個地方都能夠顯示。

另外,因為 GNOME 的人好像認為 Notification Area 的狀態圖示罪該萬死,所以我不確定這個方法以後是不是能夠繼續使用。

回響