相关配置文件:
/usr/share/applications目录中的*.desktop文件
相关目录:
$HOME/.config/menus
/etc/xdg/menus
/usr/share/desktop-directories
修改后一般要更新数据库:
updatedb,update-desktop-database
update-desktop-database和update-desktop-*系列程序都位于xdg-utils包中
--------------------------------------------------------------------------------------------------------------------------
qt4-qtconfig位于System-Administration,现在要把它更改到Applications-->Programming菜单下面:
更改(vim/usr/share/applications/qt4-qtconfig.desktop)其中的
Categories=Qt;Settings;为Categories=Qt;Development;
为何不是Categories=Qt;Programming;呢?
切换到/usr/share/desktop-directories目录下面:
[root@localhostdesktop-directories]#grepProgramming*
Development.directory:Name=Programming
Development.directory:Name[en_CA]=Programming
Development.directory:Name[en_GB]=Programming
Development-More.directory:Name=MoreProgrammingTools
Development-More.directory:Name[en_GB]=MoreProgrammingTools
打开Development.directory文件,开头如下
[DesktopEntry]
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--->qt4config
(rpm-qixdg-utils-1.0.2-2.fc8)Thefollowingscriptsareprovidedatthistime:
*xdg-desktop-menuInstalldesktopmenuitems
*xdg-desktop-iconInstalliconstothedesktop
*xdg-icon-resourceInstalliconresources
*xdg-mimeQueryinformationaboutfiletypehandlingand
installdescriptionsfornewfiletypes
*xdg-openOpenafileorURLintheuser'spreferredapplication
*xdg-emailSendmailusingtheuser'spreferrede-mailcomposer
*xdg-screensaverControlthescreensaver
===========================================
[root@localhostmenus]#pwd
/etc/xdg/menus
[root@localhostmenus]#ll
total60
-rw-r--r--1rootroot12282Dec616:01applications.menu
drwxr-xr-x2rootroot4096Nov917:16applications-merged
-rw-r--r--1rootroot488Jul616:58gnome-screensavers.menu
-rw-r--r--1rootroot279Sep102005kde-information.menu
-rw-r--r--1rootroot288Sep102005kde-screensavers.menu
-rw-r--r--1rootroot2198Aug1015:03kde-settings.menu
-rw-r--r--1rootroot3020Oct1923:53preferences.menu
drwxr-xr-x2rootroot4096Oct1923:53preferences-merged
drwxr-xr-x2rootroot4096Nov917:19preferences-post-merged
-rw-r--r--1rootroot1241Oct1923:53server-settings.menu
-rw-r--r--1rootroot1127Oct1923:53settings.menu
-rw-r--r--1rootroot920Oct1923:53start-here.menu
-rw-r--r--1rootroot3294Oct1923:53system-settings.menu
applications.menu文件可以设置在菜单项中是否包含某个菜单项,甚至可以exclude.
疑问).desktop文件所执行程序的查询路径是什么?
答:执行程序时路径设置在PATH环境变量中,.desktop文件通过其中的exec来指定要执行的应用程序,并在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文件是如何执行可执行应用程序的?
答:可以先看一个简单的.desktop文件内容:
[root@localhost~]#cat/usr/share/applications/amule.desktop
[DesktopEntry]
Encoding=UTF-8
//编码方式
Name=aMule
//应用程序名称,
Comment=aMule
//鼠标经过上面时的提示名称
Exec=amule
//可执行应用程序的实际名称
Icon=amule.png
//显示在菜单项中的图标,可以为空
Terminal=false
//是否使用终端
Type=Application
//分类
Categories=Application;Network;//分类
.desktop文件通过上述Exec=amule知道了应用程序的名称,并且区分大小写,并在PATH环境变量所默认设定的路径中查找,查找到即可执行,查找不到则报错,除非用户自己在PATH中设定了此应用程序所处的特殊路径。