Jak mogę usunąć osierocone pozycje menu Start?

14

Z jakiegoś powodu mam kilka resztek pozycji menu startowego z aplikacji (np. Gnome Do, Synapse, Leafpad.) I zastanawiałem się, czy istnieje sposób na usunięcie wszystkich osieroconych pozycji dla aplikacji, które nie są już zainstalowane?

Alan
źródło

Odpowiedzi:

33

Możesz użyć następującego polecenia, aby wyświetlić ikony aplikacji, które prowadzą do nieistniejących programów:

for i in {/usr,~/.local}/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || echo $i; done

Podejrzewam, że zauważysz, że większość twoich ikon to spersonalizowane ikony w twoim folderze domowym, ponieważ nie są one automatycznie czyszczone przez menedżera pakietów. Jeśli jest to przypadek i chcesz do kosza Zainstaluj trash-cli je wszystkie naraz, można użyć modyfikację poprzedniego polecenia:

for i in ~/.local/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || trash $i; done

Lub oczywiście przejdź do ~/.local/share/applications/Nautilus i wyrzuć je za pomocą interfejsu graficznego.

ændrük
źródło
To załatwiło sprawę! Czy w każdym razie mogę zmienić to w skrót, który mogę uruchomić, gdy coś takiego się powtórzy?
Alan
3

Jeśli przez menu startowe rozumiesz menu „Aplikacje”, możesz je edytować, przechodząc do: System -> Preferencje -> Menu główne.

Możesz dowolnie dodawać, zmieniać kolejność, edytować i usuwać wpisy.

Eugenio Perea
źródło
Cześć Eugenio. Zgadza się, ale muszę je przejrzeć, potwierdzić, czy naprawdę jest osierocone, czy nie, a następnie je usunąć. Szukam sposobu, który zrobiłby to wszystko dla mnie, ponieważ mam około 40+ wpisów, które chcę usunąć.
Alan
Prawdopodobnie najbardziej przyjazna dla nooba odpowiedź. +1
tir38
3

Po odinstalowaniu aplikacja powinna usunąć zainstalowane elementy menu. I działa w ten sposób na moim komputerze.

Jeśli działa inaczej, jest to błąd konkretnego pakietu lub problem w systemie. Nie mogę uwierzyć, że masz ponad 40 osieroconych wjazdów. Byłby to objaw problemu.

enzotib
źródło
To bardzo dziwne, nigdy nie miałem tego problemu, dopóki nie zaktualizowałem do Natty Narwhal. Mogę obniżyć wersję do 10.04LTS i poczekać chwilę, aż 11.04 będzie trochę bardziej wolne od błędów.
Alan
Istnieją programy, które aktywnie się instalują, ale same nie mają faktycznego instalatora. Zostają osierocone, jeśli plik binarny zostanie przeniesiony.
Pointy
2

Cóż, ten jest trudny, ale chcę przynajmniej powiedzieć ci, na czym polega problem.

Gnome przechowuje zainstalowane aplikacje w / usr / share / apps z plikami zakończonymi w .desktop (więc program vlc jest uruchamiany przez vlc.desktop)

Wewnątrz każdego z nich znajduje się sekcja „Kategoria”, w której możesz ustawić, w której części menu Aplikacje chcesz, aby to był program. Chodzi o to: jedynym sposobem, w jaki myślę, że można to zrobić, jest użycie skryptu bash, który pyta, czy pakiet związany z tym .desktop jest zainstalowany, czy nie. jeśli nie, usuń ten plik .desktop. Gdy usuniesz plik, zniknie on z menu, a gdy aplikacja znajduje się w kategorii, ta nie jest wyświetlana.

Ten jest trochę poza moim zasięgiem, ponieważ każde polecenie (dpkg, apt-get itp.) Zawsze zwraca dobre wyjście, gdy mówią, że pakiet nie jest zainstalowany, więc musimy przeczytać wyjście z tej aplikacji, szukając ciąg (fi „niezainstalowany”), sprawdź go, a jeśli ciąg istnieje, oznacza to, że aplikacja nie została zainstalowana, a pulpit można usunąć.

Jeśli chcesz, możesz po prostu wejść do folderu (/ usr / share / applications) i kliknąć pliki odpowiadające programom. Znikną z menu Aplikacje. Aby to zrobić automatycznie, potrzebuję dobrego skryptu bash na ścieżce, którą powiedziałem.

Mam nadzieję, że to w jakiś sposób pomoże.

David Rando
źródło
Cześć David, dzięki za pomoc! Ta wskazówka dotycząca wchodzenia do / usr / share / aplikacji jest z pewnością oszczędnością czasu w porównaniu do usuwania zepsutych linków jeden po drugim w edytorze menu.
Alan
0

Alternatywny:

Po odpowiedzi @ ændrük, oto podobne rozwiązanie, które obsługuje spacje w ścieżce i podfolderach , można tego użyć w określonym folderze lub na całym dysku do wyszukiwania uszkodzonych .desktopplików (skrót)

find {/usr,~/.local,/usr/local,}/share/applications/ -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line;  done

Dla całego dysku

find / -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line;  done

Uwaga: każda metoda może pokazywać fałszywie pozytywne sprawdzenie dwukrotnie znalezionych plików przed ich usunięciem

intika
źródło
0

To może być stare pytanie, ale pomyślałem, że i tak powinienem zadzwonić, ponieważ miałem ten sam problem, jednak żadna z tych sugestii nie zadziałała, ale znalazłem w Internecie bardzo inteligentną osobę, która znała program o nazwie Alacarte (łatwa edycja menu GNOME) program został zainstalowany za pomocą menedżera oprogramowania i jestem podekscytowany, że nadal jest dostępny, ponieważ domyślnie był używany, ale nie jest teraz i nie jest dobrze znanym programem, ale cieszę się, że jest nadal dostępny za pośrednictwem menedżera oprogramowania i jest tak łatwy w użyciu wystarczy kliknąć, aby podświetlić pozycję odinstalowanego programu, którego chcesz się pozbyć, i kliknij Usuń po prawej stronie i gotowe. może to pomoże, jeśli te inne sugestie nie działają dla Ciebie

Rozpoznać
źródło