通过快照安装的程序未显示在启动器中


37

刚刚更新到Ubuntu 16.04,并首次尝试使用snap软件包。

所以我需要meshlab来查看一些stl文件。跑进pitn登录问题。发现命令行安装快照软件包不需要登录。

sudo snap install meshlab

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

Answers:


40

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

emulate sh -c 'source /etc/profile'

这将使用bash仿真处理您的/ etc / profile文件,而bash仿真又将获取/etc/profile.d/*并设置适当的PATH等。

要将快照目录仅添加到您的路径,而不包括所有其他默认bash配置文件:

emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'

1
谢谢!同样适用于17.10。切换到zsh也给我带来了这个问题。
danwit

2
他们应该在安装过程中解决此问题,或者添加常见问题解答/故障排除步骤以进行管理。
BradErzwh

1
谢谢,为我工作了18.10。希望以后能以某种方式解决此问题。
帕维尔·达维多夫

1
辉煌,不幸的是,它在19.04上仍然是个问题
jhole89

11

它内置在捕捉系统中,但是您必须将链接添加到仪表板中。启动程序类型

snap run meshlab

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


7

对我来说,它似乎也与Ubuntu 18.04下Wayland / ZSH的组合有关-尽管变量中/var/lib/snapd/desktop列出了该代码XDG_DATA_DIRS(由来完成/etc/profile.d/apps-bin-path.sh),但启动器无法识别该文件夹中的应用。

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

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

5

快照程序包不会显示在启动器中吗?

只要快照提供了正确的.desktop文件,它们便会执行操作。只有Meshlab meshlabserver具有正确的桌面文件(确实,它显示在我的启动器中)。在meshlab.desktop文件,但是,试图给exec meshlab.meshlab,当它应该只是使用meshlab。结果,它不会出现。

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

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


5

为我运行Kubuntu 18.04的解决方案

export XDG_DATA_DIRS="$XDG_DATA_DIRS:/var/lib/snapd/desktop/"

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

正如dsager在他的回答中已经提到的那样,通常的做法/etc/profile.d/apps-bin-path.sh似乎无效。


2
这非常完美-Kubuntu用户。
约翰,

谢谢!在Kubuntu上为我解决了问题。
ДмитрийПолянин

3

您必须snap run meshlab从终端运行并停止它,然后您将在应用程序列表中看到Meshlab


3

我无法评论其他人的帖子。但是,这是对dsager的回答的补充,该回答对Fedora 28(据我所知使用Wayland)有所帮助。

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

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

可能有几种不同的方法可以完成此操作,但它确实有效。


1
没用的ls使用for in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...代替。实现此目的的更简单方法是ln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null
David Foerster

我知道有一种方法可以执行您的第一个示例,但是当我最初编写此示例时,我不记得$ {i ## * /}部分。我将编辑我的帖子以包含该变体。但是,您后面的建议不会检查链接是否已经存在,因此无用地重新执行ln命令。实际上,我想找到一种避免grep的方法,以减少执行时启动的进程数量。谢谢你的评论。
埃里克·尼康诺维奇

我的第二个建议确实检查目标文件是否已经存在,如果是这种情况,将显示错误消息(重定向/dev/null并因此被抑制)。它没有做任何事情,“无用”:它叉&Exec的一个单一的时间,使一个系统调用symlink(2)symlinkat(2)每个匹配的文件。如果您使用循环检查文件类型(stat(2)),然后(有条件地)检查fork&exec ln(1),则调用symlink*(2)此操作会更多“无用”的工作。
David Foerster,

1

与搅拌器相同。

snap run blender

确实可以,但是不能解决问题。

我不得不复制blender.desktop/snap/blender/current/blender.desktop/usr/share/applications(有sudo),然后将所有固定:在GNOME菜单搅拌机节目和鹦鹉螺关联起来.blend的文件。

对我来说,在快照和侏儒之间似乎有些裂痕。也许我们需要的是一个敏捷的侏儒(或者它是一个侏儒的快照; ^)。


1
嗨,我按照您的指示进行了操作,但是现在我执行此程序的每个程序都有两个图标...请参阅i.imgur.com/aamlQJZ.png这是否也发生在您身上?
Cirelli94

1

将应用程序快捷方式从复制/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)上执行此操作


0

我在Ubuntu 18.04上遇到了相同的问题。Wayland似乎有问题。对我来说,解决方案是从Wayland切换回Xorg。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.