¿Cómo puedo eliminar las entradas huérfanas del menú de inicio?


14

Por alguna razón, tengo un montón de entradas de menú de inicio sobrantes de las aplicaciones (por ejemplo, Gnome Do, Synapse, Leafpad) y me preguntaba si hay una manera de eliminar todas las entradas huérfanas para aplicaciones que ya no están instaladas.

Respuestas:


33

Puede usar el siguiente comando para enumerar los íconos de aplicaciones que se vinculan a programas inexistentes:

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

Sospecho que descubrirá que la mayoría de los suyos son iconos personalizados en su carpeta de inicio, ya que el administrador de paquetes no los limpia automáticamente. Si este es el caso y desea eliminarlos Instalar trash-cli todos a la vez, puede usar una modificación del comando anterior:

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

O, por supuesto, navegue ~/.local/share/applications/en Nautilus y elimínelos mediante la interfaz gráfica.


Eso hizo el truco! ¿Hay alguna forma de convertir eso en un atajo que pueda ejecutar cuando tal cosa vuelva a ocurrir?
Alan

3

Si por menú de inicio te refieres al menú 'Aplicaciones', puedes editarlo yendo a: Sistema -> Preferencias -> Menú principal.

Puede agregar, reorganizar, editar y eliminar entradas a voluntad.


Hola eugenio Eso es correcto, pero tengo que revisar cada uno, confirmar si realmente está huérfano o no, y luego eliminarlo. Estoy buscando una forma de hacer todo esto por mí, ya que tengo más de 40 entradas que quiero eliminar.
Alan

Probablemente la respuesta más amigable para los novatos. +1
tir38

3

Cuando se desinstala una aplicación, debe eliminar los elementos del menú que instaló. Y funciona de esta manera en mi máquina.

Si funciona de manera diferente, es un error de un paquete en particular o un problema en su sistema. No puedo creer que tengas más de 40 huérfanos de entrada. Sería el síntoma de un problema.


Es muy extraño, nunca he tenido este problema hasta mi actualización a Natty Narwhal. Puedo bajar a 10.04LTS y esperar un poco hasta que 11.04 esté un poco más libre de errores.
Alan

Hay programas que se instalan activamente pero que no tienen un instalador real per se. Se quedan huérfanos si se mueve el binario.
Puntiagudo

2

Bueno, este es difícil pero quiero, al menos, decirte cuál es el problema.

Gnome almacena las aplicaciones instaladas en / usr / share / aplicaciones con archivos terminados en .desktop (por lo que vlc.desktop lanza el programa vlc)

Dentro de cada uno, hay una sección de "Categoría" en la que puede establecer en qué parte del menú de Aplicaciones ese programa desea que sea. La cuestión es: la única forma en que creo que se puede hacer lo que está pidiendo es usar un script bash que pregunte si el paquete relacionado con ese .desktop está instalado o no. si no es así, elimine ese archivo .desktop. Cuando elimine el archivo, estará fuera del menú, y cuando su aplicación esté en una categoría, esa no se mostrará.

Ese está un poco fuera de mi alcance porque cada comando (dpkg, apt-get, etc.) siempre devuelve una buena salida cuando dicen que el paquete no está instalado, por lo que tenemos que leer la salida de esa aplicación buscando un String (fi "no instalado"), verifíquelo, y si el String existe, significa que la aplicación no está instalada y se puede eliminar el .desktop.

Entonces, si lo desea, puede ingresar a la carpeta (/ usr / share / aplicaciones) y hacer clic en los archivos que corresponden a los programas. Desaparecerán del menú Aplicaciones. Para hacerlo automáticamente, creo que necesitamos un buen script bash en la pista que dije.

Espero que esto ayude de alguna manera.


Hola David, gracias por tu ayuda! Ese consejo sobre entrar en / usr / share / aplicaciones es sin duda un ahorro de tiempo en comparación con la eliminación de los enlaces rotos uno por uno en el editor de menús.
Alan

0

Alternativa:

Siguiendo la respuesta de @ ændrük, aquí hay una solución similar que admite espacios en la ruta y subcarpetas , esto se puede usar en una carpeta específica o en todo el disco para buscar .desktoparchivos rotos (acceso directo)

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

Para todo el disco

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

Nota: cualquier método puede mostrar una verificación de falso positivo dos veces los archivos encontrados antes de eliminarlos


0

Esta puede ser una vieja pregunta publicada, pero pensé que debería intervenir de todos modos ya que tenía el mismo problema, sin embargo, ninguna de estas sugerencias funcionó, pero encontré en Internet a una persona muy inteligente que conocía un programa llamado Alacarte (edición fácil del menú GNOME) programa que instaló usando el administrador de software y estoy encantado de que todavía esté disponible porque usó la instalación por defecto, pero no lo es ahora y no es un programa bien conocido, pero estoy muy contento de que todavía esté disponible a través del administrador de software y es tan fácil de usar, simplemente haga clic en para resaltar la entrada del programa desinstalado del que desea deshacerse y haga clic en eliminar a la derecha y listo. tal vez esto ayude si estas otras sugerencias no funcionan para usted

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.