Fedora每日一篇:关于Fedora的菜单

Fedora每日一篇:关于Fedora的菜单


Fedora应用程序里面列出了许多不同的程序,包括不同桌面环境的程序,如GNOME,KDE和XFCE,这些不同的桌面环境本身都有不同的菜单层次结构,Fedora的菜单试图寻找一种统一的界面效果和方式,而且每个菜单项有不同的语言。另外每个Fedora发布的菜单结构会略有不同,这些都是怎么实现的呢?
关于桌面系统菜单的共同规范由 freedesktop.org定义。每个Fedora RPM包有菜单项定义文件(有菜单的才有).desktop文件。例如,下面是 evolution 包的.desktop文件列表,

$ rpm -ql evolution | grep desktop
/usr/share/applications/redhat-evolution-calendar.desktop
/usr/share/applications/redhat-evolution-contacts.desktop
/usr/share/applications/redhat-evolution-mail.desktop
/usr/share/applications/redhat-evolution-tasks.desktop
/usr/share/applications/redhat-evolution-calendar.desktop
/usr/share/applications/redhat-evolution-contacts.desktop
/usr/share/applications/redhat-evolution-mail.desktop
/usr/share/applications/redhat-evolution-tasks.desktop

第一个/usr/share/applications/redhat-evolution-calendar.desktop包含关于Calendar菜单项的内容,内容如下 (一些内容被移除了):

[Desktop Entry]
Name=Calendar
Name[es]=Calendario
Name[fi]=Kalenteri
Name[fr]=Calendrier
Comment=Manage your schedule using Evolution
Comment[es]=Planee sus actividades con Evolution
Comment[fi]=Hallitse kalenteriasi Evolutionilla
Comment[fr]=Gérer votre programme à l'aide d'Evolution
Exec=evolution --component=calendar
Icon=stock_calendar
Terminal=0
Type=Application
Encoding=UTF-8
Categories=X-Red-Hat-Base;X-Red-Hat-Base-Only;Office;Application;
StartupNotify=True
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=Evolution
X-GNOME-Bugzilla-Version=2.10
X-GNOME-Bugzilla-Component=Calendar
X-GNOME-Bugzilla-OtherBinaries=evolution-data-server-1.10;evolution-exchange-storage;evolution-alarm-notify;

该文件包含程序的名字和描述,并且是不同的语言版本的。其他行也包含了执行命令和图标(图标不一定是icon文件), 程序分类和是否支持启动通知(启动程序时告诉用户正在启动...程序)。
X-GNOME-Bugzilla- entries 部分属于桌面规范的一些例子,其他程序可以忽略这些。这些信息可以用于显示程序的菜单项,控制面板图标项或桌面图标。.desktop文件的位置决定显示的方式,简单的把该文件copy到~/Desktop就可以由菜单项生成一个桌面图标。

菜单位置安排决定于控制文件 /etc/xdg/menus。这些文件是由 http://standards.freedesktop.org/menu-spec/latest/ 定义的XML格式配置文件. 这些文件定义了菜单组织的方式,包括菜单分类,目录等标准的遵循。单个的.desktop文件可以简单用OnlyShowIn和NotShowIn来决定是否在特定的桌面环境中显示。
例如, /etc/xdg/menus/applications.menu中关于Office菜单的定义:


Office
Office.directory


Office

Calendar菜单项因为在/usr/share/applications/redhat-evolution-calendar.desktop文件中定义了属于Office类,所以会被显示在这里。关于 标识的解释: 中的内容是逻辑上与关系。而这里只有一个值,不能很说明问题。看另外一个问题:




Accessories
Accessories.directory


Utility

System

这个例子说明附件子菜单包含所有标识为工具类的菜单项除了(NOT)同时还被标识为系统类的。Utility AND NOT System! 逻辑与!

Comments

Popular posts from this blog

Freeware Software Top 300 from winAddons.Com!

What is DevOPS?

RPM Build Tips!