http://www.debian.org/doc/manuals/debian-reference/
一直都没有搞懂 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
解释:
说的就是到默认的路径查找desktop 文件,也就是上面列出的目录。
到默认的路径查找directory 文件
可以直接插入一个 desktop 文件条目
可以直接插入一个指定 name 的 menu
合并所有其它 menu
说的是一个类别,它会扫描所有的 desktop 文件(可以去看一个 desktop 文件,
它一般有一个变量就指定了程序应该属于的分类)。把它包含在 标识之间就是说在这里
要插入所有 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 位版本为例,保存应用程序快捷入口的位置,大致有下面两个:
www.2cto.com
;保存用户的应用程序快捷入口
~/.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
前面三个文件保存全局设置,后面两个保存用户设置。如果要修改 某个类型文件的关联程序,可以通过
直接修改这几个文件的方式实现。
安装完GNOME后,在应用程序栏中有一个“Debian菜单”项,默认是空白的,什么菜单项也没有。这个“Debian菜单”栏是Debian系统特有的,它参考了一些窗口管理器(FVWM2)的菜单管理方式,设计成一个通用的Debian菜单管理系统,不论你使用什么桌面环境或窗口管理器,在“Debian菜单”栏中都能找到Debian系统所安装的软件。要使用该菜单,需安装menu软件包,并用update-meuns命令生成Debian菜单项。
[Note]
第一次运行update-menus后,需重启X会话才能生成Debian菜单。
基本上每一个Debian系统的应用程序都会有一个菜单配置文件,用以定义该程序的菜单项名称、位置和命令行选项等参数。该配置文件一般位于/usr/lib/menu、/etc/menu或~/.menu目录下。下面是Gnumeric程序菜单项的配置文件格式示例:
?package(gnumeric):\ 定义软件包名,每条配置信息要在一行中写完,所以要用反斜杠续行
needs="X11"\ 定义该菜单项需在X11环境中使用
section="Apps/Math"\ 定义菜单项的路径位置
title="Gnumeric"\ 定义菜单项的标题
command="gnumeric" \ 定义命令和选项
hints="Gnome,Spreadsheets" \ 定义一些提示信息
icon="/usr/share/pixmaps/gnumeric.xpm" 定义菜单项的图标
该配置文件一般由Debian软件包管理者维护,在软件安装时通过软件配置脚本,把配置文件拷贝到相应的menu路径,并调用update-menus命令更新“Debian菜单”栏。这样,每安装一个新软件包,在“Debian菜单”栏就可找到它的菜单项了,且不受桌面系统或窗口管理器的限制,实现了统一的菜单界面接口。
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
Ubuntu 下使用“主菜单”编辑器编辑菜单
Ubuntu 下使用“主菜单”编辑器编辑菜单,突然所有菜单项变为空了
紧接着发现“应用程序”菜单下什么都没有了,而且菜单编辑器也不能再打开!
解决办法:
点“位置”--主文件夹--在地址栏输入“~/.config/menus/“
打开“applications.menu"文件
将如下代码输入并 保存:
<!DOCTYPE Menu
PUBLIC '-//freedesktop//DTD Menu 1.0//EN'
'http://standards.freedesktop.org/menu-spec/menu-1.0.dtd'>
<Menu>
<Name>Applications</Name>
<MergeFile type="parent">/etc/xdg/menus/applications.menu</MergeFile>
<Menu>
<Name>Development</Name>
<Include>
<Filename>python2.5.desktop</Filename>
</Include>
<AppDir>/home/user/.local/share/applications</AppDir>
</Menu>
</Menu>
其中倒数第三行的user改为当前用户名。
Ubuntu怎么修改开始菜单
方法一:直接在Ubuntu终端输入命令alacarte。可以任意增、改、隐藏、显示菜单,但无法删除菜单,即使拥有root权限。
方法二:注意几个目录和文件。
/usr/share/applications/下的desktop文件
/usr/share/applications/mimeinfo.cache文件
~/.local/share/applications下的desktop文件
~/.local/share/applications/default.list目录下的文件
~/.local/share/applications/mimeinfo.cache文件
/etc/gnome/defaults.list文件
其中default.list文件保存的是文件的打开方式,比如txt文档用什么程序打开之类。自然/etc下的是全局的文件打开方式,.local下的是个人的文件打开方式。
desktop文件是菜单项,就是出现在Application、System下的菜单项。/usr下的是全局的菜单项,.local下的是个人的菜单项。
cache文件全局的文件打开方式和个人的文件打开方式缓存
想添加一个菜单项,到/usr/share/applications/下随便打开一个desktop文件,照着改就行了。
怎样把自定义的菜单加入到自己想去的菜单项下呢?比如加到Programming下,如果想增加一个顶级目录,即Application下的第一层目录。
在Linux桌面系统,用户也可以像在Windows平台下,通过点击位于桌面或菜单上的快捷方式轻松找开目录应用程序。在Linux KDE和Linux GNOME桌面系统都使用Desktop Entry文件标准来描述程序启动配置信息