应用程序图标不适用于 Snap 包装
Application icon doesn't work with Snap packaging
我的桌面文件是:
[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)
我不明白这是什么问题。安装快照后,我的应用程序始终在启动器中显示默认系统图标 (Ubuntu 18.04)。创建包或 运行 时没有警告或任何东西。
注意:同样的设置适用于 Debian 打包。我的 Debian 软件包使用完全相同的安装位置,并且图标在那种情况下工作正常。
目前,Snapcraft 不对桌面条目的图标进行任何处理(因此系统无法找到图标,因为桌面条目中指定的图标不在 icon search directories 中)并且打包程序有手动将 Icon
值 $SNAP/path/to/the/icon.{png,svg}
修补到 apps._app_name_.desktop
键指定的 .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
我已在 Proposal: The apps.<app-name>.icon
Key - snapcraft - snapcraft.io
提交了改善这种情况的提案
按照这些步骤,图标出现在桌面上(Snap 应用程序)
- 转到var/lib/snapd/desktop/application
- 复制 .desktop (vlc_vlc.desktop)
- 粘贴到桌面
- 右键单击并选择 允许午餐
我的桌面文件是:
[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)
我不明白这是什么问题。安装快照后,我的应用程序始终在启动器中显示默认系统图标 (Ubuntu 18.04)。创建包或 运行 时没有警告或任何东西。
注意:同样的设置适用于 Debian 打包。我的 Debian 软件包使用完全相同的安装位置,并且图标在那种情况下工作正常。
目前,Snapcraft 不对桌面条目的图标进行任何处理(因此系统无法找到图标,因为桌面条目中指定的图标不在 icon search directories 中)并且打包程序有手动将 Icon
值 $SNAP/path/to/the/icon.{png,svg}
修补到 apps._app_name_.desktop
键指定的 .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
我已在 Proposal: The apps.<app-name>.icon
Key - snapcraft - snapcraft.io
按照这些步骤,图标出现在桌面上(Snap 应用程序)
- 转到var/lib/snapd/desktop/application
- 复制 .desktop (vlc_vlc.desktop)
- 粘贴到桌面
- 右键单击并选择 允许午餐