Gnome 的桌面入口

适宜人群

  • 想在新建一个桌面入口跑脚本
  • 想关联文件类型到自己想要的可执行文件
  • 想了解为什么文件类型的关联方式
  • 想改掉一些莫名奇妙的文件类型关联

.desktop 文件

Desktop Entry 桌面入口文件 指定一个入口 可以关联到可执行文件和处理的文件类型

默认关联

可以在一些文件中看见MIME类型和一些对应的默认程序的关联

  • /etc/gnome/defaults.list
  • /usr/share/applications/defaults.list

能看到比如这样的内容

application/xhtml+xml=google-chrome.desktop;
application/rdf+xml=google-chrome.desktop;
application/rss+xml=google-chrome.desktop;
application/xhtml+xml=google-chrome.desktop;
1
2
3
4

google-chrome.desktop 就是前面MIME类型指定的默认打开应用的入口

但是这不是应用相关的任何id 而是可以自己创建和修改的桌面入口 可以在/usr/share/applications/ 中找到

简略版的 google-chrome.desktop
[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
# Gnome and KDE 3 uses Comment.
Comment=Access the Internet
Comment[zh_CN]=访问互联网
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[zh_CN]=新建窗口
Name[zh_TW]=開新視窗
Exec=/usr/bin/google-chrome-stable
[Desktop Action new-private-window]
Name=New Incognito Window
Name[zh_CN]=新建隐身窗口
Name[zh_TW]=新增無痕式視窗
Exec=/usr/bin/google-chrome-stable --incognito
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

创建自己的入口

同样也可以创建自己的入口 不过不用在 /usr/share/applications~/.local/share/applications 就可以了

具体的写法可以参考几个比较短的 .desktop 文件 这里比如腾讯会议

[Desktop Entry]
Name=WeMeetApp
Exec=/opt/wemeet/wemeetapp.sh %u
Comment=
Terminal=false
Icon=/opt/wemeet/icons/hicolor/64x64/mimetypes/wemeetapp.png
Type=Application
1
2
3
4
5
6
7
字段含义
Name外露显示的应用名
Type入口类型
Comment可能是某些详细页的介绍 可以根据不同语言设置 Comment[zh_CN]
Terminal(boolean)是否终端可用
Exec相关可执行文件路径
Icon显示的图标(默认路径在/usr/share/icons)
MimeType关联的MIME文件类型
Categories入口分类
这里以 [Koodo Reader](https://github.com/troyeguo/koodo-reader) appimage 版本举例
[Desktop Entry]
Name=Koodo-reader
Comment=Epub/Mobi/Azw3 Reader know more here @troyeguo/koodo-reader
Icon=/path/to/koodo-reader.png
Exec=/path/to/your/reader
Terminal=false
Type=Application
Keywords=reader;epub;mobi;azw3;opensource;
Categories=Utility;Office;
MimeType=application/epub+zip;application/x-mobipocket-ebook;
1
2
3
4
5
6
7
8
9
10

对于这个入口而言 设置 MimeType 是我使用时最关注的一个东西 因为ubuntu没有自带的epub阅读器 而我又使用的appimage格式

更新索引

$ desktop-file-validate your_entry.desktop # 检查格式是否有问题
$ desktop-file-install --dir=~/.local/share/applications your_entry.desktop # 将入口文件放入指定目录 似乎直接 mv 也行
$ update-desktop-database ~/.local/share/applications # 更新索引以便可用
1
2
3

参考