Manjaro桌面快捷方式创建

引言

在 Manjaro 系统日常使用中,有的软件点击率和使用率更高,因此这就需要使用更方便的访问方式,而桌面图标就能满足这一需求。在 Windows 系统中可直接将可执行程序(EXE程序)以创建快捷链接的方式实现桌面访问,而 Linux 系统需要自己创建 desktop 文件并修改相应键值对来达到桌面访问的目的。本文以下部分将阐述具体的实现方式。

一.了解 desktop 文件

为了描述如何启动特定程序、如何在菜单中显示等功能,采用配置文件的方式写入相关信息可大大简化维护的时间成本。 Desktop Entry 配置文件就是在这样的背景下应运而生的,像诸如 KDEGNOME 等桌面环境都采用了这一方式。

1.1 编写说明

desktop 文件有诸多语法规则和编写相关的配置操作。部分细节如下所示,更加完整的规则可参阅文档: Desktop Entry Specification

  1. Desktop Entry 文件采用 UTF-8 编码。

  2. Desktop Entry 文件命名采用 .desktop 后缀

  3. 使用 # 号书写备注信息

  4. 此文件所有内容采用 键值对 格式书写

  5. 关键字可以选择进行本地化显示,具体的细则如下表:

LC_MESSAGES Value 可选值
lang_COUNTRY@MODIFIER lang_COUNTRY@MODIFIER,lang_COUNTRY,lang@MODIFIER,lang,默认值
lang_COUNTRY lang_COUNTRY,lang,默认值
lang@MODIFIER lang@MODIFIER,lang,默认值
lang lang,默认值

具体书写方式为

1
2
# `[ ]` 内的内容为可选项,非必须
key[LC_MESSAGES Value]=value

1.2 编写规则

要想创建桌面图标,首先需要了解桌面项的编写方式,具体可参考文档: Desktop Entry Specification Version 1.5

此文件的最重要内容是键值对,关键字的选取尤为关键,每个桌面项必须具有一个Type关键字和一个Name关键字,其他项定义应用程序菜单中的外观(非必须)。下面是此版本关键字的摘要表格。

序号 关键字 值类型 是否必须 应用类型 描述
1 Type string 必须 / 类型
2 Version string 非必须 Type 1-3 版本
3 Name localestring 必须 Type 1-3 名称
4 GenericName localestring 非必须 Type 1-3 通用名
5 NoDisplay boolean 非必须 Type 1-3 不显示
6 Comment localestring 非必须 Type 1-3 备注信息
7 Icon iconstring 非必须 Type 1-3 图标
8 Hidden boolean 非必须 Type 1-3 隐藏项
9 OnlyShowIn,NotShowIn string(s) 非必须 Type 1-3 显示项
10 DBusActivatable boolean 非必须 / D-Bus 选项
11 TryExec string 非必须 Type 1 尝试执行
12 Exec string 非必须 Type 1 执行
13 Path string 非必须 Type 1 路径
14 Terminal boolean 非必须 Type 1 终端
15 Actions string(s) 非必须 Type 1 行为
16 MimeType string(s) 非必须 Type 1 MIME 类型
17 Categories string(s) 非必须 Type 1 类型
18 Implements string(s) 非必须 / 执行
19 Keywords localestring(s) 非必须 Type 1 关键词
20 StartupNotify boolean 非必须 Type 1 -
21 StartupWMClass string 非必须 Type 1 -
22 URL string 必须 Type 2 链接
23 PrefersNonDefaultGPU boolean 非必须 Type 1 默认显卡
24 SingleMainWindow boolean 非必须 Type 1 单窗口

  1. string 类型可以是包含 ASCII 码中除控制符外的所有字符。
  2. localestring 类型是用户可见的字符类型,通常采用 UTF-8 编码。
  3. iconstringlocalestring 类型大体上一致,只是用户不可见。同样采用 UTF-8 编码。
  4. boolean为布尔类型

1.2.1 关键字详细说明

对表格的详细说明如下:

  1. Type 关键字 :指定 Desktop Entry 的类型。在 Version 1.5 规范中定义了三种类型:`

    1. Type1 : Application

    2. Type2 : Link

    3. Type3 : Directory

  2. Version 关键字:指定Desktop Entry 的版本号。

  3. Name 关键字:指定应用程序的名称。

  4. GenericName 关键字:指定应用程序的通用名。

  5. NoDisplay 关键字:这个关键字的意思是:“此应用已存在,不在开始菜单显示”。

  6. Comment 关键字:对于 NameGenericName 关键字的简短解释说明。

  7. Icon 关键字:指定此应用程序在应用程序浏览器或是在文件浏览器中所显示的图标。一般以绝对路径形式提供。

  8. Hidden 关键字:此项对已删除的应用或者已卸载仍存在的文件适用。

  9. OnlyShowIn,NotShowIn 关键字:指定(只显示/不显示)在某个桌面环境上。这一字段可对应多个数值。

  10. DBusActivatable 关键字:D-Bus 消息管理机制的支持。默认值为 false 。此项为 true 值时会默认调用 D-Bus 而忽略掉 Exec 关键字去执行该应用程序。

  11. TryExec 关键字:用以确定一个可执行文件是否已实际安装的路径

  12. Exec 关键字:指定可执行程序(可带参数) ,这一关键字在 DBusActivatable 字段为 false 时生效。这一字段必须存在,以实现兼容性。此关键字的具体介绍可看 1.2.2 节

  13. Path 关键字:指定程序运行的 bin 目录。

  14. Terminal 关键字:确定应用程序的运行是否依赖终端窗口。

  15. Actions 关键字:标识应用程序行为,这一字段能告诉应用程序执行更具体的操作(一种行为代表一种调用此程序的方式),通俗讲就是此应用程序的鼠标右键功能选项和程序附加应用程序功能。指定的每种行为需要在文件当中新开一个 Group Header。 此关键字的具体介绍可看 1.2.3 节

  16. MimeType 关键字:此字段用于指定此应用程序支持的 MIME类型 (全称 Multipurpose Internet Mail Extensions,是一种用于定义文档、文件或字节流的性质和格式的标准)。

  17. Categories 关键字:此字段指定该 Desktop Entry 在开始菜单中显示的类别,可指定多个数值,但默认第一个数值。更加详细的菜单项可查看技术文档:Desktop Menu Specification 。此关键字的具体介绍可看 1.2.4 节

  18. Implements 关键字:此字段用于指定 D-Bus 一个或者更多接口名。这一关键字需要 DBusActivatable 字段为 true 时生效。

  19. Keywords 关键字:指定此字段可以在开始菜单更方便地搜索到此应用。可以指定多个字符串来描述此应用。当然,此字段不应当与 Name 字段和 GenericName 字段重复。

  20. StartupNotify 关键字:更加完整的协议内容可查看技术文档: Startup Notification Protocol Specification

  21. StartupWMClass 关键字:更加完整的协议内容可查看技术文档: Startup Notification Protocol Specification

  22. URL 关键字:当 Type 类型为 Link 时此关键字段是必须的,具体功能时指定具体的链接

  23. PrefersNonDefaultGPU 关键字:这是一个提示性关键字,不是强制性的。如果此字段为 true ,则该程序默认运行在独立显卡上;如果为 false ,则该程序运行在集成显卡上。

  24. SingleMainWindow 关键字:这是一个提示性关键字,不是强制性的。用于指定是否单窗口运行,如果为 true ,应用只单窗口运行;如果为 flase ,则可多开窗口。

1.2.2 Exec 关键字(第 12 项)

此关键字用于指定一个或多个参数的可执行程序。指定该可执行程序的方式可以是:绝对路径此可执行程序的名称。如果未提供此项,则会在 path 环境变量中去查找可执行文件。

Field Code 码的作用:

  1. %f : 传递单本地文件给本 Desktop Entry 文件。
  2. %F : 传递多本地文件给本 Desktop Entry 文件。
  3. %u : 传递单个 URL 或者单个本地路径给本 Desktop Entry 文件。
  4. %U : 传递多个 URL 或者多个本地路径给本 Desktop Entry 文件。
  5. %i : 将 Icon 关键字扩展为两个参数。如果 Icon 关键字为空或无 Icon 关键字,则不应扩展为任何参数。
  6. %c : 此文件中 Name 关键字所列出应用程序的翻译名称。
  7. %k : 传入位置可以是 URI 或者本地文件名。如果不知道位置,则为空。

  1. 此 Field Code 码只能从上述前四个中选取一个。这七个 Field Code 码不能在双引号中。
  2. Field Code 是其他程序调用此 Desktop Entry 文件时传入的参数。

1.2.3 Actions 关键字(第 15 项)

一个 Desktop Entry 文件可以有一个或多个 Actions 。一个 Action 就对应一种调用此程序的方式。这一方式可以用来创建 Quicklists 或者 Jumplists 。

一个 Desktop 文件的组成:

  1. 一个 [Desktop Entry] 组成。必须。
  2. 若干个 [Desktop Aciton <Action Identifier>] 组成。非必须。

指定的每种 Action 都需要在文件当中新开一个 Group Header 。其关键字必须包含 Name ,而 IconExec 关键字则非必须。

1.2.4 Categories 关键字(第 17 项)

在 Desktop Entry 文件中,可以有一个或者多个 Category ,但是默认选择 Main Category 生效。更多的 Category 项目可以参阅文档:Additional Category

Main Category 描述 备注
Audio Video 多媒体音视频 -
Audio 音频程序 选择此字段则也须包括 Audio Video 字段
Video 视频程序 选择此字段则也须包括 Audio Video 字段
Development 开发者程序 -
Education 教育软件 -
Game 游戏程序 -
Graphics 浏览,处理图片程序 -
Network 网络程序 -
Office 办公软件 -
Science 科学软件 -
Settings 设置 可能出现在单独菜单中,或者在控制中心中
System 系统软件,如日志文件软件 -
Utility 实用程序,如 Accessories -

1.3 存放位置

通常,通过包管理器或者自动安装的软件要么在用户条目目录下自动创建了 desktop 文件,要么就在系统目录下自动创建了 desktop 文件。在这两个目录下创建了 desktop 文件,访问图标将出现在 Linux 的开始菜单中。如果本人想要在桌面创建图标则需要在主目录的桌面文件夹下创建一个 desktop 文件。

1.3.1 用户条目的 desktop 文件

此文件夹下desktop 文件通常是安装软件后自动生成。具体目录如下所示:

1
2
3
~/.local/share/application
# 等效于如下路径,其中 dustwind 为笔者的用户目录
/home/dustwind/.local/share/applications

主目录等效于根目录的 home 目录下的用户目录,即:

~ 等效于 /home/{UserName} 目录

1.3.2 系统条目的 desktop 文件

此文件夹下 desktop 文件通常是安装软件后自动生成。具体目录如下所示:

1
2
3
4
# 通常的 Linux 系统是如下目录
/usr/share/applications
# 有的 Linux 系统会是如下目录
/usr/local/share/applications/

需要注意的是,用户条目下的文件优先级高于系统条目下的文件优先级

1.3.3 在桌面访问的 desktop 文件

如果想要在桌面访问软件,则需要访问软件的 desktop 文件放到如下目录中并编辑对应的桌面项。

1
2
3
4
# 中文环境下为如下目录
~/桌面
# 英文环境下为如下目录
~/Desktop

二.实现 desktop 文件

这里以 google-chrome 软件为例编写 desktop 文件。具体可对照规格文档查看具体含义,这里就不再阐述。本章节的实现可以参考: ArchWiki—桌面项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[Desktop Entry]
Version=1.0
Name=Google Chrome
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
GenericName=Web Browser
GenericName[en_GB]=Web Browser
GenericName[zh_CN]=网页浏览器
GenericName[zh_TW]=網頁瀏覽器
# Gnome and KDE 3 uses Comment.
Comment=Access the Internet
Comment[en_GB]=Access the Internet
Comment[zh_CN]=访问互联网
Comment[zh_TW]=連線到網際網路
StartupWMClass=Google-chrome
Exec=/usr/bin/google-chrome-stable %U
StartupNotify=true
Terminal=false
Icon=google-chrome
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;
Actions=new-window;new-private-window;

[Desktop Action new-window]
Name=New Window
Name[en_GB]=New Window
Name[zh_CN]=新建窗口
Name[zh_TW]=開新視窗
StartupWMClass=Google-chrome
Exec=/usr/bin/google-chrome-stable

[Desktop Action new-private-window]
Name=New Incognito Window
Name[en_GB]=New Incognito window
Name[zh_CN]=新建隐身窗口
Name[zh_TW]=新增無痕式視窗
StartupWMClass=Google-chrome
Exec=/usr/bin/google-chrome-stable --incognito


Manjaro桌面快捷方式创建
http://example.com/2024/02/23/Manjaro桌面图标创建/
作者
DustWind
发布于
2024年2月23日
许可协议