在linux中,由于地位的特殊性,在安裝應用程序的時候是區別與windows桌面操作系統的。在作為服務器的時候往往不會啟用桌面,因此想要在applications列表中查找應用程序的需求自然不復存在,但是在個人開發或者調試的時候大多使用的是linux桌面版本。除了通過linux的軟件包管理器安裝的應用程序,凡是通過
源碼編譯安裝
、解壓二進制
等形式安裝的軟件將無法在applications列表中被查找。事實上這種情況我們往往是創建軟連接到/usr/bin
目錄中。接下來我們要簡單的實現將我們自定義安裝的應用程序添加到applications列表中。
linux是如何管理應用程序列表的
添加一個應用程序到applications列表中是很簡單的,關鍵是要明白其中的道理,知其然,更知其所以然,方能舉一反三。以下圖為例,這是一張在linux中進行應用程序搜索時的界面:
上圖所展現的效果就是我們要達到的目的,將應用程序添加到這個區域內,以便快速的被檢索到。盡管linux已經可以十分方便的在終端進行程序搜索,但是我們認為基于桌面方式的應用程序列表的搜索依然是有必要的。這對于在一定范圍內提高效率是有建設意義的,同時對于linux的普及也有具有積極的作用。
要達到這個目的,我們需要先弄清楚linux是如何管理應用程序的。我們先觀察一個特殊的目錄,這個目錄位于:/usr/share/applications/
。根據目錄的名稱可以得到很大的啟示,share是共享的,表明這里的設置范圍是系統級別的,share下面的applications意義也十分明顯,就是應用程序。接下來我們觀察applications目錄中的內容:
你一定可以看到很多以*.desktop為后綴名的文件,沒錯,就是這些文件,linux通過這個目錄下的配置文件來管理應用程序。當然了,linux對應用程序的管理和搜索不會如此簡單(盡管這是我們希望達到的目的),但是這對于我們自定義程序已經足夠了。
值得一提的是,你即已經懂得linux管理應用程序瀏覽的原理,那么就可以對比一下windows的管理方式,windows利用快捷方式,實際上這也可以看做一種快捷方式,當你通過文件瀏覽器進入這個目錄的時候,我們是可以雙擊或者單擊這些desktop文件的,這也能運行一個程序,原理十分簡單,那就是該標準文件已經具備一切可以運行的數據結構。
接下來我們要做的就是在這個目錄下面創建一個.desktop配置文件,我們以java的ide軟件idea intellij
為例,將這個通過解壓的ide程序添加到applications列表中。
首先,在/usr/share/applications/
目錄下創建一個idea.desktop文件。
為了方便我們可以隨便在該目錄下復制一個desktop文件即可,然后重命名并且打開這個文件進行編輯。
其次,我們來觀察這個文件的必要內容:
接下來我們依次介紹每個配置節點的意義:
[Desktop Entry] 必填,表明該文件是一個Desktop Entry文件,節點意思十分明顯,桌面入口。Desktop Entry實際上是一個文件標準,該標準由FreeDesktop.org制定;
Comment 這是應用程序的描述,通常會在搜索應用程序的界面看到這個描述(鼠標放到應用程序圖標上時);
Comment[zh_CN] 同樣的作用,表明使用中文。同理,[]里面可以書寫多國語言;
Exec 必填,應用程序啟動的指令,可以帶上參數運行,實際上這與在終端的啟動指令是一樣的;
GenericName 應用程序通用名稱,他會顯示在搜索結果以及非搜索結果中;
MimeType 可選,熟悉web開發的人員應當十分熟悉,這是表明映射;
Name 必填,該值定義了應用程序的名稱,這個設置同理可以使用Name[en]等字樣,在不同的語言環境下面,會使用對應的Name值;
StartupNotify 可選,該值是bool值([true | false]),這個設置只有在
Type
類型是application
的時候才有意義;Terminal 可選,該值也是bool值([true | false]) ,并且只有在
Type
為application
時有意義,該值指出了相關應用程序(Exec值)是否需要在終端中運行;Type 必填,這是一個枚舉值,它定義了desktop文件的類型。常見的數值是
Application
和Link
。Application
表示當前文件指向一個應用程序,而Link
表明當前文件指向一個URL,即鏈接文件;Categories 可選,只有在
Type
類型是Application
時才有意義。Categories
的值表明了相關應用程序在菜單中顯示的類別,關于類別的定義參見Desktop Specification Menu
的具體定義,如圖:
- Icon 可選,該值定義了當前desktop文件在應用程序瀏覽器中所顯示的圖標,如果該值給定的是一個絕對路徑,那么該路徑下的圖標將會被直接使用,反之,linux系統將使用
Icon Theme Specifacation
在系統指定的圖標目錄下定位所需要使用的圖標文件。
還有很多的節點配置這里不做過多介紹,相信讀者看到上述的定義已經可以做到舉一反三的查詢。