通过 snap 安装的程序未显示在 Launcher 中

Ron*_*Ron 54 launcher installed-programs snap

刚刚更新到 Ubuntu 16.04 并第一次尝试使用 snap 包。

所以我需要meshlab来查看一些stl文件。跑到pitn登录出现问题。发现snap包的命令行安装不需要登录。做了:

sudo snap install meshlab
Run Code Online (Sandbox Code Playgroud)

嘿,安装了 presto meshlap,没有 pitn 登录。从命令行工作正常。但是程序没有显示在启动器中。为什么是这样?snap 包不显示在启动器中吗?我怎样才能解决这个问题?

hac*_*kel 62

如果您使用的是 zsh,则 snap 二进制文件和桌面目录不会自动添加到您的环境变量中。为了解决这个问题,我在/etc/zsh/zprofile(取自Arch)中添加了以下行:

emulate sh -c 'source /etc/profile'
Run Code Online (Sandbox Code Playgroud)

这将使用 bash 模拟处理您的 /etc/profile 文件,后者反过来提供 /etc/profile.d/* 并设置正确的路径等。

仅将 snap 目录添加到您的路径中,而不包括所有其余的默认 bash 配置文件:

emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'
Run Code Online (Sandbox Code Playgroud)

  • 对某些人来说可能很明显,但更改后登录/注销 (4认同)
  • 谢谢!也适用于 17.10。切换到 zsh 也给我带来了这个问题。 (2认同)
  • 他们应该在安装过程中修复此问题或为 snap 添加常见问题解答/故障排除步骤。 (2认同)
  • 太棒了,不幸的是它在 19.04 仍然是一个问题 (2认同)

Pyr*_*yph 17

它内置在 snap 系统中,但您必须将链接添加到您的仪表盘中。启动程序类型

snap run meshlab
Run Code Online (Sandbox Code Playgroud)

一旦它启动并运行,右键单击该图标并单击“添加到破折号”。


小智 14

对我来说,它似乎也与 Ubuntu 18.04 下的 Wayland/ZSH 组合有关 - 即使/var/lib/snapd/desktopXDG_DATA_DIRS变量中列出(这是由 完成的/etc/profile.d/apps-bin-path.sh),启动器也无法识别该文件夹中的应用程序。

一个快速的解决方法是符号链接所需的桌面文件,例如:

ln -s /var/lib/snapd/desktop/applications/rubymine_rubymine.desktop .local/share/applications
Run Code Online (Sandbox Code Playgroud)


小智 11

运行 Kubuntu 18.04 为我添加的解决方案

export XDG_DATA_DIRS="$XDG_DATA_DIRS:/var/lib/snapd/desktop/"
Run Code Online (Sandbox Code Playgroud)

像自定义文件snap-apps.sh~/.config/plasma-workspace/env。但这仅适用于 Plasma 5,并且可能已经在 Ubuntu 18.10 中修复。

由于dsager 的回答已经提到,通常/etc/profile.d/apps-bin-path.sh似乎不起作用。

  • 这非常有效 - Kubuntu 用户。 (4认同)

小智 11

将应用程序快捷方式复制/var/lib/snapd/desktop/applications//usr/share/applications/

例子: sudo cp /var/lib/snapd/desktop/applications/brave_brave.desktop /usr/share/applications/

我必须在 GalliumOS 3.0(基于 Xubuntu)上执行此操作

  • 简单明了 (2认同)

kyr*_*ofa 6

snap 包不显示在启动器中吗?

只要快照提供正确的 .desktop 文件,它们就会这样做。只有 Meshlabmeshlabserver有一个合适的桌面文件(事实上,它显示在我的启动器中)。在meshlab.desktop文件,但是,试图给exec meshlab.meshlab,当它应该只是使用meshlab。结果,它没有出现。

我怎样才能解决这个问题?

如果您运行,snap info meshlab您将看到发布者的联系信息。我建议你向他们报告一个错误。在此之前,您始终可以meshlab从 CLI运行,或为其创建您自己的 .desktop 文件。


小智 6

对我来说帮助命令

ln -s /var/lib/snapd/desktop/applications ~/.local/share/applications/snap

此链接文件夹带有指向我的本地文件夹的快照应用程序快捷方式。现在我可以像其他应用程序一样运行快照应用程序。


Eri*_*ich 5

我无法评论别人的帖子。但是,这是添加到 dsager 的答案中,它在 Fedora 28 上帮助了我(据我所知,使用 Wayland)

我将以下片段添加到我的 ~/.bash_profile 以在登录时链接 /var/lib/snapd/desktop/applications 中的每个文件。同样,这可以修改为删除不再存在的应用程序的链接,方法是切换 for 行和 if 行中的路径,然后用 rm 替换 ln。

for i in /var/lib/snapd/desktop/applications/*.desktop; do
    if [ ! -f ~/.local/share/applications/${i##*/} ];then
            ln -s /var/lib/snapd/desktop/applications/${i##*/} ~/.local/share/applications/${i##*/};
    fi;
done
Run Code Online (Sandbox Code Playgroud)

可能有几种不同的方法来实现这一点,但它有效。