Comment supprimer les entrées orphelines du menu Démarrer?


14

Pour une raison quelconque, j'ai un tas d'entrées de menu de démarrage restantes à partir d'applications (par exemple, Gnome Do, Synapse, Leafpad.) Et je me demandais s'il y avait un moyen de supprimer toutes les entrées orphelines pour les applications qui ne sont plus installées?

Réponses:


33

Vous pouvez utiliser la commande suivante pour répertorier les icônes d'application liées à des programmes inexistants:

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

Je suppose que vous constaterez que la plupart des vôtres sont des icônes personnalisées dans votre dossier de départ, car elles ne sont pas automatiquement nettoyées par le gestionnaire de paquets. Si tel est le cas et que vous souhaitez les supprimer Installer trash-cli tous à la fois, vous pouvez utiliser une modification de la commande précédente:

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

Ou, bien sûr, accédez à ~/.local/share/applications/Nautilus et supprimez-les via l'interface graphique.


Ça a fait l'affaire! Existe-t-il de toute façon que je peux transformer cela en raccourci que je peux exécuter quand une telle chose se reproduit?
Alan

3

Si par menu Démarrer, vous entendez le menu 'Applications', vous pouvez le modifier en allant dans: Système -> Préférences -> Menu principal.

Vous pouvez ajouter, réorganiser, modifier et supprimer des entrées à volonté.


Salut Eugenio. C'est exact, mais je dois parcourir chacun d'eux, confirmer s'il est vraiment orphelin ou non, puis le supprimer. Je cherche un moyen qui ferait tout cela pour moi, car j'ai environ 40+ entrées que je veux supprimer.
Alan

Probablement la réponse la plus conviviale. +1
tir38

3

Lorsqu'une application est désinstallée, elle doit supprimer les éléments de menu qu'elle a installés. Et cela fonctionne de cette façon sur ma machine.

Si cela fonctionne différemment, c'est un bogue d'un paquet particulier ou un problème sur votre système. Je ne peux pas croire que vous ayez plus de 40 entrées orphelines. Ce serait le symptôme d'un problème.


C'est très étrange, je n'ai jamais eu ce problème jusqu'à ma mise à niveau vers Natty Narwhal. Je peux revenir à 10.04LTS et attendre un peu jusqu'à ce que 11.04 soit un peu plus exempt de bogues.
Alan

Il existe des programmes qui s'installent activement mais qui n'ont pas de véritable programme d'installation en soi. Ils deviennent orphelins si le binaire est déplacé.
Pointy

2

Eh bien, celui-ci est difficile mais je veux au moins vous dire quel est le problème.

Gnome stocke les applications installées dans / usr / share / applications avec des fichiers terminés par .desktop (donc le programme vlc est lancé par vlc.desktop)

À l'intérieur de chacun, il y a une section "Catégorie" dans laquelle vous pouvez définir dans quelle partie du menu Applications le programme que vous souhaitez qu'il soit. La chose est: la seule façon dont je pense que cela peut être fait ce que vous demandez est d'utiliser un script bash qui demande si le package lié à ce .desktop est installé ou non. sinon, supprimez ce fichier .desktop. Lorsque vous supprimez le fichier, il sera hors du menu et lorsque votre application se trouve dans une catégorie, celle-ci n'est pas affichée.

Celui-ci est un peu hors de ma portée car chaque commande (dpkg, apt-get, etc.) retourne toujours une bonne sortie quand ils disent que le paquet n'est pas installé, nous devons donc lire la sortie de cette application en recherchant une chaîne (fi "non installé"), vérifiez-la et si la chaîne existe, cela signifie que l'application n'est pas installée et que le .desktop peut être supprimé.

Donc, si vous le souhaitez, vous pouvez simplement entrer dans le dossier (/ usr / share / applications) et cliquer sur les fichiers qui correspondent aux programmes. Ils disparaîtront du menu Applications. Pour le faire automatiquement, je suppose que nous avons besoin d'un bon script bash sur la piste que j'ai dite.

J'espère que cela aide d'une certaine manière.


Salut David, merci pour ton aide! Cette astuce pour entrer dans / usr / share / applications est certainement un gain de temps par rapport à la suppression des liens rompus un par un dans l'éditeur de menu.
Alan

0

Alternative:

Après la réponse de @ ændrük, voici une solution similaire qui prend en charge les espaces dans le chemin d'accès et les sous-dossiers , cela peut être utilisé sur un dossier spécifique ou sur le disque entier pour rechercher des .desktopfichiers cassés (raccourci)

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

Pour le disque entier

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

Remarque: toute méthode peut afficher un faux contrôle positif deux fois les fichiers trouvés avant de les supprimer


0

C'est peut-être une vieille question postée mais j'ai pensé que je devrais carillon de toute façon car j'avais le même problème mais aucune de ces suggestions n'a fonctionné mais j'ai trouvé sur Internet une personne très intelligente qui connaissait un programme appelé Alacarte (édition facile du menu GNOME) programme qu'il a installé à l'aide du gestionnaire de logiciels et je suis ravi qu'il soit toujours disponible car il a été installé par défaut mais n'est pas maintenant et n'est pas un programme bien connu, mais je suis tellement content qu'il soit toujours disponible via le gestionnaire de logiciels et c'est si facile à utiliser, cliquez simplement sur pour mettre en surbrillance l'entrée du programme désinstallé dont vous souhaitez vous débarrasser et cliquez sur supprimer à droite et c'est fait. peut-être que cela vous aidera si ces autres suggestions ne fonctionnent pas pour vous

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.