Über snap installierte Programme werden im Launcher nicht angezeigt

37

Gerade auf Ubuntu 16.04 aktualisiert und zum ersten Mal Snap-Pakete ausprobiert.

Also brauchte ich meshlab, um einige STL-Dateien anzuzeigen. Lief ein, um mit pitn log in ein Problem zu treten. Es wurde festgestellt, dass für die Befehlszeileninstallation von Snap-Paketen keine Anmeldung erforderlich ist.

sudo snap install meshlab

und hey presto meshlap installiert, kein Pitn Login. Funktioniert gut von der Kommandozeile. Das Programm wird jedoch nicht im Launcher angezeigt. Warum ist das? Werden Snap-Pakete im Launcher nicht angezeigt? Wie kann ich das beheben?

Ron
quelle

Antworten:

40

Wenn Sie zsh verwenden, werden die Verzeichnisse snap binary und desktop Ihren Umgebungsvariablen nicht automatisch hinzugefügt. Um dies zu lösen, habe ich die folgende Zeile zu / etc / zsh / zprofile hinzugefügt (entnommen aus Arch):

emulate sh -c 'source /etc/profile'

Dadurch wird Ihre / etc / profile-Datei mit der Bash-Emulation verarbeitet, die wiederum /etc/profile.d/* als Quelle verwendet und die richtigen PATHs usw. festlegt.

So fügen Sie Ihrem Pfad nur die Ausrichtungsverzeichnisse hinzu, ohne den Rest des Standard-Bash-Profils einzuschließen:

emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'
Hackel
quelle
1
Vielen Dank! Funktioniert auch am 17.10. Der Wechsel zu zsh brachte auch dieses Problem für mich auf.
Danwit
2
Sie sollten dies während des Installationsvorgangs beheben oder einen FAQ / Fehlerbehebungsschritt für den Snap hinzufügen.
BradErzwh
1
Danke, habe am 18.10. Für mich gearbeitet. Hoffe das wird in Zukunft irgendwie behoben.
Pavel Davydov
1
Genial
11

Es ist in das Snap-System integriert, aber Sie müssen den Link zu Ihrem Dash hinzufügen. So starten Sie den Programmtyp

snap run meshlab

Sobald es läuft, klicken Sie mit der rechten Maustaste auf das Symbol und klicken Sie auf "Zum Bindestrich hinzufügen".

William MacDonald
quelle
7

Für mich scheint es auch mit der Kombination von Wayland / ZSH unter Ubuntu 18.04 zu tun zu haben - obwohl dies /var/lib/snapd/desktopin der XDG_DATA_DIRSVariablen aufgeführt ist (dies geschieht durch /etc/profile.d/apps-bin-path.sh), erkennt der Launcher keine Apps aus diesem Ordner.

Eine schnelle Problemumgehung besteht darin, die gewünschten Desktop-Dateien symbolisch zu verknüpfen. Beispiel:

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

Werden Snap-Pakete im Launcher nicht angezeigt?

Sie funktionieren, solange der Snap die richtigen .desktop-Dateien enthält. Nur Meshlabs meshlabserverhat eine richtige Desktop-Datei (und tatsächlich wird sie in meinem Launcher angezeigt). Die meshlab.desktop-Datei versucht jedoch auszuführen meshlab.meshlab, wenn sie nur verwendet werden soll meshlab. Infolgedessen wird es nicht angezeigt.

Wie kann ich das beheben?

Wenn Sie ausführen snap info meshlab, werden Kontaktinformationen für den Herausgeber angezeigt. Ich schlage vor, Sie melden ihnen einen Fehler. Bis dahin können Sie immer meshlabvon der CLI ausführen oder eine eigene .desktop-Datei dafür erstellen.

Kyle
quelle
5

Laufen Kubuntu 18.04 die Lösung für mich als Hinzufügen

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

zu einer benutzerdefinierten Datei wie snap-apps.shin ~/.config/plasma-workspace/env. Dies gilt jedoch nur für Plasma 5 und ist möglicherweise bereits in Ubuntu 18.10 behoben.

Wie der dsager bereits in seiner Antwort erwähnt /etc/profile.d/apps-bin-path.shhat, scheint das Übliche nicht zu funktionieren.

A. Ziegler
quelle
2
Das hat perfekt funktioniert - Mitbenutzer von Kubuntu.
John
Vielen Dank! Löste das Problem für mich auf Kubuntu.
Дмитрий Полянин
3

Sie müssen snap run meshlabvom Terminal aus starten und stoppen, dann wird Meshlab in Ihrer Anwendungsliste angezeigt

Kyaw Kyaw Soe
quelle
3

Ich konnte den Beitrag einer anderen Person nicht kommentieren. Dies ist jedoch eine Ergänzung zu der Antwort von dsager, die mir auf Fedora 28 geholfen hat (soweit ich das beurteilen kann, wird Wayland verwendet).

Ich habe den folgenden Snip zu meinem ~ / .bash_profile hinzugefügt, um beim Anmelden jede Datei in / var / lib / snapd / desktop / applications zu verknüpfen. In ähnlicher Weise könnte dies geändert werden, um die Links für Apps zu entfernen, die nicht mehr existieren, indem die Pfade in der for-Zeile und der if-Zeile geändert werden und dann ln durch rm ersetzt wird.

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

Es gibt wahrscheinlich eine Handvoll verschiedener Möglichkeiten, um dies zu erreichen, aber es funktioniert.

Eric Niconovich
quelle
1
Nutzloser Gebrauch von ls. Verwenden Sie for in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...stattdessen. Ein kürzerer Weg, dies zu erreichen, wäre ln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null.
David Foerster
Ich wusste, dass es eine Möglichkeit gab, Ihr erstes Beispiel auszuführen, aber ich konnte mich nicht an den Teil $ {i ## * /} erinnern, als ich das anfänglich schrieb. Ich bearbeite meinen Beitrag, um diese Variante einzuschließen. Ihr letzterer Vorschlag überprüft jedoch nicht, ob die Verknüpfung bereits vorhanden ist, und führt den Befehl ln sinnlos erneut aus. Tatsächlich wollte ich einen Weg finden, um Grep zu vermeiden und die Anzahl der Prozesse zu reduzieren, die während der Ausführung ausgelöst werden. Vielen Dank für Ihren Kommentar.
Eric Niconovich
Mein zweiter Vorschlag hat zu überprüfen , ob die Zieldatei bereits vorhanden ist, und wenn das der Fall ist, gibt eine Fehlermeldung (Umleitung /dev/nullund somit unterdrückt). Es macht nichts „Nutzloses“: Es gibt & Execs ein einziges Mal und ruft ein System zu symlink(2)oder symlinkat(2)für jede passende Datei auf. Wenn Sie eine Schleife verwenden, um nach Dateityp ( stat(2)) zu suchen, und dann (bedingt) Fork & Exec, ln(1)das aufruft symlink*(2), ist das viel mehr "nutzlose" Arbeit.
David Foerster
1

Gleiches gilt für Mixer.

snap run blender

funktioniert, konnte das Problem jedoch nicht beheben.

Ich musste blender.desktopvon /snap/blender/current/blender.desktopnach /usr/share/applications(mit sudo) kopieren und dann war alles repariert: Blender wird in den Gnome-Menüs angezeigt und Nautilus ordnet es .blendDateien zu.

Sieht für mich nach einer Art Riss zwischen Schnappschüssen und Zwergen aus. Vielleicht brauchen wir einen bissigen Zwerg (oder einen gnomischen Schnappschuss; ^).

Mike Ward
quelle
1
Hallo, ich habe getan, was Sie gesagt haben, aber ich habe jetzt zwei Symbole für jedes Programm, das ich getan habe ... siehe i.imgur.com/aamlQJZ.png Ist Ihnen das auch passiert?
Cirelli94
1

Kopieren Sie die Anwendungsverknüpfung von /var/lib/snapd/desktop/applications/nach/usr/share/applications/

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

Ich musste dies auf GalliumOS 3.0 (Xubuntu-basiert) tun

JT
quelle
0

Ich bin auf Ubuntu 18.04 auf dasselbe Problem gestoßen. Es scheint ein Problem mit Wayland zu sein. Die Lösung für mich war, von Wayland zu Xorg zurückzukehren.

romaind
quelle