Limpieza de los enlaces del menú de aplicaciones que no están disponibles

Normalmente linux maneja bien la limpieza del sistema, siempre que vaya todo correctamente y se haga de la manera correcta. Uno de los problemas que me he encontrado y que supongo que muchos se habrán visto con ese problema alguna vez, es que se te queden accesos directos residuales en el menú de alguna aplicación que en algún momento estuvo instalada en tu sistema.

Esto es muy típico, cuando te pones a enredar con wine. Intentas hacer instalación de alguna aplicación de windows, para ver si con wine es compatible o ejecutable desde tu linux y por alguna razón te lo instala pero la instalación no la hace del todo bien. Cuando lo vas a eliminar desde las opciones de wine, ni siquiera reconoce que tienes ese programa instalado y por lo tanto, no te deja hacer la limpieza correspondiente.. por lo que optas por ir al directorio correspondiente y eliminarlo íntegramente.

Pero aún así, a veces vas a ver tus aplicaciones y te encuentras que quedan accesos directos (.desktop) hacia esa aplicación a pesar de que ya no anda en tu sistema.

area-de-trabajo-1_002

Un ejemplo, es el acceso directo para lanzar Adobe Lightroom, de unas pruebas de instalación que hice en su día. Abres el menú de aplicaciones de gnome y ahí está.. si lo seleccionas, te dice que no encuentra la aplicación donde debería y efectivamente, no la encuentra porque me cargué el directorio entero preso de las prisas y soluciones rápidas.

El primer sistema para limpiar estas cosas es usar programas como BleachBit, hay infinidad de sitios que explican como instalarlo, así que no lo detallaré aquí, pero es tremendamente sencillo. Es un programa que permite la limpieza del sistema y su cometido por lo general es excelente.

En este caso debemos seleccionar la opción de eliminar .desktop dañados, para que los busque y los elimine.

seleccion_001

Pero en mi caso, no encontró ninguno y no eliminaba el dichoso acceso directo a esa aplicación que intenté instalar con wine. Tal vez detecta otro tipo de enlaces «dañados», no profundicé más en ese tema.

La otra posibilidad es abrir un terminal e irte a

/usr/share/applications

o a

~/.local/share/applications

Buscar el .desktop que queremos eliminar y lo borramos ahí directamente. Pero sinceramente, viendo la cantidad de .desktop que hay no es fácil encontrar cual es el que necesitas borrar.

La otra opción es, abrir el editor de menú del sistema.. ir donde está la aplicación en cuestión y quitarlo. Además, ahí hay algo interesante… te dice donde está ese .desktop situado, lo cual arroja algo de información que te puede servir si quieres eliminarlo desde consola. Pero sinceramente, volvemos  a lo mismo, buscar a mano que enlace es, asegurarte que es ese y luego eliminarlo.

seleccion_003

Pero yo quiero algo más inteligente, porque puede ser que a parte de ese programa, haya más que ya no los tenga en el sistema y anden enlazados con un .desktop. Necesito algo automático que me arroje información para ver todos los enlaces que están rotos.

Así que pasamos a teclearnos un shell script, para este cometido:

# Limpieza de archivos .desktop rotos
#!/bin/sh
for i in ~/.local/share/applications/*.desktop;
do
echo -ne «check $i : »
desktop-file-validate –no-hints –no-warn-deprecated $i 1>/dev/null 2>&1

if [ $? -eq 0 ]; then
echo «OK!»
else
echo «FAIL!»
trash «$i»
fi
done

Para este script utilizamos dos aplicaciones desktop-file-validate (que nos permite validar un fichero .desktop) y trash-cli (que nos permite interactuar con la papelera del sistema, de ese modo, en vez de borrar los .desktop los envío a la papelera y así puedo recuperarlos en caso de fallo).

seleccion_005

Ejecutando el script, me avisa de algunos .desktop que no están bien y los envía a la papelera.

seleccion_007

Hay que tener un poco de cuidado porque el desktop-file-validator, no solo puede marcar un desktop como erróneo si no ecuentra la app que se ejecuta, sino si no está bien formado el archivo siguiendo unas normas (https://www.freedesktop.org/wiki/Software/desktop-file-utils/), es por ello que no elimino los enlaces directamente, sino los dejo en la papelera para revisar.

 

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.