1 Star 0 Fork 11

coder_lw / wiki

forked from deepinwiki / wiki 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
桌面快捷方式.md 7.66 KB
一键复制 编辑 原始数据 按行查看 历史
htqx 提交于 2020-02-26 11:47 . 更新启动器自动启动

[TOC]

桌面快捷方式(启动器)

前言

linux的桌面快捷方式是比较复杂的,它设计成一个具有特定格式的文本文件,也叫启动器。.desktop后缀。

工具

  1. exo-desktop-item-edit :xfce桌面环境的小工具(也适用deepin)
  2. desktop-file-validate: 验证格式是否正确
  3. desktop-file-install: 安装启动器到系统菜单
  4. exo-open : 命令行打开启动器
    1. dex: 同上

创建启动器

注意事项: 命令必须要root账户的$PATH定义可以访问的位置,即普通账户目录下的命令是不能直接写命令名字的,而需要给出绝对路径。如你的命令叫conky,在~/.local/bin/conky 路径下,那么你得写:/home/你的账户/.local/bin/conky 。但是如果在/usr/bin, /bin等这些常见路径下的命令就可以简写 conky。

如果你不知道命令的位置,可以用 which conky 这种方法找出路径。如果你连命令的名字都不知道,那么可以开启任务管理器(deepin中叫:系统监视器),里面可以查看当前运行的程序,右键菜单可以找到命令路径。

sudo apt install exo-utils dex
exo-desktop-item-edit test.desktop # 打开一个可视化编辑窗口,填写对应的内容即可。

命令行执行启动器

# 在命令行执行.desktop启动器
exo-open test.desktop
# 同上
dex test.desktop

将启动器加入到系统菜单

sudo apt install desktop-file-utils #辅助工具包
desktop-file-validate test.desktop #有错误会提示
desktop-file-install test.desktop --dir ~/.local/share/applications # 将启动器加入到用户的菜单文件夹,系统菜单文件夹路径是:/usr/share/applications/,不指定--dir参数会加入到系统菜单文件夹,但需要管理员权限
update-desktop-database ~/.local/share/applications # 更新菜单

将启动器加入自动启动

# 只需要拷贝到~/.config/autostart/目录
cp -v test.desktop ~/.config/autostart/

.desktop 格式

有时候必须要手动编辑,毕竟可视化工具只是适合简单的情况。

简而言之,.desktop是ini格式的:

  1. [组名]
  2. 键=值
[Desktop Entry]
# [Desktop Entry] 是必须的组
# 井号开始表示这行是注释(即被程序忽略)
# 注意大小写
Type = Application
Version = 1.1
Name = lickingDog
GenericName = Dog Man
Comment = 舔狗
Icon = /xxx.png
Terminal = false
MimeType = png
Categories = Games
Exec = /xxx

以上创建了一个名为lickingDog的启动器(快捷方式),图标是/xxx.png ,执行的程序是/xxx 。

键值对的具体意义:

说明
Type Application、Link、Directory 类型:程序、链接、目录
Version 1.4 .desktop规范的版本
Name 文本 启动器名称
GenericName 文本 通用名(比如叫浏览器)
NoDisplay true、false 布尔值,true表示开启选项,即不显示(在启动菜单中)
Comment 文本 提示说明的信息
Icon 路径 图标的位置
Hidden 布尔 是否隐藏
OnlyShowIn 文本 根据桌面环境($XDG_CURRENT_DESKTOP)选择显示
NotShowIn 文本 和上面相反
DBusActivatable 布尔 是否支持D-Bus激活
TryExec 路径 根据路径是否可用,确定是否显示
Exec 路径 实际执行的程序
Path 路径 工作目录
Terminal 布尔 是否为命令行程序(cli)
Actions 文本 定义非默认动作(如执行不同参数,或命令)
MimeType MIME 关联的文件类型(Mime),如jpg等
Categories 类别 预定义的分类,如图形或影音程序
Implements 文本 实现的接口
Keywords 文本 用于搜索的关键字
StartupNotify 布尔 是否开启启动通知信息
StartupWMClass 文本 关联的通知类别
URL URL 链接

Exec 命令行

其中,最关键是Exec键值对,因为他定义了实际执行的命令格式。程序只需要路径,但是很多时候需要填写参数,和环境变量,下面是讲解:

参数 说明
%f 单个选定文件的路径
%F 多个选定文件的路径
%u 单个url表示的路径
%U 多个url表示的路径
%i Icon的值
%c Name的翻译名称
%k desktop文件的url

当然,这些参数需要桌面环境传递给程序。

# env LC_ALL=en_US.UTF-8 :表示定义一个LANG环境变量=en_US.UTF-8 ,这个环境变量的作用是改变命令显示的语言

Exec = env LC_ALL=en_US.UTF-8 echo %f

Actions 扩展动作

高级功能,一般桌面没有实现:

[Desktop Entry]
Version = 1.1
Type = Application
Name = Ping
Exec = deepin-terminal -x ping baidu.com
Icon = /xxx.png
# 关联其他动作
Actions = google;sina;

[Desktop Action google]
Exec = deepin-terminal -x ping google.com
Name = Ping2
Icon = /yyy.png

[Desktop Action sina]
Exec = deepin-terminal -x  ping sina.com
Name = Ping3
Icon = /zzz.png

Categories 分类

类名 描述
AudioVideo 多媒体
Audio 音频
Video 视频
Development 开发
Education 教育
Game 游戏
Graphics 图像处理
Network 网络
Office 办公
Science 科学
Settings 设置
System 系统
Utility 附件

更细化参考: https://specifications.freedesktop.org/menu-spec/latest/apas02.html

MimeType 分类

格式:主类/子类

主类名 子类 描述
x-content 多媒体载体
. audio-dvd 音乐dvd
. blank-cd cd
x-scheme-handler url
. http http协议
text 文本
. plain 纯文本
. html html
inode 设备文件
. symlink 符号链接
. directory 目录
application 应用处理
. octet-stream 文件流
. zip zip压缩
. postscript ps脚本
. msword doc文件
Audio 音频文件
. mpeg mp3
. x-wav wav
image 图像文件
. jpeg jpg
. x-icon ico
. svg+xml svg
video 视频文件
. mp4 mp4
. quicktime mov

具体参考:https://www.iana.org/assignments/media-types/media-types.xhtml

Icon 图标

图标支持png位图格式和svg矢量图形格式。

常用大小规格:

  1. 16*16
  2. 24*24
  3. 32*32
  4. 48*48
  5. 64*64
  6. 96*96
  7. 128*128
  8. 256*256

如果图标文件存放在以下路径,将不需要写绝对路径也可:

  1. $XDG_DATA_DIRS/icons
  2. /usr/share/pixmaps

其中$XDG_DATA_DIRS是一个环境变量,他是一组路径。

echo $XDG_DATA_DIRS
# 我的显示:/usr/share/gnome:/usr/local/share/:/usr/share/,即图标icons目录在这三组路径下都是有效的

为了支持主题,linux的图标目录进行了精心的设计,icons目录的子目录大致按如下设计:

  1. 主题/大小/分类/名称.png :固定大小的位图
  2. 主题/scalable/分类/名称.svg : 支持缩放的矢量图

相关的描述信息在主题目录下的index.theme中。

默认主题是 hicolor,可将自己的图标存放到此处,然后.desktop的 Icon = 名称 即可。

参考

  1. arch wiki: https://wiki.archlinux.org/index.php/Desktop_entries
  2. mime 标准: https://www.iana.org/assignments/media-types/media-types.xhtml
  3. 程序分类标准: https://specifications.freedesktop.org/menu-spec/latest/apas02.html
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/coder_lw/wiki.git
git@gitee.com:coder_lw/wiki.git
coder_lw
wiki
wiki
master

搜索帮助