1.Desktop Entry 檔案标準簡介
在 Windows 平台上,使用者可以通過點選位于桌面或菜單上的快捷方式輕松打開目标應用程式。現代 Linux 桌面系統也提供了此項功能。目前,Linux KDE 和 Linux GNOME 桌面系統都使用 Desktop Entry 檔案标準來描述程式啟動配置資訊。Desktop Entry 檔案标準是由 FreeDesktop.org(http://freedesktop.org/wiki/) 制定。
2.Desktop Entry 檔案結構
Desktop Entry 檔案通常以字元串”[Desktop Entry]”開始。由清單 1 可以得知,Desktop Entry 檔案的内容是由若幹{關鍵字,數值}配對的 Entry 組成的。例如,”Version”就是一個關鍵字,關鍵字”Version”對應的數值是”1.0”。Desktop Entry 檔案标準定義了一系列标準關鍵字。标準關鍵字分為必選和可選兩種:必選标準關鍵字必須在 .desktop 檔案中被定義;而可選關鍵字則不必。以下是對重點關鍵字的解析。
關鍵字"Version":[可選] 該數值指定了目前 Desktop Entry 檔案所遵循的 Desktop Entry 檔案标準版本。
關鍵字"Encoding":[1.0 版本不推薦使用] 該數值指定了目前 Desktop Entry 檔案中特定字元串所使用的編碼方式。盡管Desktop Entry 檔案标準 1.0 不再推薦使用該關鍵字,但由于曆史原因該關鍵字仍然廣泛出現在現有的 Desktop Entry 檔案中。
關鍵字"Name":[必選]
該數值指定了相關應用程式的名稱。比如在清單1中關鍵字"Name"的數值是"Quick Start Tour"。打開檔案浏覽器,進入"/usr/share/applications"目錄,就可以看見"cbt.desktop"檔案所定義的快捷方式的顯示樣式,如圖2所示。其中,快捷方式的顯示名稱由關鍵字"Name"的數值所決定,快捷方式所使用的圖示由下文中将要介紹的關鍵字"Icon"的數值來決定。當然,這些定義在應用程式浏覽器中同樣适用。
關鍵字"Comment":[可選]
該數值是對目前Desktop Entry的簡單描述。
關鍵字”Type”:[必選]
關鍵字”Type”定義了Desktop Entry檔案的類型。常見的”Type”數值是”Application”和”Link”。”Type = Application”表示目前Desktop Entry檔案指向了一個應用程式;而”Type = Link”表示目前Desktop Entry檔案指向了一個URL (Uniform Resource Locator)。
關鍵字”Exec”:[可選]
關鍵字”Exec”隻有在”Type”類型是”Application”時才有意義。”Exec”的數值定義了啟動指定應用程式所要執行的指令,在此指令是可以帶參數的。在本例中,關鍵字”Exec”的數值是字元串”gnome-open /usr/share/doc/manual/sled-gnome-cbt_en/index.html”。在shell中輸入該字元串并按Enter鍵同樣可以啟動指定應用程式。
關鍵字”URL”:[可選]
關鍵字”URL”隻有在”Type”類型是”Link”時才有意義。”URL”的數值定義了該Desktop Entry檔案指向的URL。例如:
Type = Link
URL = http://www.ibm.com/developerworks
輕按兩下含有上述内容的Desktop Entry檔案将啟動web浏覽器,并打開指定網頁”http://www.ibm.com/developerworks“。
關鍵字”Icon”:[可選]
該數值定義了目前Desktop Entry檔案在應用程式浏覽器或是在檔案浏覽器中所顯示的圖示。如果關鍵字”Icon”的數值是以絕對路徑的格式給出,那麼其數值所指定圖示檔案将被使用;反之,Linux系統将使用”Icon Theme Specification”[2]在系統指定圖示目錄下定位所需要使用的圖示檔案。比如在本例中關鍵字”Icon”的數值是”cbt”,它實際對應着系統指定圖示目錄下的圖檔檔案”cbt.png”cbt.png 。該圖檔作為圖示的顯示效果如圖2,圖3所示。
關鍵字”StartupNotify”:[可選]
關鍵字”StartupNotify”的數值是布爾值(true 或是 false)。該關鍵字隻有在”Type”類型是”Application”時才有意義。其數值的含義由規範”Startup Notification Protocol Specifications”[3]定義,在此不再詳述。
關鍵字”Terminal”:[可選]
和”StartupNotify”一樣,關鍵字”StartupNotify”的數值也是布爾值,并且該關鍵字隻有在”Type”類型是”Application”時才有意義。其數值指出了相關應用程式(即關鍵字”Exec”的數值)是否需要在終端視窗中運作。本文将在下一節中給出關鍵字”Terminal”的具體使用方法。
關鍵字”Categories”:[可選]
關鍵字”Categories”隻有在”Type”類型是”Application”時才有意義。”Categories”的數值指出了相關應用程式在菜單中顯示的類别。具體菜單分類由規範”Desktop Specification Menu”具體定義[4]。
關鍵字”OnlyShowIn”和”NotShowIn”:[可選]
這兩個關鍵字分别定義了目前Desktop Entry是否在特定Linux 桌面系統(例如:Linux GNOME 或 Linux KDE)下顯示(由”OnlyShowIn”定義),或不顯示(由”NotShowIn”定義)。具體定義請參考”Desktop Specification Menu”[4]。
關鍵字”X-SuSE-translate”:[SUSE Linux特有]
關鍵字”X-SuSE-translate”是SUSE Linux(http://www.novell.com/linux/)特有的。”X-SuSE-translate”符合SUSE RPM Package風格。”X-SuSE-translate”數值表示是否要對關鍵字”Name”和”GenericName”進行翻譯。詳情請參考”SUSE Package Conventions”[5]。
本地化關鍵字”[LOCALE]”
根據”Desktop Entry Specification”規範[1],在關鍵字後加上字元串”[LOCALE]”就可以對該關鍵字進行特定的本地化定義。”LOCALE”的合法取值為:
LOCALE= [email protected]
在此,域”_COUNTRY”,”.ENCODING”和”@MODIFIER”是可以被忽略的。當指定Desktop Entry檔案被解析時,解析器應當根據目前POSIX locale來正确擷取本地化的關鍵字數值。例如清單1就分别定義了在”cs”和”hu”語言環境下關鍵字”Name”,”Comment”和”GenericName”的不同數值。
其餘關鍵字
除了上述在清單1中出現的關鍵字外,”Desktop Entry Specification”還定義了”Hidden”,”TryExec”,”MimeType”等可選關鍵字。使用者可以根據需要進行選取。
3. 執行個體

以建立Eclipse為執行個體:
(1)建立檔案eclipse.desktop,指令如下:
sudo vim /usr/share/applications/eclipse.desktop
2)在建立檔案中添加如下内容并儲存:
[Desktop Entry]
Encoding=UTF-8
Name=eclipse
Comment=Eclipse IDE
Exec=/opt/eclipse/eclipse
Icon=/opt/eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;
對上面的指令中的幾條稍作解釋:
Exec代表應用程式的位置【視實際情況修改】
Icon代表應用程式圖示的位置【視實際情況修改】
Terminal的值為false表示啟動時不啟動指令行視窗,值為true表示啟動指令行視窗【建議為false】
Categories這裡的内容決定建立出的起動器在應用程式菜單中的位置,按照上面的寫法建立的起動器将出現在應用程式-Internet中,以 此類推,如果想在應用程式-辦公中建立起動器,上述最後一行應該寫成:Categories=Application;Office;
3)此時會在/usr/share/applications中看到eclipse的快捷方式
4)給該檔案加上啟動權限。
Chmod +x eclipse.desktop
這樣一個快捷方式就完成了。