Version 1.1,最新版
20 August 2016
本文档定义了如何构建用户可见的应用程序层次结构,通常以菜单的形式显示。它允许第三方软件添加适用于所有桌面的菜单项,并允许系统管理员以影响所有桌面的方式编辑菜单。
基本方案非常简单。有关每个应用程序(菜单项)的信息存储在桌面入口文件中(请参阅桌面入口文件标准)。然后,XML配置文件定义菜单项的分层排列(布局)和实际需要显示的菜单项。
由于即要支持传统桌面入口的层次结构,又要允许第三方扩展菜单布局,所以需要合并两个菜单布局。
除了严格定义每个菜单的规范之外,本规范还提到了许多布局/呈现方式。这一部分规范是可选的,实际上可以选择忽略这些提示。
本规范中涉及的文件根据 桌面基本目录规范 定位。
以下是此规范定义的文件:
$XDG_CONFIG_DIRS
/menus/${XDG_MENU_PREFIX}
applications.menu$XDG_CONFIG_DIRS 默认位置为 $HOME/.config : /etc/xdg
例如,它应该将$XDG_MENU_PREFIX
环境变量分别设置 为“gnome-”、“kde-”。
如果系统同时包含GNOME和KDE桌面环境,则可以决定使用gnome-applications.menu作为GNOME会话中的菜单布局,将kde-applications.menu作为KDE会话中的菜单布局。
如果用户拥有自己的${XDG_MENU_PREFIX}
applications.menu,它将取代系统的applications.menu。
$XDG_CONFIG_DIRS/menus/applications-merged/
默认合并目录包含在元素中。按照惯例,第三方可以在此位置添加新的
文件以创建自己的子菜单。请注意,根据所使用的桌面环境,使用gnome-applications.menu或kde-applications.menu;在两种情况下,仍必须使用applications-merged
作为默认合并目录。
对于除应用程序主要菜单之外的任务或菜单,可以选择使用除application.menu以外的名称的.menu文件。在这种情况下,默认合并目录名称的第一部分是从.menu文件的名称派生的。
例如,在使用preferences.menu文件来描述附加菜单的系统中,preferences.menu文件中元素中包含的默认合并目录将变为 $XDG_CONFIG_DIRS/ menus / preferences-merged /
$XDG_DATA_DIRS/applications/
该目录包含每个可能菜单项的.desktop文件。$XDG_DATA_DIRS
中的每个目录都应该被使用(即,从所有目录中收集桌面入口,而不仅仅是存在的第一个目录入口)。当两个桌面入口具有相同名称时,将使用路径中较早出现的那个。
菜单文件中的元素表示默认的桌面入口位置列表应该被扫描。如果菜单文件不包含,则不扫描这些位置。
$XDG_DATA_DIRS/desktop-directories/
此目录可能包含与菜单布局中的文件夹关联的目录入口。每个目录都应该被使用。仅使用以.directory结尾的文件; 其他文件被忽略。
菜单文件中的元素表示此默认的目录条目位置列表。如果菜单文件不包含,则不扫描这些位置。
该规范增加了三个新领域的桌面项:Categories, OnlyShowIn和NotShowIn。
该Categories
字段是用于对菜单项进行分类的字符串列表。例如,AudioVideo类别中的应用程序 可能最终出现在“声音和视频”子菜单中。附录A.注册类别 列举了标准类别。不在此文档中的类别必须以字符串“X-”作为前缀,表示它们是扩展名。类别区分大小写。
桌面入口文件应列出所有适用的类别。他们不应该列出只是模糊或可能适用的类别,因为用户最终会在六个地方看到相同的桌面入口。但通常情况下,给出的几个类别总有适用的。
该OnlyShowIn
字段是一个字符串列表,用于标识应显示在特定的环境。如果存在 OnlyShowIn
字段,则应该标明。字符串区分大小写。附录B.Registered OnlyShowIn Environments 枚举了某些常见的环境。
该NotShowIn
字段是一个字符串列表,用于标识不应显示在特定的环境。如果存在NotShowIn
字段,则应该标明。字符串区分大小写。附录B.Registered OnlyShowIn Environments枚举了某些常见的环境。
不在此文档中的环境必须以字符串“X-”作为前缀,表示它们是扩展名。环境区分大小写。
Terminal=true
这一行)的桌面入口 Categories=GNOME;Utility;
OnlyShowIn=GNOME;
菜单文件必须是格式良好的XML文件,并以扩展名“.menu”结尾。它们还应符合菜单文件DTD,这意味着不允许对文件格式进行特定的扩展。如果实现遇到不符合相关DTD的菜单文件,则可能会停止运行。请注意,关联的DTD版本可能与本文档中定义的版本不同。
当更新现有菜单文件时,可能需要将标识符更新为较新版本的DTD。永远不应将现有菜单文件的标识符更新为旧版本。为了与更新的版本保持兼容,应该忽略并保留它不知道如何处理的任何XML元素,属性和属性值。
此版本规范的菜单文件必须使用以下命名空间,公共和系统标识符:
命名空间:http://www.freedesktop.org/standards/menu
1.1的公共标识符:PUBLIC “-//freedesktop//DTD Menu 1.0//EN”
1.1的系统标识符:http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd
这是一个示例文档类型声明:
所有菜单文件必须包含文档类型声明,以便实现可以适应此规范的不同版本(因此实现可以根据DTD验证菜单文件)。
根元素是
<Menu>
<AppDir>/usr/share/applinkAppDir>
Menu>
比如:
如果作为
递归扫描,向后合并
<Menu>
<DefaultAppDirs/>
Menu>
该元素没有内容。默认包含app dir位置($datadir/applications/)的
$datadir默认为 ~/.local/share : /usr/local/share : /usr/share
<Menu>
<Directory>/usr/share/desktop-directoriesDirectory>
Menu>
该元素的内容是目录名称。递归扫描,向后合并。只加载以扩展名“.directory”结尾的文件
例如,如果/usr/share/desktop-directories指定为,则相对路径 /usr/share/desktop-directories/foo/bar.directory为 foo/bar.directory。
<Menu>
<DefaultDirectoryDirs />
Menu>
<Menu>
<Name>金山办公Name>
Menu>
必须元素。
金山办公
wps-office.directory
给定指定的 .directory文件
<Menu>
<Name>ApplicationsName>
<Directory>kf5-unknown.directoryDirectory>
<OnlyUnallocated/>
<Include>
<Not>
<And>
<Category>CoreCategory>
<Not><Category>KDECategory>Not>
And>
<Category>X-SuSE-YaSTCategory>
<Category>X-KDE-settings-hardwareCategory>
<Filename>kde-medianotifications.desktopFilename>
<Filename>kde-audioencoding.desktopFilename>
Not>
Include>
Menu>
使用元素
<Menu>
<MergeFile type="path" />
Menu>
<Menu>
<MergeDir>/usr/share/merger-dirMergeDir>
Menu>
<Menu>
<DefaultMergeDirs />
Menu>
<Move>
<Old>FooOld>
<New>BarNew>
<Old>Foo2Old>
<New>Bar2New>
Move>
<DefaultLayout>
<Merge type="menus"/>
<Merge type="files"/>
<Separator/>
<Menuname>MoreMenuname>
DefaultLayout>
<Menu>
<Name>ApplicationsName>
<Directory>Applications.directoryDirectory>
<DefaultAppDirs/>
<DefaultDirectoryDirs/>
<MergeDir>applications-mergedMergeDir>
<LegacyDir>/usr/share/applnkLegacyDir>
<DefaultLayout>
<Merge type="menus"/>
<Merge type="files"/>
<Separator/>
<Menuname>MoreMenuname>
DefaultLayout>
<Move>
<Old>FooOld>
<New>BarNew>
<Old>Foo2Old>
<New>Bar2New>
Move>
<Menu>
<Name>PreferencesName>
<Directory>Preferences.directoryDirectory>
<MergeFile>preferences.menuMergeFile>
Menu>
<Menu>
<Name>OfficeName>
<Directory>Office.directoryDirectory>
<Include>
<Category>OfficeCategory>
Include>
<Exclude>
<Filename>foo.desktopFilename>
Exclude>
Menu>
Menu>
Main Category | Description | Notes |
---|---|---|
AudioVideo | 音频、视频类相关类软件 | |
Audio | 音频 | 必须包括AudioVideo |
Video | 视频 | 必须包括AudioVideo |
Development | 编程开发 | |
Education | 教育类、学习类 | |
Game | 游戏娱乐 | |
Graphics | 用于查看,创建或处理图形的应用程序 | |
Network | 网络应用程序,需要联网才能使用的应用 | |
Office | 办公室类型 | |
Science | 科学软件 | |
Settings | 设置应用程序 | 可能出现在单独的菜单中或作为“控制中心”的一部分 |
System | 系统工具 | |
Utility | 小型实用应用,“配件” |
Additional Category | Description | Related Categories |
---|---|---|
Building | 构建应用程序的工具 | Development |
Debugger | 调试应用程序的工具 | Development |
IDE | IDE应用程序 | Development |
GUIDesigner | GUI设计应用程序 | Development |
Profiling | 分析工具 | Development |
RevisionControl | 像cvs或subversion这样的应用程序 | Development |
Translation | 翻译工具 | Development |
Calendar | 日历应用程序 | Office |
ContactManagement | 例如地址簿 | Office |
Database | 数据库 | Office or Development or AudioVideo |
Dictionary | 字典 | Office or TextTools |
Chart | 图表应用程序 | Office |
邮件 | Office or Network | |
Finance | 金融相关 | Office |
FlowChart | 流程图应用程序 | Office |
PDA | PDA管理工具 | Office |
ProjectManagement | 项目管理应用 | Office or Development |
Presentation | 演示软件 | Office |
Spreadsheet | 电子表格 | Office |
WordProcessor | 文字处理器 | Office |
2DGraphics | 基于2D的图形应用 | Graphics |
VectorGraphics | 用于查看,创建或处理矢量图形的应用程序 | Graphics;2DGraphics |
RasterGraphics | 用于查看,创建或处理栅格(位图)图形的应用程序 | Graphics;2DGraphics |
3DGraphics | 用于查看,创建或处理3-D图形的应用程序 | Graphics |
Scanning | 扫描文件/文本的工具 | Graphics |
OCR | 光学字符识别应用 | Graphics;Scanning |
Photography | 相机工具等 | Graphics or Office |
Publishing | 桌面出版应用程序和颜色管理工具 | Graphics or Office |
Viewer | 用于查看 例如图形或pdf文件的工具 | Graphics or Office |
TextTools | 文本工具实用程序 | Utility |
DesktopSettings | 桌面配置工具 | Settings |
HardwareSettings | 管理硬件组件的工具,如声卡,视频卡或打印机 | Settings |
Printing | 管理打印机的工具 | HardwareSettings;Settings |
PackageManager | 包管理器应用程序 | Settings |
Dialup | 拨号程序 | Network |
InstantMessaging | 即时消息客户端 | Network |
Chat | 聊天客户端 | Network |
IRCClient | IRC客户端 | Network |
Feed | RSS,播客和其他基于订阅的内容 | Network |
FileTransfer | FTP或P2P程序等工具 | Network |
HamRadio | HAM无线电软件 | Network or Audio |
News | 新闻阅读器或新闻自动收报机 | Network |
P2P | 一个P2P程序 | Network |
RemoteAccess | 远程管理PC的工具 | Network |
Telephony | 通过PC拨打电话 | Network |
TelephonyTools | 电话工具,拨号,管理PBX,… | Utility |
VideoConference | 视频会议软件 | Network |
WebBrowser | Web浏览器 | Network |
WebDevelopment | 适用于Web开发人员的工具 | Network or Development |
Midi | 一个与MIDI相关的应用程序 | AudioVideo;Audio |
Mixer | Just a mixer | AudioVideo;Audio |
Sequencer | 一个音序器 | AudioVideo;Audio |
Tuner | 一个调谐器 | AudioVideo;Audio |
TV | 电视应用程序 | AudioVideo;Video |
AudioVideoEditing | 编辑音频/视频文件 | Audio or Video or AudioVideo |
Player | 播放音频/视频文件 | Audio or Video or AudioVideo |
Recorder | 记录音频/视频文件 | Audio or Video or AudioVideo |
DiscBurning | 刻录光盘 | AudioVideo |
ActionGame | 动作游戏 | Game |
AdventureGame | 冒险游戏 | Game |
ArcadeGame | 街机游戏 | Game |
BoardGame | 棋牌游戏 | Game |
BlocksGame | 落块游戏 | Game |
CardGame | 纸牌游戏 | Game |
KidsGame | 适合孩子的游戏 | Game |
LogicGame | 像拼图等逻辑游戏 | Game |
RolePlaying | 角色扮演游戏 | Game |
Shooter | 射击游戏 | Game |
Simulation | 模拟游戏 | Game |
SportsGame | 体育比赛游戏 | Game |
StrategyGame | 策略游戏 | Game |
Art | 教授艺术的软件 | Education or Science |
Construction | Education or Science | |
Music | 音乐软件 | AudioVideo or Education |
Languages | 学习外语的软件 | Education or Science |
ArtificialIntelligence | 人工智能软件 | Education or Science |
Astronomy | 天文软件 | Education or Science |
Biology | 生物学软件 | Education or Science |
Chemistry | 化学软件 | Education or Science |
ComputerScience | 计算机科学软件 | Education or Science |
DataVisualization | 数据可视化软件 | Education or Science |
Economy | 经济软件 | Education or Science |
Electricity | 电力软件 | Education or Science |
Geography | 地理软件 | Education or Science |
Geology | 地质软件 | Education or Science |
Geoscience | 地球科学软件,GIS | Education or Science |
History | 历史软件 | Education or Science |
Humanities | 哲学,心理学和其他人文科学的软件 | Education or Science |
ImageProcessing | 图像处理软件 | Education or Science |
Literature | 文学软件 | Education or Science |
Maps | 用于查看地图,导航,地图,GPS的软件 | Education or Science or Utility |
Math | 数学软件 | Education or Science |
NumericalAnalysis | 数值分析软件 | Education;Math or Science;Math |
MedicalSoftware | 医疗软件 | Education or Science |
Physics | 物理学软件 | Education or Science |
Robotics | 机器人软件 | Education or Science |
Spirituality | 宗教和精神软件,神学 | Education or Science or Utility |
Sports | 体育软件 | Education or Science |
ParallelComputing | 并行计算软件 | Education;ComputerScience or Science;ComputerScience |
Amusement | 一个简单的娱乐 | |
Archiving | 存档/备份数据的工具 | Utility |
Compression | 管理压缩数据/归档的工具 | Utility;Archiving |
Electronics | 电子软件,例如电路设计师 | |
Emulator | 另一个平台的模拟器,例如DOS模拟器 | System or Game |
Engineering | 工程软件,例如CAD程序 | |
FileTools | 文件工具 | Utility or System |
FileManager | 文件管理器 | System;FileTools |
TerminalEmulator | 终端 | System |
Filesystem | 文件系统工具 | System |
Monitor | 监视监视某些资源或活动的应用程序/小程序 | System or Network |
Security | 一种安全工具 | Settings or System |
Accessibility | 无障碍 | Settings or Utility |
Calculator | 一个计算器 | Utility |
Clock | 时钟应用程序/小程序 | Utility |
TextEditor | 文本编辑器 | Utility |
Documentation | 帮助或文档 | |
Adult | 处理成人或显性材料的应用 | |
Core | 重要的应用程序,是桌面的核心,例如文件管理器或帮助浏览器 | |
KDE | 基于KDE库的应用程序 | QT |
GNOME | 基于GNOME库的应用程序 | GTK |
XFCE | 基于XFCE库的应用程序 | GTK |
GTK | 基于GTK +库的应用程序 | |
Qt | 基于Qt库的应用程序 | |
Motif | 基于Motif库的应用程序 | |
Java | 基于Java GUI库的应用程序,例如AWT或Swing | |
ConsoleOnly | 仅适用于终端(基于文本或命令行应用程序)的应用程序 |
保留类别 | 描述 |
---|---|
Screensaver | 屏幕保护程序(启动此应用应激活屏幕保护程序) |
TrayIcon | 主要是“系统托盘”或“通知区域”的图标的应用程序(打开普通窗口的应用程序,恰好有托盘图标也不应列出此类别) |
Applet | 将在面板或其他此类应用程序中运行的applet,可能是特定于桌面的 |
Shell | 一个shell(一个实际的特定shell,如 bash或者tcsh,而不是TerminalEmulator) |
OnlyShowIn Value | Environment |
---|---|
GNOME | GNOME桌面 |
KDE | KDE桌面 |
LXDE | LXDE桌面 |
LXQt | LXQt桌面 |
MATE | MATÉ桌面 |
Razor | Razor-qt桌面 |
ROX | ROX桌面 |
TDE | Trinity桌面 |
Unity | Unity Shell |
XFCE | XFCE桌面 |
EDE | EDE桌面 |
Cinnamon | Cinnamon桌面 |
Pantheon | Pantheon桌面 |
Old | 传统菜单系统 |
.desktop文件安装在$datadir/applications/中,命名如:vendor-foo.desktop或者vendor/foo.desktop
.menu文件安装在$sysconfdir/menus/applications-merged/
.directory文件安装在$datadir/desktop-directories/
$datadir默认为$HOME/.local/share : /usr/local/share : /usr/share
$sysconfig默认为/etc/xdg/
[Desktop Entry]
Encoding=UTF-8
Type=Application
Exec=webmirror
Icon=webmirror
Name=WebMirror
Name[nl]=WebSpiegel
datadir/applications/shinythings-webmirror-admin.desktop:
[Desktop Entry]
Encoding=UTF-8
Type=Application
Exec=webmirror-admintool
Icon=webmirror-admintool
Name=WebMirror Admin Tool
Name[nl]=WebSpiegel Administratie Tool
[Desktop Entry]
Encoding=UTF-8
Icon=webmirror
Name=WebMirror
Name[nl]=WebSpiegel
Applications
WebMirror
shinythings-webmirror.directory
shinythings-webmirror.desktop
shinythings-webmirror-admin.desktop
原文链接:https://specifications.freedesktop.org/menu-spec/menu-spec-latest.html