linux桌面入口文件(.desktop)规范

介绍

KDE和GNOME桌面环境都采用了类似的“桌面入口”格式,或描述特定程序如何启动的配置文件,它在菜单中的显示方式等。统一标准对更大的社区有利。所有各方都同意这样做,即两个环境之间的互操作,以及实现规范的任何其他环境变得更加简单。

文件命令

桌面入口文件应具有.desktop 扩展名,但文件Type Directory应具有 .directory扩展名。

对于应用程序,.desktop扩展名之前的桌面文件名称 部分应该是有效的 D-Bus知名名称。这意味着它是由点分隔的非空元素序列,不能数字开头,并且每个元素仅包含来自集合的字符[A-Za-z0-9_-]:ASCII字母,数字,短划线和下划线。

桌面入口的名称应遵循“反向DNS”约定:它应以应用程序作者控制的反向DNS域名开头,小写。域名后面应该跟应用程序的名称,通常用大驼峰编写。例如,命令为:org.example.FooViewer.desktop。

允许使用包含破折号的已知名称,但不建议这样做,因为在反向DNS名称的某些相关用途中不允许使用破折号,例如D-Bus对象路径和接口名称以及Flatpak应用程序ID。如果作者的域名包含破折号,建议将其替换为下划线:这不会导致歧义,因为DNS域名中不允许使用下划线。

如果作者的域名包含以数字开头的标签(在D-Bus知名名称中不允许),建议在桌面条目名称的该元素前加下划线。例如,7-zip.org可能会发布一个名为的应用程序 org._7_zip.Archiver。

桌面文件ID

表示应用程序的每个桌面入口由其桌面文件ID标识,该文件ID基于其文件名。

要确定桌面文件的ID,请创建相对于安装桌面文件的$XDG_DATA_DIRS组件的完整路径,删除“applications /”前缀,然后将“/”变为“ - ”。

例如,/usr/share/applications/foo/bar.desktop的桌面文件ID为foo-bar.desktop。

例如,$XDG_DATA_DIRS包含默认路径的/usr/local/share:/usr/share,然后 /usr/local/share/applications/org.foo.bar.desktop与 /usr/share/applications/org.foo.bar.desktop具有相同的桌面文件ID org.foo.bar.desktop,但只有第一个将被使用。

如果同时foo-bar.desktop和foo/bar.desktop存在,这是未阐明的。

如果桌面文件未安装在$ XDG_DATA_DIRS的applications文件夹中,则它们没有ID。

文件的基本格式

.desktop文件以UTF-8编码。每一行由换行符分隔。
基本目录是:$XDG_DATA_DIRS/desktop-directories/

注释

#开头的行为注释

第一个组必须为[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

正式的桌面文件Key

  • 当Type=Application时Terminal才有效
  • 当Type=Link时URL才有效
Key描述Value 类型是否必须?生效的类型
TypeApplication (type1), Link (type2), Direcory (type3)stringYes
Version版本,例如1.1stringNo1-3
Name应用程序的特定名称,例如“Mozilla”。localestringYes1-3
GenericName应用程序的通用名称,例如“Web浏览器”。localestringNo1-3
NoDisplay不在菜单中显示, 但可以与MIME类型相关联booleanNo1-3
Comment应用描述ocalestringNo1-3
Icon要么绝对路径,要么符合图标主题规范localestringNo1-3
Hidden是否隐藏,等同于不存在的文件booleanNo1-3
OnlyShowIn, NotShowIn一般不用此字段booleanNo1-3
DBusActivatableDBus激活,默认false。参阅D-Bus激活。应包含Exec行,实现兼容booleanNo
TryExec如果文件不存在, 则忽略该文件,并不在菜单中出现stringNo1
Exec执行路径 。参阅Exec KeystringNo1
Path当Type=Application时,程序运行的目录string No1
Terminal程序是否在终端窗口中运行。booleanNo1
Actions为其他组提供接口,比如Action=Gallery;,那么其他组就为[Desktop Action Gallery]string(s)No1
MimeType此应用支持打开的类型,具体类型可以百度string(s)No1
Categories参阅桌面菜单规范string(s)No1
Implements默认情况下,桌面文件不实现任何接口。参阅接口string(s)No
Keywords用于搜索,不应该是Name或者为多余的值 GenericName。localestring(s)No1
StartupNotify如果不存在,则合理的处理取决于实现(假设为false,使用StartupWMClass等)。参阅启动通知协议规范booleanNo1
StartupWMClass一般跟Name相同即可stringNo1
URL只适用于Type=LinkstringYes

Exec Key

Code描述
%f%f指向临时文件。用于不了解URL语法的程序。
%F文件列表。用于可以一次打开多个本地文件的应用程序。每个文件作为单独的参数传递给可执行程序。
%u单一的URL或者本地文件
%U%u的复数
%i如果Icon 为空,不应该填写此参数。一般也不用
%cName键中的已翻译名称。
%k桌面文件的位置 要么为URL,要么是本地文件名,要么是为空,不知道干啥的,一般不用

命令行最多可包含一个%f,%u,%F或%U字段代码。如果应用程序不应打开任何文件,则必须从命令行中删除%f,%u,%F和%U字段代码并将其忽略。

D-Bus激活

文件名必须为,比如:org.example.FooViewer.desktop
D-Bus的XML格式

  <interface name='org.freedesktop.Application'>
    <method name='Activate'>
      <arg type='a{sv}' name='platform_data' direction='in'/>
    </method>
    <method name='Open'>
      <arg type='as' name='uris' direction='in'/>
      <arg type='a{sv}' name='platform_data' direction='in'/>
    </method>
    <method name='ActivateAction'>
      <arg type='s' name='action_name' direction='in'/>
      <arg type='av' name='parameter' direction='in'/>
      <arg type='a{sv}' name='platform_data' direction='in'/>
    </method>
  </interface>

A.示例桌面条目文件

[Desktop Entry]
Version=1.0
Type=Application
Name=Foo Viewer
Comment=The best viewer for Foo objects available!
TryExec=fooview
Exec=fooview %F
Icon=fooview
MimeType=image/x-foo;
Actions=Gallery;Create;

[Desktop Action Gallery]
Exec=fooview --gallery
Name=Browse Gallery

[Desktop Action Create]
Exec=fooview --create-new
Name=Create a new Foo!
Icon=fooview-new

原文链接:https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html

  • 8
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以尝试以下步骤: 1. 首先进入 pycharm.desktop 文件所在的目录。 2. 打开终端,输入以下命令: ``` chmod +x pycharm.desktop ``` 该命令会赋予 pycharm.desktop 文件执行权限。 3. 接着,输入以下命令: ``` ./pycharm.desktop ``` 该命令会执行 pycharm.desktop 文件,从而打开 PyCharm。 注意:如果你没有安装 PyCharm,以上步骤可能无法正常运行。你需要先安装 PyCharm,然后再执行以上步骤。 ### 回答2: 在Linux系统中打开pycharm.desktop文件有以下几种方式: 1. 使用文件管理器:首先打开文件管理器(如Nautilus、Dolphin等),然后导航到包含pycharm.desktop文件的目录。找到该文件后,双击打开即可在默认的文本编辑器中查看和编辑。 2. 使用终端命令:打开终端,使用cd命令导航到包含pycharm.desktop文件的目录。然后使用任何文本编辑器(如nano、gedit等)打开该文件。比如,运行以下命令来使用gedit编辑器打开文件: ``` gedit pycharm.desktop ``` 3. 使用命令行工具:打开终端,然后使用命令行工具(如vi、vim等)在终端中打开pycharm.desktop文件。比如,运行以下命令来使用vim编辑器打开文件: ``` vim pycharm.desktop ``` 无论使用哪种方式,一旦成功打开pycharm.desktop文件,你就可以查看和编辑其中的内容了。这个文件通常是一个桌面应用程序的启动器配置文件,你可以在其中配置pycharm的启动命令、图标、名称等信息。 ### 回答3: 在Linux系统中打开pycharm.desktop文件需要按照以下步骤进行操作: 1. 首先,进入文件管理器,导航到保存pycharm.desktop文件的目录。可以使用命令行或是图形界面方式打开。 2. 找到pycharm.desktop文件,右键点击该文件,选择“打开方式”或类似选项(也可能是“属性”),然后选择“文本编辑器”或“其他应用程序”。 3. 如果没有“文本编辑器”选项,请选择“其他应用程序”并浏览到系统中安装的文本编辑器,如Gedit、Mousepad、VS Code等。 4. 在文本编辑器中打开pycharm.desktop文件。 5. 检查pycharm.desktop文件的内容是否被正确解析。该文件应该是一个可执行文件(.desktop文件是用来定义程序启动器的配置文件)。 6. 如果内容正确,可以修改文件的设置,例如编辑程序的名称、图标、命令等。修改完成后,保存pycharm.desktop文件。 7. 关闭文本编辑器。 8. 在文件管理器中,找到pycharm.desktop文件,右键点击该文件,选择“设置为可执行”。 9. 接下来,双击pycharm.desktop文件即可打开PyCharm。如果设置正确,PyCharm将启动。 请注意,上述步骤中的某些选项名称可能会因Linux发行版和使用的桌面环境而有所不同。确保选择正确的选项以正确打开并编辑pycharm.desktop文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值