相关配置文件:

/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中设定了此应用程序所处的特殊路径。