qt - 应用程序图标不适用于 Snap 打包
问题描述
我的桌面文件是:
[Desktop Entry]
Name=Heimer
GenericName=Mind map application
Comment=Mind map application
Exec=heimer
Icon=heimer
Type=Application
Categories=Education;
StartupNotify=true
我的 snapcraft.yaml 是:
name: heimer
version: '1.1.0'
summary: Heimer is a simple cross-platform mind map tool.
description: |
Heimer is a simple cross-platform mind map creation tool.
Emphasis on easy diagram creation, simplicity, and speed.
grade: stable
confinement: strict
icon: ../../../data/icons/heimer.png
apps:
heimer:
command: desktop-launch heimer
desktop: usr/share/applications/heimer.desktop
plugs: [home, x11, wayland]
parts:
gnu-heimer:
source: ../../../
plugin: cmake
configflags:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
build-packages:
- qtbase5-dev
- qttools5-dev
- qttools5-dev-tools
stage-packages:
- libqt5xml5
after: [desktop-qt5]
CMake 将应用程序图标安装到:
# Install icons
install(FILES data/icons/heimer.png DESTINATION share/pixmaps)
install(FILES data/icons/heimer.png DESTINATION share/icons/hicolor/64x64/apps)
桌面文件安装到:
# Install .desktop files
install(FILES ${CMAKE_BINARY_DIR}/heimer.desktop DESTINATION share/applications)
我不明白问题是什么。安装 snap 后,我的应用程序始终在启动器中显示默认系统图标(Ubuntu 18.04)。创建包或运行包时没有警告或任何东西。
注意:同样的设置也适用于 Debian 打包。我的 Debian 软件包使用完全相同的安装位置,并且图标在这种情况下工作得很好。
解决方案
目前,Snapcraft 不处理桌面条目的图标(因此系统无法找到图标,因为桌面条目中指定的图标不在图标搜索目录Icon
中),并且打包者必须手动将值修补$SNAP/path/to/the/icon.{png,svg}
为键指定的 .desktop 文件apps._app_name_.desktop
。
这是
- 我为此目的使用的 GNU Sed 脚本:https ://github.com/Lin-Buo-Ren/snapcrafters-template-plus/blob/5bb7778/snap/utilities/patch-desktop-entries.sed
- 用于修补的实用脚本:https ://github.com/Lin-Buo-Ren/snapcrafters-template-plus/blob/5bb7778/snap/utilities/patch-desktop-entries.bash
- 调用实用程序脚本的位置:https ://github.com/Lin-Buo-Ren/snapcrafters-template-plus/blob/5bb7778/snap/snapcraft.yaml#L137-L144
我已经在以下位置提交了改善这种情况的提案:提案:apps.<app-name>.icon
关键 - snapcraft - snapcraft.io
推荐阅读
- java - 如何检索按 ID 分组的所有实体?
- javascript - 您如何在 discord.js 中使用带有 awaitMessages 的 set Interval,我想让它按顺序排列
- c++ - 如何判断c++向量中的值类型(int或double)?
- react-native - FacebookAds:新应用不再支持广告请求中的 SDK 版本
- reactjs - 使用 npm 的 MQTT 包在 React 中操作不安全
- java - 从客户端到服务的简单 AJAX 调用
- rust - Rust 的流失,迭代器被丢弃......“删除任何剩余的元素”
- android - Landroid/content/pm/PackageInfo 类中没有虚方法 getLongVersionCode()J
- javascript - 鼠标悬停 javascript 功能在我的以外的另一台 PC 上不起作用
- android - Android边距弹出下拉微调器