一直都没有搞懂 linux 桌面菜单和文件关联的问题,这下研究了一下,写点小结。
接触 linux 桌面就会与菜单和文件关联扯上关系,那怎么手动修改呢。
菜单:
首先说菜单,菜单包含三个部分来完成。menu 文件用来把 desktop 文件集中起来形成菜单的样式。directory 文件用来描述菜单的目录层次结构,因为只有 desktop 文件的话就没有目录的层次结构了。
menu 文件的位置
全局:/etc/xdg/menus/
个人:~/.config/menus/
directory 文件的位置
全局:/usr/share/desktop-directories/
个人:~/.local/share/desktop-directories/
desktop 文件的位置
全局:/usr/share/applications/
个人:~/.local/share/applications/
例如 xfce4 的 menu 文件 /etc/xdg/menus/xfce-applications.menu
解释:
<DefaultAppDirs/> 说的就是到默认的路径查找desktop 文件,也就是上面列出的目录。
<DefaultDirectoryDirs/> 到默认的路径查找directory 文件
<Filename> 可以直接插入一个 desktop 文件条目
<Menuname>可以直接插入一个指定 name 的 menu
<Merge type="all"/> 合并所有其它 menu
<Category> 说的是一个类别,它会扫描所有的 desktop 文件(可以去看一个 desktop 文件,它一般有一个变量就指定了程序应该属于的分类)。把它包含在 <Include> 标识之间就是说在这里要插入所有 Category 是指定值的程序。
文件关联:
按照 http://forum.ubuntu.org.cn/search.php?search_id=egosearch [+] 的说法,
/etc/gnome/defaults.list 保存了全局的打开方式
~/.local/share/applications/defaults.list 保存了个人的打开方式
当两着不一致是,优先采用局部的个人设置。
/usr/share/applications/mimeinfo.cache
~/.local/share/applications/mimeinfo.cache
这两个分别是全局的和局部的打开方式缓存
defaults.list 不是每个桌面环境都有的, xfce4 就没有,所以就不可用。mimeinfo.cache 都就是缓存了,所以一段时间后会刷新,更改它也不起作用。事实上,需要修改的是 desktop 文件。
对于 opera 来说,opera.desktop 文件的最后几行如下
...
Exec=opera %u
Terminal=false
Categories=Application;Qt;Network;WebBrowser;X-Ximian-Main;X-Ximian-Toplevel
Icon=opera.png
MimeType=text/html;text/xml;application/xhtml+xml;application/x-mimearchive;application/xml;application/rss+xml;application/rdf+xml;image/svg+xml;image/gif;image/jpeg;image/png;image/x-bmp;image/x-xbm;application/mime
Comment=Web Browser
Type=Application
看它的 MimeType 属性,可以看到它带了太多的关联,一般我都会去掉它带的 image 关联。上面也可以看到 opera 是属于哪个 Categories,所以我们一般都可以在 Network 目录项中看到它。
Changelog
==================
Linux Gnome桌面环境下菜单项 desktop 文件的保存位置
默认配置下,Linux Gnome 桌面环境下会有三个顶级下拉菜单作为应用程序和系统工具的快捷入口(Note: 后缀为 desktop 的文件,该类型的文件有固定的格式,具体格式可以参考下面列出的目录中的文件和参考中给出的链接指向的文章),这三个菜单分别是:应用程序,位置,系统。 “应用程序”菜单下是按类别分组的应用程序的快捷入口,“位置“菜单下是用户目录和其他已挂载或者可挂载的分区,“系统"目菜单下则是用户配置工具和系统 配置工具的快捷入口。
通常情况下,用户安装的应用程序,一般都会在这三个顶级菜单下的某个分类里创建对应的应用程序快捷入口,但凡事总有个例外,更何况各个linux发 行版本身也可能会对 gnome 做一些调整,desktop 文件以及字符编码格式,甚至 desktop 文件中指定的应用程序图标不存在等诸多原因,导致安装的程序创建的菜单无法正常显示也就不算奇怪了。
以 Ubuntu 10.04 LTS amd64 位版本为例,保存应用程序快捷入口的位置,大致有下面两个:
;保存用户的应用程序快捷入口
~/.local/share/applications
;保存全局的应用程序快捷入口
/usr/share/applications
以 root 权限安装的程序,其快捷入口大多创建在 /usr/share/applications 目录下,也可以创建在 ~/.local/share/applications 目录,而以用户权限安装的程序,则只能将快捷入口创建在 ~/.local/share/applications 目录下。
使用 系统-首选项-主菜单 工具(程序名为 alacarte)创建的应用程序的快捷入口,创建在 ~/.local/share/applications 目录下,并默认以 alacarte-made[-X].desktop 的格式命名,其中 X 是数字,用户可以随后重命名这个文件,菜单上显示的内容不会改变。而在 主菜单 工具中删除的快捷入口,也不会真的删除对应的 desktop 文件,而只是将对应文件中的 Hide 字段的值改为 true。
知道了这些,如果再有某个快捷入口显示不正常,也就大致能知道在哪里找到对应的文件,再比对其他正常的文件,就能修改错误,让菜单显示正常了。
除了上面存储应用程序快捷入口的两个目录,还有几个文件用于存储指定类型文件的默认的打开程序,即文件关联程序,这几个文件分别是
/etc/gnome/defaults.list
/usr/share/applications/defaults.list
/usr/share/applications/mimeinfo.cache
~/.local/share/applications/mimeapps.list
~/.local/share/applications/mimeinfo.cache
前面三个文件保存全局设置,后面两个保存用户设置。如果要修改 某个类型文件的关联程序,可以通过直接修改这几个文件的方式实现。