无论是在Windows上,还是Linux,或者安卓这些我们常用的操作系统上,一些应用程序的快捷方式放在桌面或者启动器,只需要简单的点击就可以启动,但是在Linux上,有相当多的程序是通过命令行启动的,这种方式对于某些人来说确实挺快,但是用惯了Windows就不太适应了,而且在桌面环境下,还是快捷图标更加友好,因此探索了一波Linux创建启动器图标。
由于本人使用的操作系统是Pop!OS,是Ubuntu发行版的一个分支,因此基本和Ubuntu是一致的。
在创建快捷方式之前,创建的快捷方式是所有用户都要看到还是仅自己可见,也就是说创建系统级图标还是用户级图标。
如果是用户级图标,那么路径为.local/share/applications/
,
如果是系统级图标,那么路径为/usr/share/applications
,
进入该路径以后,你会看到一堆.desktop
文件
这些东西就是快捷方式的本来面目了。这里面有一些文件是需要了解一下的。
context-menus
文件夹是存放一些右键菜单的。pop-mimeapps.list
,gnome-mimeapps.list
, defaults.list
以及mimeapps.list
都是指定文件的默认执行方式的。你在系统级目录下新建desktop
文件,创建的就是系统级图标,如果在用户级目录下新建desktop
文件,那么创建的就是用户级图标。
以安装Jetbrains的Idea为例,我从官网下载了压缩包,并且解压到了/home/pang/workspace/env/idea-IU-232.8660.185
路径,此时有个文件Install-Linux-tar.txt
提示如何在Linux上安装,但是实际上也只说进入bin
目录运行
./idea.sh
对于这种运行方式,使用体验是比较差的,因此需要创建个快捷方式启动,我选择的是系统级快捷方式,然后创建个idea.desktop
,内容如下
[Desktop Entry]
Name[tr]=idea
Name[zh_CN]=idea
Exec=/home/pang/workspace/env/idea-IU-232.8660.185/bin/idea.sh
Terminal=false
Type=Application
Icon=/home/pang/workspace/env/Icon/idea.png
Comment=idea
Categories=Utility;
可见图标就创建好了,并且功能运行正常。
简单介绍下这个文件中参数的作用,
Name
代表显示名字,并且可以指定语言,比如Name[zh_CN]
、Exec
是可执行文件,或者命令Terminal
是否显示终端Type
应用程序类型Icon
图标Comment
描述Categories
分类如果你想要查看所有相关的参数,建议查看大佬玩转智能机器人的文章,或者直接去官网查看(能看懂英文)。
官网https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
其实有很多功能是用不到的,所以挑两个可能用到的说一下,首先给出一份较为完整的文件例子
[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
在这个文件中,MimeType=image/x-foo;
注册了MIME,然后就可以在指定默认执行程序那写了
以及一些右键菜单也可以看出来是怎么写的,大概影响的是这几行
……
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
由Action
指定有几个菜单选项,然后下面用[Desktop Action ActionName]
来指定,且有三个参数
Exec
执行的命令Name
显示名字Icon
图标