Antworten:
Mit dem folgenden Befehl können Sie Anwendungssymbole auflisten, die auf nicht vorhandene Programme verweisen:
for i in {/usr,~/.local}/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || echo $i; done
Ich vermute, Sie werden feststellen, dass es sich bei den meisten von Ihnen um benutzerdefinierte Symbole in Ihrem privaten Ordner handelt, da diese vom Paketmanager nicht automatisch bereinigt werden. Wenn dies der Fall ist und Sie alle auf einmal in den Papierkorb werfen möchten, können Sie eine Änderung des vorherigen Befehls verwenden:
for i in ~/.local/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || trash $i; done
Oder navigieren Sie ~/.local/share/applications/
in Nautilus und werfen Sie sie über die grafische Oberfläche in den Papierkorb.
Wenn Sie mit "Startmenü" das Menü "Anwendungen" meinen, können Sie es bearbeiten, indem Sie auf "System" -> "Einstellungen" -> "Hauptmenü" gehen.
Sie können Einträge nach Belieben hinzufügen, neu anordnen, bearbeiten und löschen.
Wenn eine Anwendung deinstalliert wird, sollte sie die installierten Menüelemente entfernen. Und so funktioniert es auf meiner Maschine.
Wenn es anders funktioniert, ist es ein Fehler eines bestimmten Pakets oder ein Problem auf Ihrem System. Ich kann nicht glauben, dass Sie mehr als 40 Waisen haben. Es wäre das Symptom eines Problems.
Nun, das ist schwer, aber ich möchte dir zumindest sagen, was das Problem ist.
Gnome speichert die installierten Anwendungen in / usr / share / applications mit Dateien, die auf .desktop enden (damit das vlc-Programm von vlc.desktop gestartet wird).
In jedem befindet sich ein Abschnitt "Kategorie", in dem Sie festlegen können, in welchem Teil des Anwendungsmenüs das gewünschte Programm angezeigt werden soll. Die Sache ist: Die einzige Möglichkeit, wie ich denke, es zu tun, wonach Sie fragen, ist die Verwendung eines Bash-Skripts, das fragt, ob das mit dieser .desktop-Datei verbundene Paket installiert ist oder nicht. Ist dies nicht der Fall, löschen Sie die Desktop-Datei. Wenn Sie die Datei löschen, wird sie nicht mehr im Menü angezeigt, und wenn sich Ihre App in einer Kategorie befindet, wird diese nicht angezeigt.
Das ist ein bisschen außerhalb meines Bereichs, weil jeder Befehl (dpkg, apt-get, etc ..) immer einen guten Exit zurückgibt, wenn sie sagen, dass das Paket nicht installiert ist, also müssen wir den Exit dieser App lesen, nach dem gesucht wird Wenn ein String (zB "nicht installiert") vorhanden ist, überprüfen Sie ihn. Wenn der String vorhanden ist, bedeutet dies, dass die Anwendung nicht installiert ist und die .desktop-Datei gelöscht werden kann.
Wenn Sie möchten, können Sie einfach den Ordner (/ usr / share / applications) eingeben und auf die Dateien klicken, die den Programmen entsprechen. Sie verschwinden aus dem Anwendungsmenü. Um es automatisch zu machen, brauchen wir vermutlich ein gutes Bash-Skript auf der Strecke, die ich gesagt habe.
Ich hoffe das hilft irgendwie.
Alternative:
Nach der Antwort von @ ændrük gibt es hier eine ähnliche Lösung, die Leerzeichen in Pfaden und Unterordnern unterstützt. Diese kann für einen bestimmten Ordner oder die gesamte Festplatte verwendet werden, um nach beschädigten .desktop
Dateien zu suchen (Verknüpfung).
find {/usr,~/.local,/usr/local,}/share/applications/ -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line; done
Für die gesamte Festplatte
find / -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line; done
Hinweis: Bei jeder Methode können falsch positive Überprüfungen zweimal gefundener Dateien angezeigt werden, bevor sie gelöscht werden
Dies mag eine alte Frage sein, aber ich dachte, ich sollte mich trotzdem melden, da ich das gleiche Problem hatte, aber keiner dieser Vorschläge funktionierte. Ich fand im Internet eine sehr kluge Person, die von einem Programm namens Alacarte wusste (einfaches Bearbeiten des GNOME-Menüs). Das Programm wurde mit dem Software-Manager installiert, und ich bin begeistert, dass es immer noch verfügbar ist, da es standardmäßig installiert wurde, aber noch nicht installiert ist. Es ist kein bekanntes Programm, aber ich bin so froh, dass es immer noch über den Software-Manager verfügbar ist Klicken Sie einfach auf, um den deinstallierten Programmeintrag zu markieren, den Sie entfernen möchten, und klicken Sie rechts auf Löschen. Vielleicht hilft dies, wenn diese anderen Vorschläge für Sie nicht funktionieren