1. 簡介
linux桌面環境下生成應用圖標和應用菜單項的方式是使用一種Desktop Entry
文件。在應用菜單中顯示的應用都有對應的Desktop Entry
, 其文件後綴名爲.desktop
,一般位於$XDG_DATA_DIRS/applications/
目錄下。其中$XDG_DATA_DIRS
是一個環境變量,儲存了放置應用程序.desktop
文件的目錄.
january@january-PC:~$ echo $XDG_DATA_DIRS
/home/january/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
注意:.desktop
文件在$XDG_DATA_DIRS
中目錄的applications
目錄下, 在某些系統中$XDG_DATA_DIRS
變量可能爲空
2. 顯示一個可啓動的圖標
[Desktop Entry]
Type=Application
Name=Android Studio
Icon=/home/january/applications/android-studio/bin/studio.png
Exec=/home/january/applications/android-studio/bin/studio.sh
Terminal=false
[Desktop Entry]
是組名稱,在規範文檔中說明了必須放在所有屬性前,其前面只能有註釋
Type
表示Desktop Entry類型,有Application
, Link
和Directory
三種,使用Application表示可執行文件
Name
是圖標下邊顯示的名稱
Icon
是圖標文件的路徑,推薦使用png
Exec
是啓動命令,一般爲可執行文件的路徑,可以帶有參數
Terminal
表示是否在終端中運行
3. 稍微詳細一點
# 註釋(comments)
[Desktop Entry]
Type=Application
Name=Android Studio
Version=3.2.1
GenericName=Android IDE
Comment=安卓集成開發環境
Categories=Development;IDE;
Icon=/home/january/applications/android-studio/bin/studio.png
Exec=/home/january/applications/android-studio/bin/studio.sh
Path=/home/january/applications/android-studio/bin
Terminal=false
使用#
開頭的行來表示註釋
Version
表示版本
GenericName
表示軟件的通用名稱,比如瀏覽器,輸入法,殺毒軟件之類
Categories
指定軟件的類型,比如辦公軟件,教育軟件,開發軟件等等,會被系統用於分類顯示
Comment
用於對軟件功能進行進一步描述
Path
指定程序運行的工作路徑
更詳細的說明請參考Desktop Entry Specification
PS: .desktop
文件不需要可執行權限來啓動程序,推薦將權限設置爲644
4. 添加自己的應用到系統應用列表中
使用xdg-desktop-menu
命令來將自己編寫的Desktop entry文件添加到系統應用列表,使用xdg-desktop-icon
來將自己的Desktop entry文件添加到桌面上。
# 安裝到應用列表
# 我們一般不會填vendor屬性,使用novender選項
xdg-desktop-menu install --novendor myDesktopEntry.desktop
# 卸載
xdg-desktop-menu uninstall myDesktopEntry.desktop
# 安裝到桌面
xdg-desktop-icon install --novendor myDesktopEntry.desktop
# 卸載
xdg-desktop-icon uninstall myDesktopEntry.desktop
5. 以圖爲證
我沒有設置圖標,所以圖標是默認圖標