相关配置文件: /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@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文件所执行程序的查询路径是什么? 答:执行程序时路径设置在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 [Desktop Entry] Encoding=UTF-8 //编码方式 Name=aMule //应用程序名称, Comment=aMule //鼠标经过上面时的提示名称 Exec=amule //可执行应用程序的实际名称 Icon=amule.png //显示在菜单项中的图标,可以为空 Terminal=false //是否使用终端 Type=Application //分类 Categories=Application;Network; //分类
.desktop文件通过上述Exec=amule知道了应用程序的名称,并且区分大小写,并在PATH环境变量所默认设定的路径中查找,查找到即可执行,查找不到则报错,除非用户自己在PATH中设定了此应用程序所处的特殊路径。 |