Entradas de menú que faltan y preferencias que desaparecen se arreglan con el mismo reflejo, y son problemas sin relación. Uno es la integración con el escritorio, el otro es el estado de la aplicación, y un icono nuevo no cambia ninguno de los dos por sí solo. Separarlos cuesta un experimento y explica la mayor parte de la confusión que la gente trae a este tema. El lanzador inicia un programa; el programa decide qué recuerda.

Dos tareas que solo parecen una

La integración con el escritorio significa que el entorno puede encontrar un ejecutable, presentar un nombre y un icono y pasar los argumentos correctos. El estado de la aplicación significa que el programa escribe un perfil en un lugar duradero y lo vuelve a leer en el siguiente arranque. Ninguno implica al otro, y por eso un acceso directo que funciona puede lanzar un cliente que lo ha olvidado todo.

Cambie una preferencia de visualización inocua con los propios controles de la aplicación, y luego ciérrela y vuelva a abrirla de la misma manera. Si la preferencia vuelve, la persistencia funciona y la queja restante trata de encontrar la ventana, no de guardar datos. Si desaparece, el acceso directo es una distracción y la verdadera pregunta es dónde guarda sus archivos ese proceso. Pruebe una preferencia cada vez, porque un cliente que vuelve a pedir la contraseña puede estar protegiendo un secreto en lugar de perdiendo una configuración.

Compare las entradas de arranque antes de reinstalar

Empiece por la entrada de escritorio y lea qué hace en realidad, porque un arranque desde el menú no es automáticamente el mismo entorno de proceso que un arranque desde la terminal. Las claves que importan son Exec, Path e, indirectamente, el entorno que proporciona la sesión. Un script envoltorio en Exec puede definir una variable, cambiar de directorio o invocar un ayudante privilegiado que el menú nunca muestra. Reinstalar sustituye archivos que la aplicación ya tenía, y esa rara vez es la variable que cambió.

grep -h '^Exec=' ~/.local/share/applications/*.desktop
desktop-file-validate ~/.local/share/applications/client.desktop

Mire el archivo de ~/.local/share/applications antes que el de /usr/share/applications, porque una copia de usuario ensombrece la copia del sistema. Ejecute desktop-file-validate cuando la entrada se comporte mal y busque una copia obsoleta que aún apunte a una ruta eliminada. La mayoría de los escritorios siguen prefiriendo una copia de usuario no válida, así que un archivo roto puede quitar la entrada del menú mientras el archivo del paquete sigue siendo válido. Después ejecute el mismo comando a mano y compare qué producen los dos arranques.

Dónde vive realmente una preferencia

Las aplicaciones que siguen las reglas de directorios base XDG ponen la configuración en $XDG_CONFIG_HOME, el estado duradero en $XDG_STATE_HOME y los datos desechables en $XDG_CACHE_HOME, con ~/.config, ~/.local/state y ~/.cache por defecto cuando esas variables no están definidas. Los tres son papeles y no promesas, así que un producto VPN concreto puede documentar algo completamente distinto. Leer la documentación del propio proveedor es mejor que adivinar una ruta a partir de un nombre de directorio. Cuando la documentación es escasa, observe el proceso en lugar del sistema de archivos.

Un rastreo filtrado por aperturas de archivos muestra cada ruta de configuración que prueba el cliente, incluida la que escribe al salir. Ejecútelo como el mismo usuario y con el mismo entorno, y luego compare esas rutas con los directorios que esperaba.

strace -f -e trace=openat,stat -o /tmp/vpn.log vpn-client

Los secretos y los perfiles tienen dueños distintos

Un perfil guardado y una credencial guardada son objetos separados, a menudo con almacenamiento separado. Uno puede vivir en un archivo de configuración mientras el otro se sienta en un llavero que se desbloquea por sesión, así que un cliente que vuelve a pedir la contraseña quizá solo esté haciendo lo que se diseñó para hacer. Borrar el perfil para detener la petición es como la gente pierde una configuración que funcionaba.

Los arranques privilegiados lo complican aún más, porque un arranque mediante sudo o un ayudante PolicyKit puede presentar un directorio personal distinto y, por tanto, un conjunto de configuración distinto. Corrija la propiedad del archivo concreto que documenta la aplicación en lugar de hacerlo de forma recursiva por todo el directorio personal, luego decida qué identidad debe poseer el perfil en adelante y mantenga los arranques futuros coherentes con ella.

Qué puede decirle el icono y qué no

Un icono demuestra que un archivo de lanzador se resuelve, y nada más. El estado de la conexión pertenece al cliente, así que la única comprobación fiable es la interfaz, la ruta o la propia salida de estado del cliente. Una miniaplicación de la bandeja que no llegó a iniciarse puede hacer que un túnel que funciona parezca roto, mientras que una miniaplicación obsoleta puede hacer que uno roto parezca bien. Pruebe la conexión y el lanzador por separado y después anote cuál de los dos arregló realmente.

Si ambos estaban rotos, resista tratar la reparación como un solo cambio. Arregle la entrada, confirme el arranque, confirme después el túnel y anote el resultado de cada paso. Ese registro es lo que hace que el próximo informe de ajustes perdidos sea diagnosticable en lugar de una repetición de este, y también es lo que dice a la siguiente persona qué mitad del problema era real.

Artículos relacionados