linux桌面入口文件(.desktop)规范
https://blog.csdn.net/u014025444/article/details/94024282
Linux桌面入口文件(.desktop文件)是Linux桌面系统中用于描述应用程序启动器、链接或目录菜单的配置文件,其功能类似于Windows系统中的快捷方式。该标准由X Desktop Group(现为freedesktop.org)制定,旨在统一不同桌面环境(如GNOME、KDE、Xfce等)的菜单和启动器行为。
以下是根据规范(截至版本1.5)的详细介绍。
1. 文件基础
-
文件名与后缀:通常以
.desktop为后缀(Type=Directory的文件使用.directory)。建议采用反向DNS命名,如org.example.MyApp.desktop,以避免冲突。 -
存放位置:
-
系统级:
/usr/share/applications/、/usr/local/share/applications/。 -
用户级:
~/.local/share/applications/(优先级高于系统级)。 -
桌面快捷方式:直接放在
~/Desktop/目录下(通常需要可执行权限)。
-
-
编码与格式:文件为纯文本,UTF-8编码,结构类似INI文件。以
[Desktop Entry]作为第一个分组头,#开头的行为注释。
组
第一个组必须为[Desktop Entry],后面的Key=Value都是这个组,直到遇到下一个组。
项
Key=Value
=两边不能有空格Key只能用[A-Za-z0-9]- 不同组的
Key可以同名
值类型
公认的Value类型有 string,localestring,boolean 和 numeric
localestring 为用户可显示的字符串,用UTF-8编码。
键的本地化值
Name=Foo
Name[sr_YU]=...
Name[sr@Latn]=...
Name[sr]=...
优先级从左到右:lang_COUNTRY@MODIFIER, lang_COUNTRY, lang@MODIFIER, lang, default value。
2. 核心字段详解([Desktop Entry] 组)
桌面环境通过这些键值对来识别和展示应用程序。以下是最核心的字段:
| 字段名 | 必需 | 类型 | 说明与示例 |
|---|---|---|---|
Type |
是 | 字符串 | 定义条目类型。常用值为 Application(应用程序)、Link(网址链接)或 Directory(菜单目录)。 |
Name |
是 | 本地化字符串 | 应用程序的显示名称,会直接显示在菜单或启动器中。 |
| GenericName | 否 | 本地化字符串 | 应用程序的通用名称,例如“Web浏览器”。 |
| TryExec | 否 | 字符串 | 如果文件不存在, 则忽略该文件,并不在菜单中出现 |
Exec |
条件必需 | 字符串 | 仅当 Type=Application 时使用。定义启动应用程序时要执行的命令行,可以包含参数(如 %f 代表单个文件)。 |
Icon |
否 | 图标字符串 | 应用程序的图标。可以是绝对路径,也可以是图标主题中的图标名称(如 firefox)。 |
| DBusActivatable | 否 | 布尔值 | DBus激活,默认false。参阅D-Bus激活。应包含Exec行,实现兼容 |
Comment |
否 | 本地化字符串 | 对应用程序的简短描述,通常显示为工具提示。 |
Categories |
否 | 字符串(分号分隔) | 仅当 Type=Application 时使用。指定应用程序在菜单中显示的类别,如 Network;WebBrowser; 。 |
| Hidden | 否 | 布尔值 | 是否隐藏,等同于不存在的文件 |
Terminal |
否 | 布尔值 | 仅当 Type=Application 时使用。指示应用程序是否需要在终端窗口中运行(例如命令行程序)。值为 true 或 false。 |
MimeType |
否 | 字符串(分号分隔) | 仅当 Type=Application 时使用。列出此应用程序支持的MIME类型,使其能成为某种文件类型的默认打开程序。 |
NoDisplay |
否 | 布尔值 | 若设为 true,则该条目不会显示在菜单中,但仍可能用于文件关联或其他后台功能。 |
GenericName |
否 | 本地化字符串 | 应用程序的通用名称,如“文本编辑器”之于“gedit”。 |
Keywords |
否 | 本地化字符串(分号分隔) | 用于帮助在桌面环境搜索框(如GNOME的概览)中查找应用程序的附加关键词。 |
StartupNotify |
否 | 布尔值 | 指示桌面环境是否为该应用程序显示启动反馈(如鼠标变为等待状态)。 |
Path |
否 | 字符串 | 指定应用程序启动时的工作目录。 |
Version |
否 | 字符串 | 该 .desktop 文件所遵循的Desktop Entry规范版本(如 1.0)。 |
| Actions | 否 | 字符串 | 为其他组提供接口,比如Action=Gallery;,那么其他组就为[Desktop Action Gallery] |
| StartupWMClass | 否 | 字符串 | 一般跟Name相同即可 |
| URL | 否 | 字符串 | 只适用于Type=Link |
3. Exec 键的参数与特殊字段码
Exec 行的写法非常灵活,可以使用特殊的字段码来传递文件或URL。
-
常用字段码:
-
%f:单个文件名(已处理本地化路径)。 -
%F:多个文件名,用于支持多文件打开的应用程序。 -
%u:单个URL。 -
%U:多个URL。 -
%i:会被展开为--icon图标名称,用于某些需要图标的程序。 -
%c:展开为应用程序的名称(即Name字段的值)。 -
%k:展开为当前.desktop文件自身的路径或URI。 -
%%:代表一个百分号%。
-
-
注意事项:
Exec行通常不需要手动添加引号来处理带空格的文件名,因为字段码(如%f)会自动处理。但若要在命令中加入固定参数,则需注意引号的使用规范。
4. 高级特性
-
本地化(Localization)
通过在键名后添加[locale]来支持多语言。
Name=MyApp
Name[zh_CN]=我的应用
Name[fr]=Mon Application
Comment=A great app
Comment[zh_CN]=一个很棒的应用
- 附加操作(Actions)
允许为应用程序的启动器(如图标右键菜单)定义额外的快捷操作。需要先在 [Desktop Entry] 中用 Actions 键列出操作名称,再在各自的 [Desktop Action 操作名] 分组中定义。
[Desktop Entry]
Name=MyApp
Exec=myapp
Actions=NewWindow;OpenProfile;
[Desktop Action NewWindow]
Name=打开一个新窗口
Exec=myapp -n
Icon=window-new
[Desktop Action OpenProfile]
Name=加载配置文件...
Exec=myapp -p
5. 验证与工具
为了确保 .desktop 文件格式正确并被系统识别,可以使用以下工具:
-
验证:
desktop-file-validate myapp.desktop(来自desktop-file-utils包)。 -
安装:
desktop-file-install --dir=~/.local/share/applications myapp.desktop。 -
更新数据库:安装后通常需要运行
update-desktop-database来更新菜单缓存(通常由包管理器自动执行,但手动安装时可能需要)。
6. 其他类型
-
Type=Link:创建指向一个URL的快捷方式。
[Desktop Entry]
Type=Link
Name=Link to Website
URL=http://example.com
Icon=web-browser
-
Type=Directory:用于定义菜单目录的外观(名称、图标),常用于创建应用程序分类的子菜单。文件后缀通常为.directory。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)