为了不用每次都要进入命令行启动应用程序,为程序创建快捷方式是一个很方便的方法,尤其是你的程序需要在团队外部使用的时候。
桌面创建快捷方式一般使用.desktop为后缀的文件实现,该文件的内容格式基本要素如下:
[Desktop Entry]
Name=<Program Name>
Comment=<Program Description>
Exec=<Absolute Path of the Program>
Type=<Application or Link>
Terminal=<For window application, set false, for terminal application, set true>
Icon=<The absolute path of program icon>
当然,除了以上基本要素之外,还有更丰富的其他元素,比如,拿我们最熟悉的firefox举例,它的desktop文件在/usr/share/applications目录下,该目录下有我们安装在该台PC上的所有application的desktop文件。打开firefox.desktop,部分内容如下:
那么,接下来我们就用一个比较简单的示例程序来演示如何创建桌面快捷方式。
示例程序test_shortcut.py要运行的是一段Python代码,功能为显示一行文字,并显示一张图像:
import time
import cv2
print('Hello! This is a test program for shortcut.')
im=cv2.imread('/home/grace/test/myicons/ainr.png')
cv2.imshow('icon', im)
cv2.waitKey(0)
现在,我们写一个脚本test_shortcut.sh来执行上面这段代码:
python3 test_shortcut.py
我们在桌面上的快捷方式就是要来调用这个脚本。
首先,我们在当前目录下创建一个.desktop为后缀的文件(当然也可以直接在桌面上创建),比如就叫ainr.desktop吧,在该文件中,按照desktop的基本格式填入内容:
[Desktop Entry]
Name=AINR
Comment=AINR shortcut
Exec=/home/grace/test/test_shortcut.sh
Type=Application
Terminal=true
Icon=/home/grace/test/myicons/ainr.png
在以上文件中,我们指明了桌面快捷方式的名称"AINR",程序执行路径/home/grace/test/test_shortcut.sh,由于需要在终端打印文字,因此Terminal项设置为了true,最后指定了桌面快捷方式的图标路径/home/grace/test/myicons/ainr.png。
然后我们将该文件拷贝到桌面路径,并为其添加可执行权限:sudu chmod +x ainr.desktop
以上的操作均可通过命令行终端完成。接下来的操作则需要在可视化桌面上进行了。
在桌面上,我们可以看到已经存在了ainr.desktop这个文件,但并未显示成我们指定的图标。我们通过鼠标右键为其设置“Allow Launching”,这时,该桌面图标已经显示成我们指定的图标。双击该图标,命令行黑框一闪而过,并没有成功运行我们的程序,怎么回事呢?
为了查找原因,我们在桌面路径直接执行我们的bash脚本,通过绝对路径执行:
/home/grace/test/test_shortcut.sh
提示找不到test_shortcut.py文件。真相大白了!原来是路径问题。在桌面路径下执行脚本,是无法找到要调用的python文件的,因为脚本内用的是相对路径。于是修改脚本test_shortcut.sh为:
python3 /home/grace/test/test_shortcut.py
再次执行,成功!