Wie kann ich verwaiste Startmenüeinträge entfernen?

14

Aus irgendeinem Grund habe ich eine Reihe von verbleibenden Startmenüeinträgen aus Anwendungen (z. B. Gnome Do, Synapse, Leafpad) und habe mich gefragt, ob es eine Möglichkeit gibt, alle verwaisten Einträge für Anwendungen zu entfernen, die nicht mehr installiert sind.

Alan
quelle

Antworten:

32

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 Installiere trash-cli 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.

ændrük
quelle
Das hat funktioniert! Kann ich das irgendwie zu einer Verknüpfung machen, die ich ausführen kann, wenn so etwas noch einmal passiert?
Alan
3

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.

Eugenio Perea
quelle
Hallo Eugenio. Das ist richtig, aber ich muss jedes durchgehen, bestätigen, ob es wirklich verwaist ist oder nicht, und es dann löschen. Ich suche nach einer Möglichkeit, die all dies für mich erledigt, da ich über 40 Einträge habe, die ich entfernen möchte.
Alan
Wahrscheinlich die noobfreundlichste Antwort. +1
tir38
3

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.

Enzotib
quelle
Es ist sehr seltsam, ich hatte dieses Problem bis zu meinem Upgrade auf Natty Narwhal nie. Ich kann ein Downgrade auf 10.04LTS durchführen und kurz warten, bis der 11.04 etwas fehlerfreier ist.
Alan
Es gibt Programme, die sich selbst aktiv installieren, aber keinen eigentlichen Installer an sich haben. Sie werden verwaist, wenn die Binärdatei verschoben wird.
Pointy
2

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.

David Rando
quelle
Hallo David, danke für deine Hilfe! Dieser Tipp zum Aufrufen von / usr / share / applications spart sicherlich Zeit, verglichen mit dem Löschen der defekten Links nacheinander im Menü-Editor.
Alan
0

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 .desktopDateien 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

intika
quelle
0

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

Ken
quelle