Programy zainstalowane za pomocą przystawki nie są wyświetlane w programie uruchamiającym

37

Właśnie zaktualizowano do Ubuntu 16.04 i po raz pierwszy próbuję pakietów Snap.

Potrzebowałem więc meshlab, aby wyświetlić niektóre pliki STL. Wystąpił problem z zalogowaniem się na pitn. Stwierdziłem, że instalacja pakietów Snap nie wymaga logowania. Czy:

sudo snap install meshlab

i hej, zainstalowany presto meshlap, nie loguj się w pitn. Działa dobrze z linii poleceń. Jednak program nie pojawia się w programie uruchamiającym. Dlaczego to? Czy pakiety Snap nie pojawiają się w programie uruchamiającym? Jak mogę to naprawić?

Ron
źródło

Odpowiedzi:

40

Jeśli używasz zsh, snap katalogi binarne i pulpitu nie zostaną automatycznie dodane do zmiennych środowiskowych. Aby rozwiązać ten problem, dodałem następujący wiersz do / etc / zsh / zprofile (wzięty z Arch):

emulate sh -c 'source /etc/profile'

Spowoduje to przetworzenie pliku / etc / profilu z emulacją bash, która z kolei źródła /etc/profile.d/* i ustawi odpowiednie ŚCIEŻKI itp.

Aby dodać do ścieżki tylko katalogi przyciągania, bez uwzględniania całej reszty domyślnego profilu bash:

emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'
hackel
źródło
1
Dzięki! Działa dobrze również w wersji 17.10. Przejście na Zsh również przyniosło mi ten problem.
danwit
2
Powinny to naprawić w procesie instalacji lub dodać najczęściej zadawane pytania / kroki rozwiązywania problemów.
BradErzwh,
1
Dzięki, pracował dla mnie 18.10. Mam nadzieję, że zostanie to jakoś naprawione w przyszłości.
Pavel Davydov,
1
Genialne, niestety to wciąż problem 19.04
jhole89
11

Jest wbudowany w system zatrzasków, ale musisz dodać link do deski rozdzielczej. Aby uruchomić typ programu

snap run meshlab

po uruchomieniu kliknij prawym przyciskiem myszy ikonę i kliknij „dodaj do myślnika”.

William MacDonald
źródło
7

Dla mnie wydaje się to również związane z kombinacją Wayland / ZSH w Ubuntu 18.04 - chociaż /var/lib/snapd/desktopjest wymieniony w XDG_DATA_DIRSzmiennej (robi to /etc/profile.d/apps-bin-path.sh), program uruchamiający nie rozpoznaje aplikacji z tego folderu.

Szybkie obejście tego problemu polega na łączeniu żądanych plików pulpitu, na przykład:

ln -s /var/lib/snapd/desktop/applications/rubymine_rubymine.desktop .local/share/applications
dsager
źródło
5

Czy pakiety Snap nie pojawiają się w programie uruchamiającym?

Robią tak długo, jak snap dostarcza odpowiednie pliki .desktop. Tylko Meshlab meshlabserverma odpowiedni plik na pulpicie (i rzeczywiście pojawia się w moim programie uruchamiającym). Jednak meshlabplik .desktop próbuje wykonać meshlab.meshlab, kiedy powinien po prostu go użyć meshlab. W rezultacie nie pojawia się.

Jak mogę to naprawić?

Jeśli uruchomisz snap info meshlab, zobaczysz dane kontaktowe wydawcy. Sugeruję, aby zgłosić im błąd. Do tego czasu zawsze można uruchomić meshlabz interfejsu CLI lub utworzyć własny plik .desktop.

Kyle
źródło
5

Uruchamianie Kubuntu 18.04 dla mnie rozwiązanie jako dodanie

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

do pliku niestandardowego jak snap-apps.shw ~/.config/plasma-workspace/env. Ale dotyczy to tylko Plazmy 5 i może być już naprawione w Ubuntu 18.10.

Jak już wspomniał dsager w swojej odpowiedzi, zwykle /etc/profile.d/apps-bin-path.shnie działa.

A. Ziegler
źródło
2
Działa to doskonale - inny użytkownik Kubuntu.
John
Dzięki! Rozwiązałem problem dla mnie na Kubuntu.
Дмитрий Полянин
3

Musisz uruchomić snap run meshlabz terminala i zatrzymać go, a następnie zobaczysz Meshlab na liście aplikacji

Kyaw Kyaw Soe
źródło
3

Nie mogłem skomentować wpisu innej osoby. Jest to jednak dodatek do odpowiedzi dsager, która pomogła mi na Fedorze 28 (która, o ile wiem, korzysta z Waylanda)

Dodałem następujący snip do mojego ~ / .bash_profile, aby połączyć przy logowaniu każdy plik w / var / lib / snapd / desktop / applications. Podobnie można to zmodyfikować, aby usunąć łącza do aplikacji, które już nie istnieją, zmieniając ścieżki w linii for i linii if, a następnie zastępując 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

Prawdopodobnie istnieje kilka różnych sposobów na osiągnięcie tego, ale to działa.

Eric Niconovich
źródło
1
Bezużyteczne użycie ls. Użyj for in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...zamiast tego. Byłby to krótszy sposób na osiągnięcie tego ln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/null.
David Foerster
Wiedziałem, że istnieje sposób na wykonanie twojego pierwszego przykładu, jednak nie pamiętałem części $ {i ## * /}, kiedy początkowo to pisałem. Zedytuję swój post, aby uwzględnić ten wariant. Jednak ta ostatnia sugestia nie sprawdza, czy łącze już istnieje, a zatem bezużyteczne ponowne wykonanie polecenia ln. W rzeczywistości chciałem znaleźć sposób na uniknięcie grep, a także na zmniejszenie liczby procesów podkręconych podczas wykonywania. Dzięki za komentarz.
Eric Niconovich,
Moja druga propozycja ma sprawdzić, czy plik docelowy już istnieje, a jeśli tak jest w przypadku, wyświetla się komunikat o błędzie (przekierowanie do /dev/nulla zatem tłumione). Nie robi nic „bezużytecznego”: forksuje i wykonuje jednorazowo i wykonuje jedno wywołanie systemowe do symlink(2)lub symlinkat(2)dla każdego pasującego pliku. Jeśli użyjesz pętli, aby sprawdzić typ pliku ( stat(2)), a następnie (warunkowo) fork & exec, ln(1)który wywoła symlink*(2)to znacznie bardziej „bezużyteczną” pracę.
David Foerster
1

To samo z blenderem.

snap run blender

działa, jednak nie rozwiązało problemu.

Musiałem kopiować blender.desktopod /snap/blender/current/blender.desktopdo /usr/share/applications(z sudo), a potem wszystko zostało naprawione: pokazy blendera w menu gnome i nautilus kojarzy to z .blendplikami.

Wygląda mi na pęknięcie między snapami a gnomami. Być może potrzebujemy zgrabnego gnoma (a może to krasnoludka; ^).

Mike Ward
źródło
1
Cześć, zrobiłem to, co powiedziałeś, ale teraz mam dwie ikony dla każdego programu, który to zrobiłem ... patrz i.imgur.com/aamlQJZ.png Czy to też się stało?
Cirelli94,
1

Skopiuj skrót aplikacji z /var/lib/snapd/desktop/applications/do/usr/share/applications/

Przykład: sudo cp /var/lib/snapd/desktop/applications/brave_brave.desktop /usr/share/applications/

Musiałem to zrobić na GalliumOS 3.0 (na bazie Xubuntu)

JT
źródło
0

Natknąłem się na ten sam problem na Ubuntu 18.04. Wygląda na problem z Waylandem. Rozwiązaniem było dla mnie przejście z Wayland na Xorg.

romaind
źródło