我正在学习 Ubuntu SDK,并且使用 Qt Creator 创建了一个新的 HTML5 Touch UI 项目。
项目文件夹中有一个.desktop
文件。然后我将一个添加launcher.png
到我的项目文件夹中。
这是我的.desktop
文件:
[Desktop Entry]
Name=myapp
StartupNotify=true
Icon=/usr/share/myapp/launcher.png
MimeType=text/plain;
NoDisplay=true
Comment=something...
Exec=/usr/bin/qmlscene $@ /usr/share/myapp/diaspora-webclient.qml
Terminal=false
Type=Application
X-Ubuntu-Touch=true
现在我按下Ctrl+R来运行应用程序qmlscene
。应用程序运行,但launcher.png
不会作为应用程序的图标显示在 Unity Launcher 中。
我是否需要运行命令来更新更改?或者我是否需要通过应用内代码将launcher.png
其移动到?/usr/share/myapp/launcher.png
答案1
你做的事情有两个问题。
首先,.desktop
文件是用于安装应用程序的,而不是通过Ctrl+运行的R。要安装您的应用程序,您需要将其打包并安装包。您可以在 Click App Store 中找到有关打包和发布应用程序的更多详细信息这里。
其次,您在 中的路径.desktop
应该是本地文件,而不是绝对路径。以下是文件的示例.desktop
:
[Desktop Entry]
Name=Tasks
Comment=Your tasks, every device, everywhere.
Exec=qmlscene $@ ubuntu-tasks.qml
Icon=ubuntu-tasks.png
Terminal=false
Type=Application
X-Ubuntu-Touch=true
需要注意以下几点:
该
Exec
行应采用的格式qmlscene $@ <file.qml>
,仅包含主 QML 文件的名称,不包含目录信息。该
Icon
行应采用 的形式Icon=<icon.png>
,仅包含文件名(包括扩展名),没有目录信息。
现在,我上面提供的信息是关于如何通过将您的应用打包到 Click 包中来在 Ubuntu Touch 设备上运行您的应用。Click 包适用于 Ubuntu Touch,目前不与 Unity 桌面集成。因此,如果您希望能够从 Dash/Launcher 运行您的应用并查看其图标,您需要做两件事:
将您的
.desktop
文件复制到~/.local/share/applications
并使用图标的绝对路径,而不仅仅是文件名,就像打包应用程序时一样。将您的图标复制到
~/.icons
答案2
桌面版本:对我来说Ubuntu 20.04 桌面Squeezeplay 的图标没有显示,无论是在搜索窗口还是在 gnome3 侧面停靠面板中。
解决方案多于工作于@我相信对于我来说,在搜索对话框中显示一个图标,但不在 gnome 侧面板中显示。
添加StartupWMClass=jivexprop WM_CLASS
(在 cli 中单击打开的应用程序)从答案中找到桌面文件这里任务完成,现在我可以在任何地方看到(搜索对话框,按“Windows”键和 gnome dock 侧面板)提供的图标文件(png 文件格式,最大尺寸 512x512,我选择 256x256)!桌面文件生成如下
$ vim ~/.local/applications/squeezeplay.desktop
::
[Desktop Entry]
Name=Squeezeplay
StartupNotify=true
MimeType=text/plain;
Comment=https://sourceforge.net/projects/lmsclients/files/squeezeplay/linux/ The Linux version of Squeezelite-X (similar) working with LMS
Exec=/opt/squeezeplay/bin/squeezeplay.sh
Icon=squeezeplay-icon2-256x256.png
Terminal=false
Type=Application
StartupNotify=true
StartupWMClass=jive
Categories=Utility;Radio;
就像解释的那样,图标存储在~/.icons
给定名称的目录中Icon=
!感谢@iBelieve 和@Puspam!