CentOS 5.5 下手工建立系統功能表中應用程式的“捷徑”
9分鐘前 標籤: 捷徑 CentOS 手工 菜單 Linux
“捷徑”這個詞是借用 Windows 下的說法,但其在介面上的表現就是一個功能表項目,點擊以後會開啟視窗應用程式,比如瀏覽器、終端視窗等。
在 CentOS5.5 下,每個功能表項目都用路徑 /usr/share/applications 下的一個文字檔來描述,這些檔案被稱為“案頭設定檔”,檔案的命名為 xxxxx.desktop,可見尾碼就是案頭的意思。案頭設定檔如果位於這裡,可以建立一個符號連結指向它,符號連結的檔案名稱格式也是 xxxxxx.desktop。
比如,“應用程式/編程”分組下,有一個功能表項目“AT-SPI Browser”,對應檔案名稱是 fedora-sniff.desktop。既然是一個文字檔,我們用 gedit 文字編輯器開啟看一看:
[root@localhost applications]# gedit fedora-sniff.desktop
內容如下:
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=AT-SPI Browser
Name[en_CA]=AT-SPI Browser
Name[en_GB]=AT-SPI Browser
Comment=Browse your Assistive Technology-enabled desktop
Comment[en_CA]=Browse your Assistive Technology-enabled desktop
Comment[en_GB]=Browse your Assistive Technology-enabled desktop
Exec=sniff
Terminal=false
Type=Application
Icon=dogtail-head.svg
StartupNotify=true
Categories=Application;Development;X-Fedora;
X-Desktop-File-Install-Version=0.10
GenericName[zh_CN]=
一目瞭然和無關緊要的東西不解釋了,看看重要的地方:
Name=AT-SPI Browser 定義了功能表項目顯示的文本。Name[en_CA]和Name[en_GB]定義了其它語言中的字串。
Exec=sniff 定義了可執行檔的名字,就是即將開啟的應用程式。
Icon=dogtail-head.svg 定義了菜單文字前顯示的表徵圖。
Categories=Application;Development;X-Fedora; 定義了菜單的分組,與“應用程式/編程”功能表項目對應。
再來看一個例子。我的 CentOS 中還安裝了 Flashget for Linux,在系統功能表的“應用程式/Internet”下。我們開啟案頭設定檔 flashget.desktop 來看看常值內容:
[Desktop Entry]
Version=1.0.2
Encoding=UTF-8
Name=FlashGet
Comment=網際快車
Exec=/usr/bin/flashget
Icon=/usr/share/flashget/flashget.png
Terminal=false
Type=Application
Categories=Application;Network;FlashGet;
StartupNotify=true
Name[zh_CN]=網際快車FlashGet
GenericName[zh_CN]=網際快車FlashGet
Comment[zh_CN]=網際快車FlashGet
其中的可執行檔、案頭設定檔都是由 rpm 包安裝時拷貝到各自的路徑下的。我們參考一下 rpm 包裡的檔案分布:
[root@localhost home]# rpm -qlp flashget-1.0.2-0_cn.noarch.rpm
warning: flashget-1.0.2-0_cn.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 29c8d3f0
/usr/bin/flashget
/usr/share/applications/flashget.desktop
/usr/share/flashget/README
/usr/share/flashget/flashget
/usr/share/flashget/flashget.png
可見確實是和菜單設定檔是一致的。rpm 包裡包含什麼檔案、檔案安裝到何處,是由軟體作者根據需要和要求決定的。然後用 rpm 打包工具產生的軟體包。其中 flashget.desktop 檔案可以手工編輯,也可以用軟體來輔助產生,但必須按照不同版本 Linux 的要求拷貝到指定的路徑。
知道了以上的玄機,我們就可以手工為一些“綠色”軟體,比如 QQ for Linux,來建立相應的系統功能表項,以方便使用。
比如,我安裝的 Navicat9.0.12(MySQL管理用戶端) 位於 /home/navicat9_mysql_en 路徑下,可執行檔是 /home/navicat9_mysql_en/start_navicat(註:基於wine啟動並執行),於是我在 /usr/share/applications 下建立文字檔 navicat.desktop,內容如下:
[Desktop Entry]
Version=9.0.12
Encoding=UTF-8
Name=Navicat9.0.12
Comment=Navicat9.0.12-MySQL資料庫管理員
Exec=/home/navicat9_mysql_en/start_navicat
Icon=dogtail-head.svg
Terminal=false
Type=Application
Categories=Application;Development;Navicat;
StartupNotify=true
Name[zh_CN]=Navicat9.0.12 MySQL 資料庫管理器
GenericName[zh_CN]=Navicat-MySQL資料庫管理員
Comment[zh_CN]=Navicat-MySQL資料庫管理員
於是,在“應用程式/編程”菜單分組下出現了功能表項目“Navicat9.0.12 MySQL 資料庫管理器”,點擊以後就會開啟 Navicat for MySQL 資料庫管理器程式。
可以想見的是,建立案頭設定檔這些簡單又經常重複的工作,最好是由開發工具開完成。但開發工具也是由人開發的,程式員們也是在釐清了這些規則以後,才著手編寫開發工具的。程式最初就是為了代替重複性的繁雜勞動而誕生的。
後記:進一步發掘的話,需要瞭解“Application;Development;”是在哪裡定義的。如果一個應用程式需要建立自己的菜單分組的話,就需要瞭解這些。
作者:張慶(網眼) 西安 PHP 教育培訓中心 2010-8-21
來自“網眼視界”:http://blog.why100000.com
作者微博:http://t.qq.com/zhangking
“十萬個為什麼”電腦學習網:http://www.why100000.com