相關配置文件:
/usr/share/applications目錄中的 *.desktop文件
相關目錄:
$HOME/.config/menus
/etc/xdg/menus
/usr/share/desktop-directories
修改后一般要更新數(shù)據(jù)庫:
updatedb, update-desktop-database
update-desktop-database和update-desktop-*系列程序都位于xdg-utils 包中
--------------------------------------------------------------------------------------------------------------------------
qt4-qtconfig位于System-Administration,現(xiàn)在要把它更改到Applications-->Programming菜單下面:
更改(vim /usr/share/applications/qt4-qtconfig.desktop)其中的
Categories=Qt;Settings;為 Categories=Qt;Development;
為何不是Categories=Qt;Programming;呢?
切換到/usr/share/desktop-directories目錄下面:
[root@localhost desktop-directories]# grep Programming *
Development.directory:Name=Programming
Development.directory:Name[en_CA]=Programming
Development.directory:Name[en_GB]=Programming
Development-More.directory:Name=More Programming Tools
Development-More.directory:Name[en_GB]=More Programming Tools
打開Development.directory文件,開頭如下
[Desktop Entry]
Name=Programming
....................
說明Categories=Development在菜單中對應的就是Programming菜單目錄。
最后,Categories=Qt;Development;同樣可以寫成Categories=Development;
如果想在Applications菜單項中添加一個新的菜單目錄,可以通過添加/etc/xdg/menus目錄中的條目來完成;
其中Menu>二級目錄中的條目正好和桌面Applications中的條目相等。對于條目內容為空的,在Applications中將不會顯示;比如在applications.menu文件中寫有Education目錄菜單,但是因為在/usr/share/applications目錄下面列舉的程序沒有程序使用
Categories=Education;
所以,在Applications目錄菜單中,沒有Education子目錄菜單。嘗試修改任何一個.desktop文件(qt4- qtconfig.desktop),把Categories改成Education,立刻就會在Applications目錄菜單中顯示出 Applications-->Education--->qt4 config
(rpm -qi xdg-utils-1.0.2-2.fc8)The following scripts are provided at this time:
* xdg-desktop-menu Install desktop menu items
* xdg-desktop-icon Install icons to the desktop
* xdg-icon-resource Install icon resources
* xdg-mime Query information about file type handling and
install descriptions for new file types
* xdg-open Open a file or URL in the user's preferred application
* xdg-email Send mail using the user's preferred e-mail composer
* xdg-screensaver Control the screensaver
===========================================
[root@localhost menus]# pwd
/etc/xdg/menus
[root@localhost menus]# ll
total 60
-rw-r--r-- 1 root root 12282 Dec 6 16:01 applications.menu
drwxr-xr-x 2 root root 4096 Nov 9 17:16 applications-merged
-rw-r--r-- 1 root root 488 Jul 6 16:58 gnome-screensavers.menu
-rw-r--r-- 1 root root 279 Sep 10 2005 kde-information.menu
-rw-r--r-- 1 root root 288 Sep 10 2005 kde-screensavers.menu
-rw-r--r-- 1 root root 2198 Aug 10 15:03 kde-settings.menu
-rw-r--r-- 1 root root 3020 Oct 19 23:53 preferences.menu
drwxr-xr-x 2 root root 4096 Oct 19 23:53 preferences-merged
drwxr-xr-x 2 root root 4096 Nov 9 17:19 preferences-post-merged
-rw-r--r-- 1 root root 1241 Oct 19 23:53 server-settings.menu
-rw-r--r-- 1 root root 1127 Oct 19 23:53 settings.menu
-rw-r--r-- 1 root root 920 Oct 19 23:53 start-here.menu
-rw-r--r-- 1 root root 3294 Oct 19 23:53 system-settings.menu
applications.menu文件可以設置在菜單項中是否包含某個菜單項,甚至可以exclude.
疑問).desktop文件所執(zhí)行程序的查詢路徑是什么?
答:執(zhí)行程序時路徑設置在PATH環(huán)境變量中,.desktop文件通過其中的exec來指定要執(zhí)行的應用程序,并在PATH所定義的路徑中查找相應的應用程序??梢酝ㄟ^如下方式查看:
[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
疑問).desktop文件是如何執(zhí)行”可執(zhí)行應用程序“的?
答:可以先看一個簡單的.desktop文件內容:
[root@localhost ~]# cat /usr/share/applications/amule.desktop
[Desktop Entry]
Encoding=UTF-8
//編碼方式
Name=aMule
//應用程序名稱,
Comment=aMule
//鼠標經過上面時的提示名稱
Exec=amule
//可執(zhí)行應用程序的實際名稱
Icon=amule.png
//顯示在菜單項中的圖標,可以為空
Terminal=false
//是否使用終端
Type=Application
//分類
Categories=Application;Network; //分類
.desktop文件通過上述Exec=amule知道了應用程序的名稱,并且區(qū)分大小寫,并在PATH環(huán)境變量所默認設定的路徑中查找,查找到即可執(zhí)行,查找不到則報錯,除非用戶自己在PATH中設定了此應用程序所處的特殊路徑。