Manjaro桌面快捷方式创建
引言
在 Manjaro 系统日常使用中,有的软件点击率和使用率更高,因此这就需要使用更方便的访问方式,而桌面图标就能满足这一需求。在 Windows 系统中可直接将可执行程序(EXE程序)以创建快捷链接的方式实现桌面访问,而 Linux 系统需要自己创建 desktop 文件并修改相应键值对来达到桌面访问的目的。本文以下部分将阐述具体的实现方式。
一.了解 desktop 文件
为了描述如何启动特定程序、如何在菜单中显示等功能,采用配置文件的方式写入相关信息可大大简化维护的时间成本。 Desktop Entry
配置文件就是在这样的背景下应运而生的,像诸如 KDE
、 GNOME
等桌面环境都采用了这一方式。
1.1 编写说明
desktop 文件有诸多语法规则和编写相关的配置操作。部分细节如下所示,更加完整的规则可参阅文档: Desktop Entry Specification
Desktop Entry 文件采用 UTF-8 编码。
Desktop Entry 文件命名采用
.desktop
后缀使用
#
号书写备注信息此文件所有内容采用
键值对
格式书写关键字可以选择进行本地化显示,具体的细则如下表:
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 |
|
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 | 单窗口 |
注:
string
类型可以是包含 ASCII 码中除控制符外的所有字符。localestring
类型是用户可见的字符类型,通常采用 UTF-8 编码。iconstring
与localestring
类型大体上一致,只是用户不可见。同样采用 UTF-8 编码。boolean
为布尔类型
1.2.1 关键字详细说明
对表格的详细说明如下:
Type
关键字
:指定Desktop Entry
的类型。在 Version 1.5 规范中定义了三种类型:`Type1 :
Application
Type2 :
Link
Type3 :
Directory
Version
关键字:指定Desktop Entry
的版本号。Name
关键字:指定应用程序的名称。GenericName
关键字:指定应用程序的通用名。NoDisplay
关键字:这个关键字的意思是:“此应用已存在,不在开始菜单显示”。Comment
关键字:对于Name
和GenericName
关键字的简短解释说明。Icon
关键字:指定此应用程序在应用程序浏览器或是在文件浏览器中所显示的图标。一般以绝对路径形式提供。Hidden
关键字:此项对已删除的应用或者已卸载仍存在的文件适用。OnlyShowIn,NotShowIn
关键字:指定(只显示/不显示)在某个桌面环境上。这一字段可对应多个数值。DBusActivatable
关键字:D-Bus 消息管理机制的支持。默认值为 false 。此项为 true 值时会默认调用 D-Bus 而忽略掉 Exec 关键字去执行该应用程序。TryExec
关键字:用以确定一个可执行文件是否已实际安装的路径Exec
关键字:指定可执行程序(可带参数) ,这一关键字在DBusActivatable
字段为 false 时生效。这一字段必须存在,以实现兼容性。此关键字的具体介绍可看 1.2.2 节 。Path
关键字:指定程序运行的bin
目录。Terminal
关键字:确定应用程序的运行是否依赖终端窗口。Actions
关键字:标识应用程序行为,这一字段能告诉应用程序执行更具体的操作(一种行为代表一种调用此程序的方式),通俗讲就是此应用程序的鼠标右键功能选项和程序附加应用程序功能。指定的每种行为需要在文件当中新开一个 Group Header。 此关键字的具体介绍可看 1.2.3 节 。MimeType
关键字:此字段用于指定此应用程序支持的MIME类型
(全称 Multipurpose Internet Mail Extensions,是一种用于定义文档、文件或字节流的性质和格式的标准)。Categories
关键字:此字段指定该Desktop Entry
在开始菜单中显示的类别,可指定多个数值,但默认第一个数值。更加详细的菜单项可查看技术文档:Desktop Menu Specification 。此关键字的具体介绍可看 1.2.4 节 。Implements
关键字:此字段用于指定D-Bus
一个或者更多接口名。这一关键字需要DBusActivatable
字段为 true 时生效。Keywords
关键字:指定此字段可以在开始菜单更方便地搜索到此应用。可以指定多个字符串来描述此应用。当然,此字段不应当与Name
字段和GenericName
字段重复。StartupNotify
关键字:更加完整的协议内容可查看技术文档: Startup Notification Protocol Specification 。StartupWMClass
关键字:更加完整的协议内容可查看技术文档: Startup Notification Protocol Specification 。URL
关键字:当Type
类型为Link
时此关键字段是必须的,具体功能时指定具体的链接PrefersNonDefaultGPU
关键字:这是一个提示性关键字,不是强制性的。如果此字段为 true ,则该程序默认运行在独立显卡上;如果为 false ,则该程序运行在集成显卡上。SingleMainWindow
关键字:这是一个提示性关键字,不是强制性的。用于指定是否单窗口运行,如果为 true ,应用只单窗口运行;如果为 flase ,则可多开窗口。
1.2.2 Exec 关键字(第 12 项)
此关键字用于指定一个或多个参数的可执行程序。指定该可执行程序的方式可以是:绝对路径或此可执行程序的名称。如果未提供此项,则会在 path 环境变量中去查找可执行文件。
Field Code
码的作用:
%f
: 传递单本地文件给本 Desktop Entry 文件。%F
: 传递多本地文件给本 Desktop Entry 文件。%u
: 传递单个 URL 或者单个本地路径给本 Desktop Entry 文件。%U
: 传递多个 URL 或者多个本地路径给本 Desktop Entry 文件。%i
: 将 Icon 关键字扩展为两个参数。如果 Icon 关键字为空或无 Icon 关键字,则不应扩展为任何参数。%c
: 此文件中 Name 关键字所列出应用程序的翻译名称。%k
: 传入位置可以是 URI 或者本地文件名。如果不知道位置,则为空。
注:
- 此 Field Code 码只能从上述前四个中选取一个。这七个 Field Code 码不能在双引号中。
- Field Code 是其他程序调用此 Desktop Entry 文件时传入的参数。
1.2.3 Actions 关键字(第 15 项)
一个 Desktop Entry
文件可以有一个或多个 Actions
。一个 Action 就对应一种调用此程序的方式。这一方式可以用来创建 Quicklists 或者 Jumplists 。
注:
一个 Desktop 文件的组成:
- 一个
[Desktop Entry]
组成。必须。- 若干个
[Desktop Aciton <Action Identifier>]
组成。非必须。
指定的每种 Action 都需要在文件当中新开一个 Group Header 。其关键字必须包含 Name
,而 Icon
和 Exec
关键字则非必须。
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 |
|
注:
主目录等效于根目录的 home 目录下的用户目录,即:
~ 等效于 /home/{UserName} 目录
1.3.2 系统条目的 desktop 文件
此文件夹下 desktop 文件通常是安装软件后自动生成。具体目录如下所示:
1 |
|
注:
需要注意的是,用户条目下的文件优先级高于系统条目下的文件优先级
1.3.3 在桌面访问的 desktop 文件
如果想要在桌面访问软件,则需要访问软件的 desktop 文件放到如下目录中并编辑对应的桌面项。
1 |
|
二.实现 desktop 文件
这里以 google-chrome 软件为例编写 desktop 文件。具体可对照规格文档查看具体含义,这里就不再阐述。本章节的实现可以参考: ArchWiki—桌面项
1 |
|