问题
遇到这么一个问题,QT程序开发完毕,打包生成可执行应用程序文件,将其放在某个位置,如/home/kylin/bin/DLModel,并在桌面上写了一个桌面文件DLModel.desktop,并赋予其可执行属性(+x),其内容如下:
[Desktop Entry]
Name=DLModel
Exec=/home/kylin/bin/DLModel
Terminal=false
Type=Application
Icon=/usr/share/icons/hicolor/48x48/apps/logo.png
StartupWMClass=DLModel
Categories=Utility;
其中,Name指定该.desktop文件名;Exec指定要执行的可执行应用文件所在的绝对路径;StartupWMClass指定应用程序在窗口管理器中的窗口类名(WM_CLASS),确保应用程序在启动后,任务栏或应用切换器中显示的图标与 .desktop 文件中的图标一致;Icon指定桌面文件DLModel.desktop的图标,当双击该文件时,任务栏图标显示的应该也是这个图标,但是实际情况是不一致。
注:获取WM_CLASS的方法:(1)在终端输入xprop | grep WM_CLASS命令;(2)鼠标点击应用程序的窗口,终端中会显示信息,如WM_CLASS(STRING) = "dlmodel", "DLModel";(3)将其填入桌面文件DLModel.desktop的 StartupWMClass 字段。
解决办法
也是在网上搜了很长时间,没有太大效果。后来无意间,本来是想将这个桌面文件DLModel.desktop添加为系统自启动,当点击添加系统自启动的时候,弹出来文件选择对话框,初始路径是/usr/share/applications,这个路径下是没有我这个桌面文件DLModel.desktop的,所以我用cp指令把它拷贝进去了。然后,当我双击桌面文件DLModel.desktop的时候,任务栏的图标就跟桌面图标一致了。应该是,任务栏图标会默认与/usr/share/applications中的.desktop文件保持一致,因此,只要把桌面文件DLModel.desktop拷贝到/usr/share/applications即可。
另外,用cp指令拷贝到/usr/share/applications后,DLModel.desktop文件的权限与在桌面上的保持一致,因此会有可执行属性(+x),只要有这个属性,DLModel.desktop文件的后缀.desktop就不会显示,因此,在增加系统自启动的时候,是无法看到并选择DLModel.desktop这个文件的,办法就是把/usr/share/applications中的DLModel.desktop文件权限去掉可执行属性(-x),然后就可以选择添加系统自启动了。当系统启动后,会自动执行对应的可执行应用程序(已亲测)。