Odpowiedzi:
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 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.
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.
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.
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.
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 .desktop
plikó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
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