2012年9月22日 星期六

在 GNOME 中,用戶自訂「常用程式」選單

將常用的程式收集在 GNOME 的「應用程式」選單中,的確是一個很酷的作法。但是,前文 “將常用程式收在 GNOME 的「應用程式」子選單” 的方法只能由系統管理者修改,如果是系統中多數用戶常用的程式,這種設定的方式一次就方便了許多用戶。但是,對於沒有 root 權限的一般用戶,想要自訂自己專用的「常用程式選單」,前文的方法就不可行了。
    如果仔細研讀 GNOME 的文件,會發現到其實一般使用者也可自訂「常用程式選單」。設定的程序說明如下:

一、相關檔案所在目錄

在一般用戶的「常用程式選單」相關檔案的目錄,與系統層級的示常不同。在 Linux 裏這些設定用途的檔案,通常是「隱藏檔」或放在「隱藏目錄」中。目錄與檔名列表如下:
檔案名稱檔 案 所 在 目 錄英 文 檔 名
應用程式選單   ~/.config/menus/ applications.menu 及
 applications-gnome.menu  
選單目錄屬性 ~/.local/share/desktop-directories/   SiBsFavor.directory
程式捷徑屬性 ~/.local/share/applications/ SiBsFavor.desktop
程式捷徑圖示 ~/.local/share/icons/ SiB.png

其中,『.config』與『.local』都是「隱藏目錄」,用戶需以『ls -a』或『ll -a』方可看到。如果沒有,在做以下操作以前要先建立這些目錄。

註一:『~/』是指用戶的「家目錄」,以 SiB 為例,其「絕對路徑」為『/home/SiB/』。
註二:建立「隱藏」檔案或目錄,只在檔案或目錄名稱的最前面加上『.』即可。
註三:「應用程式選單」的檔案有兩個,其中的『applications-gnome.menu』是 GNOME 3 (Fedora 15 之後)用的,Fedora 14 以前不需要。

二、建立個人化的「應用程式選單」定義檔

通常這個檔案預設是不存在的,甚至,連目錄也沒有。用戶用建立定義檔之前,要先建立目錄。
[SiB@Celeron-D ~]$ mkdir ~/.config
mkdir: 無法建立目錄‘/home/SiB/.config’: 檔案已存在
[SiB@Celeron-D ~]$ mkdir ~/.config/menu
[SiB@Celeron-D ~]$ gedit ~/.config/menus/applications.menu
[SiB@Celeron-D ~]$ gedit ~/.config/menus/applications-gnome.menu
上面的第一、二個命令是建立目錄,建立目錄一次只能建一層,所以要分兩次建立。『~/.config』目錄已存在,『~/.config/menu』成功建立。第三及第四個命令是開啟定義檔,並加以編輯。在『applications.menu』檔中,填入如下內容並儲存。
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">

<Menu>
  <Name>Applications</Name>
  <MergeFile type="parent">/etc/xdg/menus/applications.menu</MergeFile>

  <!-- SiBsFavor submenu -->
  <Menu>
    <Name>SiBsFavor</Name>
    <Directory>SiBsFavor.directory</Directory>
    <Include>
      <And>
        <Category>SiBsFavor</Category>
        <Not>
          <Category>System</Category>
        </Not>
      </And>
    </Include>
  </Menu> <!-- End SiBsFavor -->

</Menu> <!-- End Applications -->
及在『applications-gnome.menu』檔中填入
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

<Menu>

  <Name>Applications</Name>
  <Directory>X-GNOME-Menu-Applications.directory</Directory>

  <!-- Scan legacy dirs first, as later items take priority -->
  <KDELegacyDirs/>
  <LegacyDir>/etc/X11/applnk</LegacyDir>
  <LegacyDir>/usr/share/gnome/apps</LegacyDir>

  <!-- Read standard .directory and .desktop file locations -->
  <DefaultAppDirs/>
  <DefaultDirectoryDirs/>

  <!-- Read in overrides and child menus from applications-merged/ -->
  <DefaultMergeDirs/>

  <MergeFile type="parent">/etc/xdg/menus/applications.menu</MergeFile>

  <!-- SiBsFavor submenu -->
  <Menu>
    <Name>SiBsFavor</Name>
    <Directory>SiBsFavor.directory</Directory>
    <Include>
      <And>
        <Category>SiBsFavor</Category>
        <Not>
          <Category>System</Category>
        </Not>
      </And>
    </Include>
  </Menu> <!-- End SiBsFavor -->

</Menu> <!-- End Applications -->
修改屬性的說明,請參照前文。需要修改的地方在這段
 . . . . . .

  <!-- SiBsFavor submenu -->
  <Menu>
    <Name>SiBsFavor</Name>
    <Directory>SiBsFavor.directory</Directory>
    <Include>
      <And>
        <Category>SiBsFavor</Category>
        <Not>
          <Category>System</Category>
        </Not>
      </And>
    </Include>
  </Menu> <!-- End SiBsFavor -->

 . . . . . .

三、增加個人化的「選單目錄」之屬性檔

個人化的「選單目錄」之屬性檔,與前文所述相同,
[SiB@Celeron-D ~]$ mkdir ~/.local
mkdir: 無法建立目錄‘/home/SiB/.local’: 檔案已存在
[SiB@Celeron-D ~]$ mkdir ~/.local/share
mkdir: 無法建立目錄‘/home/SiB/.local/share/’: 檔案已存在
[SiB@Celeron-D ~]$ mkdir ~/.local/share/desktop-directories/
[SiB@Celeron-D ~]$ gedit ~/.local/share/desktop-directories/SiBsFavor.directory
上例命令中,無法建立目錄者,為該目錄已建立、存在。在開啟的檔案中貼上如下內容,
[Desktop Entry]
Name=SiB's Favor Programs
Name[zh_CN]=SiB 的常用程式
Name[zh_HK]=SiB 的常用程式
Name[zh_TW]=SiB 的常用程式
Comment=A collection of SiB's Favor Programs for convenience.
Comment[zh_CN]=將 SiB 的常用程式作個整理,方便使用。
Comment[zh_HK]=將 SiB 的常用程式作個整理,方便使用。
Comment[zh_TW]=將 SiB 的常用程式作個整理,方便使用。
Icon=SiB
Type=Directory
上例中,已將一些不用的語言刪除,看起來簡潔多了。

四、增加「程式捷徑」的屬性檔

個人化的「程式捷徑」之屬性檔,與前文所述相同,
[SiB@Celeron-D ~]$ mkdir ~/.local/share/applications/
[SiB@Celeron-D ~]$ gedit ~/.local/share/applications/SiBsFavor.desktop
在開啟的檔案中貼上如下內容,
[Desktop Entry]
Name=SiB's Favor program 1
Name[zh_CN]=SiB 的常用程式1
Name[zh_HK]=SiB 的常用程式1
Name[zh_TW]=SiB 的常用程式1
Comment=Use the command line
Comment[zh_CN]=SiB 的第1個常用程式
Comment[zh_HK]=SiB 的第1個常用程式
Comment[zh_TW]=SiB 的第1個常用程式
TryExec=gnome-terminal
Exec=gnome-terminal
Icon=SiB
Type=Application
X-GNOME-DocPath=gnome-terminal/index.html
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-terminal
X-GNOME-Bugzilla-Component=BugBuddyBugs
X-GNOME-Bugzilla-Version=3.4.1.1
Categories=SiBsFavor;
StartupNotify=true
X-Desktop-File-Install-Version=0.19
上例中,已將一些不用的語言刪除。

五、修改「選單目錄」或「程式捷徑」的「圖示」

若想要讓「選單目錄」或「程式捷徑」使用自訂的「圖示」,要將自訂的「圖示」放在『~/.local/share/icons/』目錄中。
[SiB@Celeron-D ~]$ mkdir ~/.local/share/icons/

六、使用自訂的「常用程式」選單

畫面的結果,會與前文所示螢幕截圖相似,故不再佔篇幅。

已測試版本:

  • Fedora: 14  +  GNOME 2.32
  • Fedora: 17  +  GNOME 3.4.x

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)