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

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐