![Snap 应用程序与 Ubuntu、KDE Wayland 和 ZSH 不兼容](https://linux22.com/image/937300/Snap%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%B8%8E%20Ubuntu%E3%80%81KDE%20%E2%80%8B%E2%80%8BWayland%20%E5%92%8C%20ZSH%20%E4%B8%8D%E5%85%BC%E5%AE%B9.png)
我遇到的问题
- 通过启动时的图标
snap run <appname>
是默认的 X 图标,而不是 snap 提供的图标 - 尝试让 OAuth 与 Todoist 之类的东西一起工作(浏览器中的 Google SSO,重定向回应用程序)时出现问题,出现错误,提示我 KIO 客户端不理解协议。
- 尝试使用
emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'
在我的~/.zshrc
- 我不愿意使用
emulate sh -c 'source /etc/profile'
- 添加
snap
到 bin 路径不工作解决任何问题 - KRunner 无法找到快速安装的应用程序
- 安装的任何启动器都无法找到快速安装的应用程序
- 手动将启动器添加到 Latte Dock 存在错误
答案1
好吧,实际上没有解决方案对我有用。我一切其他人都说过(添加到/etc/environment,模拟命令,一切)。
我正在使用 ZSH 运行 Kubuntu 20.04。我的解决方案是将本地应用程序文件夹与 snap 文件夹同步。
作为脚本
将此文件添加到“bin”路径中的任何文件夹中。对我来说,我有~/.local/bin
,但你可能有其他东西。确保无论你使用什么目录是路径变量的一部分。我已将此文件添加到~/.local/bin/sync-snap-apps
我的系统中。
#! /bin/zsh
shareApps="$HOME/.local/share/applications"
snapApps="/var/lib/snapd/desktop/applications"
# Detect all installed applications by snap
for file in $snapApps/*.desktop
do
# Get a not-ugly version of the .desktop
# Example: todoist_todoist.desktop -> todoist.desktop
link="$shareApps/$(echo $file | cut -d '_' -f2)"
# Create new link if none exists
[[ -f $link ]] || ln -s $file $link
done
# NOTE: Remove this if you do NOT want automatic broken symbolic link cleanup
for link in $shareApps/*.desktop; do
# Remove any broken *.desktop symbolic links
[[ -e $link ]] || rm $link
done
现在此文件已添加到您的系统中,将其附加sync-snap-apps
到您的末尾~/.zshrc
并启动一个新终端。它将自动同步您的 snap 应用程序。
作为 zshrc 的补充
~/.zshrc
将其放在文件底部
shareApps="$HOME/.local/share/applications"
snapApps="/var/lib/snapd/desktop/applications"
# Detect all installed applications by snap
for file in $snapApps/*.desktop
do
# Get a not-ugly version of the .desktop
# Example: todoist_todoist.desktop -> todoist.desktop
link="$shareApps/$(echo $file | cut -d '_' -f2)"
# Create new link if none exists
[[ -f $link ]] || ln -s $file $link
done
# NOTE: Remove this if you do NOT want automatic broken symbolic link cleanup
for link in $shareApps/*.desktop; do
# Remove any broken *.desktop symbolic links
[[ -e $link ]] || rm $link
done
最后说明
请注意,这为我解决了以下问题:
- KIO 客户端错误,我无法使用 Google Auth 重定向到 Snap 应用程序,类似于这个问题和这个 github 问题。
- 应用程序不在启动器中,类似于这篇 Reddit 帖子和这个问题。 相关此论坛帖子在 SnapCraft 上。
答案2
对于我来说,添加上述内容emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'
就/etc/zsh/zprofile
行了。(我正在使用 KUbuntu 23.10、zsh v5.9)我向其他人建议了这一点,他也复制了这一点。