El client VPN arrenca des del menú d'aplicacions, el túnel es connecta i la icona no apareix mai després d'iniciar sessió en un equip, mentre que el mateix paquet es comporta bé en un altre. Tres observacions es redueixen a una sola queixa: si el programa s'ha iniciat, si la seva interfície és visible i si el túnel està actiu. El llançador es regeix per una entrada d'escriptori amb claus de filtratge, i aquesta entrada no té res a veure amb el protocol VPN. Segueix el manual en ordre i atura't quan una de les tres coses se separi clarament.

Tres fets separats: inici, icona, túnel

Una entrada d'escriptori inicia un programa. No pot instal·lar una implementació de safata i no pot fer que aparegui un indicador en un tauler que no admet el protocol que fa servir l'aplicació. Si el procés ja s'està executant, la pregunta sobre l'inici ja té resposta i el que tens al davant és un problema d'integració.

El túnel és un tercer fet. Una icona absent no és prova que la connexió s'hagi tallat, i matar i reiniciar el client per «arreglar» la icona és com s'interromp un túnel que funciona sense cap motiu. Els usuaris expliquen la icona absent i el túnel trencat en la mateixa frase, i per això mateix cal separar les dues coses sobre el paper.

Separa-les abans de canviar res. Comprova si el procés existeix, després si el tauler admet l'indicador i finalment si la interfície informa d'una connexió. Cada resposta assenyala una capa diferent i un responsable diferent.

Troba l'entrada que la sessió llegeix de debò

Les entrades d'inici automàtic viuen al directori de l'usuari i al directori del sistema, i quan els noms de fitxer coincideixen guanya la còpia de l'usuari. Llegir la que no toca és el motiu més habitual que un canvi sembli no tenir cap efecte. Llista tots dos directoris abans d'editar res i anota quin fitxer carregarà realment la sessió.

ls -l ~/.config/autostart/ /etc/xdg/autostart/
echo "$XDG_CURRENT_DESKTOP"
grep -H -E '^(OnlyShowIn|NotShowIn|TryExec|Hidden|Exec)=' ~/.config/autostart/*.desktop /etc/xdg/autostart/*.desktop

La variable d'entorn imprimeix el nom de la sessió amb què es comparen les claus de filtratge, que normalment és una llista separada per dos punts. Compara-la literalment amb els valors de l'entrada, perquè aquests noms són detalls de configuració sensibles a les majúscules i no una descripció de la sessió. Un valor GNOME no coincideix amb gnome, i el silenci resultant no porta cap missatge d'error adjunt. Imprimeix-la en lloc de suposar-la.

Si el mateix nom de fitxer existeix als dos directoris, la còpia de l'usuari és la que importa. Editar el fitxer del sistema i preguntar-se per què no ha canviat res és una hora perduda molt habitual.

Llegeix les claus de filtratge, en ordre

L'entrada il·lustrativa de sota mostra les claus que decideixen si una sessió inicia el programa. És un fragment, no un llançador complet, i els valors pertanyen a un camí fictici.

[Desktop Entry]
Type=Application
Name=Example VPN
Exec=/opt/example-vpn/client --minimized
TryExec=/opt/example-vpn/client
OnlyShowIn=GNOME;

OnlyShowIn restringeix l'entrada als entorns llistats i NotShowIn exclou els llistats. L'especificació no defineix cap comportament útil quan tots dos apareixen en una mateixa entrada, així que tracta un fitxer que contingui tots dos com un defecte i no com una combinació enginyosa. Elimina la clau que no necessites en lloc d'afegir la segona i confiar en una regla de precedència.

TryExec pregunta si l'executable existeix abans que la sessió el llanci. Per tant, un camí que queda d'una instal·lació anterior suprimeix l'inici automàtic encara que el paquet nou funcioni en iniciar-lo des del menú, i aquesta fallada sembla exactament un filtre d'escriptori.

Substitueix a nivell d'usuari, no a nivell de sistema

Quan el filtre és realment incorrecte per a aquest equip, copia l'entrada del sistema al directori de l'usuari i canvia la còpia. Segons les regles d'inici automàtic XDG, una entrada d'usuari amb el mateix nom té precedència, i Hidden=true desactiva una entrada sense esborrar el fitxer del sistema.

mkdir -p ~/.config/autostart
cp /etc/xdg/autostart/example-vpn.desktop ~/.config/autostart/
sed -i '/^OnlyShowIn=/d' ~/.config/autostart/example-vpn.desktop
desktop-file-validate ~/.config/autostart/example-vpn.desktop

Valida el resultat abans de tancar la sessió, perquè una entrada mal formada s'ignora en silenci i la prova següent no et diu res. Reinstal·lar el paquet no eliminarà la teva substitució, que és l'objectiu i també el motiu de deixar constància que existeix. Anota el camí del fitxer al tiquet perquè la propera persona trobi la substitució en lloc de tornar a deduir-la.

Prefereix això a editar llançadors compartits del sistema, que canvien el comportament de tots els usuaris de l'equip i no es poden revisar de la mateixa manera. Una substitució a nivell d'usuari és visible en un sol lloc, reversible esborrant un fitxer i fàcil d'explicar en un tiquet. El fitxer del sistema queda com el va enviar el proveïdor, així que una actualització del paquet no desfà el teu raonament en silenci.

Confirma l'inici sense tocar el túnel

Tanca la sessió i torna a entrar-hi, i després confirma que el procés existeix abans de mirar el tauler. Un inici correcte i una icona visible són dos resultats diferents, i només el segon necessita feina d'integració amb l'escriptori. Barrejar-los et fa reinstal·lar un paquet que funcionava tot el temps.

pgrep -af example-vpn
systemctl --user status example-vpn.service
journalctl --user -b --no-pager | grep -i example-vpn | tail -20

Si el procés no hi és, torna a llegir l'entrada per si queda algun filtre o un camí TryExec obsolet. Si hi és, el llançador ha funcionat i la icona absent és un problema a part amb el suport d'indicadors del tauler, no amb l'entrada que acabes d'editar.

Anota les tres observacions al tiquet: iniciat, visible, connectat. Aquest registre evita que la propera persona repeteixi la mateixa confusió triple i deixa clar quina capa encara necessita feina.

Articles relacionats