Riparare una voce di avvio automatico VPN che parte solo su un desktop
Un lanciatore VPN che parte su un desktop e non su un altro è un filtro nella voce del desktop, non un guasto del tunnel. Leggi prima OnlyShowIn, TryExec e la sovrascrittura.
Il client VPN parte dal menu delle applicazioni, il tunnel si connette e l'icona non compare mai dopo l'accesso su una macchina, mentre lo stesso pacchetto si comporta correttamente su un'altra. Tre osservazioni vengono schiacciate in un'unica lamentela: se il programma è partito, se la sua interfaccia è visibile e se il tunnel è attivo. Il lanciatore è governato da una voce del desktop con chiavi di filtraggio, e quella voce non ha nulla a che vedere con il protocollo VPN. Segui la procedura in ordine e fermati quando una delle tre cose si separa nettamente.
Tre fatti separati: avvio, icona, tunnel
Una voce del desktop avvia un programma. Non può installare un'implementazione della tray e non può far comparire un indicatore in un pannello che non supporta il protocollo usato dall'applicazione. Se il processo è già in esecuzione, la domanda sull'avvio ha risposta e stai guardando invece un problema di integrazione.
Il tunnel è ancora un terzo fatto. Un'icona mancante non è prova che la connessione sia caduta, e uccidere e riavviare il client per «aggiustare» l'icona è esattamente il modo in cui un tunnel funzionante viene interrotto senza motivo. Gli utenti segnalano l'icona mancante e il tunnel rotto nella stessa frase, ed è proprio per questo che i due vanno separati sulla carta.
Sepàrali prima di cambiare qualsiasi cosa. Controlla se il processo esiste, poi se il pannello supporta l'indicatore, infine se l'interfaccia segnala una connessione. Ogni risposta punta a uno strato diverso e a un responsabile diverso.
Trova la voce che la sessione legge davvero
Le voci di avvio automatico vivono nella directory dell'utente e in quella di sistema, e quando i nomi dei file coincidono vince la copia dell'utente. Leggere quella sbagliata è il motivo più comune per cui una modifica sembra non avere effetto. Elenca entrambe le directory prima di modificare qualcosa e annota quale file la sessione caricherà davvero.
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 variabile d'ambiente stampa il nome della sessione con cui vengono confrontate le chiavi di filtraggio, e di solito è un elenco separato dai due punti. Confrontala letteralmente con i valori della voce, perché quei nomi sono dettagli di configurazione sensibili alle maiuscole e non una descrizione della sessione. Un valore GNOME non corrisponde a gnome, e il silenzio che ne deriva non ha alcun messaggio di errore allegato. Stampala invece di darla per scontata.
Se lo stesso nome file esiste in entrambe le directory, la copia dell'utente è quella che conta. Modificare il file di sistema e chiedersi perché nulla è cambiato è un'ora persa molto comune.
Leggi le chiavi di filtraggio, in ordine
La voce illustrativa qui sotto mostra le chiavi che decidono se una sessione avvia il programma. È un frammento, non un lanciatore completo, e i valori appartengono a un percorso fittizio.
[Desktop Entry] Type=Application Name=Example VPN Exec=/opt/example-vpn/client --minimized TryExec=/opt/example-vpn/client OnlyShowIn=GNOME;
OnlyShowIn limita la voce agli ambienti elencati e NotShowIn esclude quelli elencati. La specifica non definisce un comportamento utile quando entrambi compaiono in una stessa voce, quindi tratta un file che li contiene entrambi come un difetto e non come una combinazione ingegnosa. Rimuovi la chiave che non ti serve invece di aggiungere la seconda e sperare in una regola di precedenza.
TryExec chiede se l'eseguibile esiste prima che la sessione lo avvii. Un percorso rimasto da un'installazione precedente sopprime quindi l'avvio automatico anche se il nuovo pacchetto funziona quando viene avviato dal menu, e quel guasto somiglia esattamente a un filtro del desktop.
Sovrascrivi a livello utente, non a livello di sistema
Quando il filtro è davvero sbagliato per questa macchina, copia la voce di sistema nella directory dell'utente e modifica la copia. Secondo le regole di avvio automatico XDG, una voce utente con lo stesso nome ha la precedenza, e Hidden=true disattiva una voce senza cancellare il file di 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
Convalida il risultato prima di disconnetterti, perché una voce malformata viene ignorata in silenzio e il test successivo non ti dice nulla. Reinstallare il pacchetto non rimuoverà la tua sovrascrittura, che è il punto e anche il motivo per registrare che esiste. Annota il percorso del file nel ticket così la persona successiva trova la sovrascrittura invece di riderivarla.
Preferisci questo alla modifica dei lanciatori di sistema condivisi, che cambia il comportamento di ogni utente sulla macchina e non è riesaminabile allo stesso modo. Una sovrascrittura a livello utente è visibile in un solo posto, reversibile cancellando un file e facile da spiegare in un ticket. Il file di sistema resta come lo ha spedito il fornitore, così un aggiornamento del pacchetto non annulla silenziosamente il tuo ragionamento.
Conferma l'avvio senza toccare il tunnel
Disconnettiti e rientra, poi conferma che il processo esiste prima di guardare il pannello. Un avvio riuscito e un'icona visibile sono due risultati diversi, e solo il secondo richiede lavoro di integrazione con il desktop. Confonderli ti porta a reinstallare un pacchetto che funzionava da sempre.
pgrep -af example-vpn systemctl --user status example-vpn.service journalctl --user -b --no-pager | grep -i example-vpn | tail -20
Se il processo è assente, rileggi la voce cercando un filtro rimasto o un percorso TryExec obsoleto. Se è presente, il lanciatore ha funzionato e l'icona mancante è un problema separato con il supporto degli indicatori del pannello, non con la voce che hai appena modificato.
Registra le tre osservazioni nel ticket: avviato, visibile, connesso. Quel registro impedisce alla persona successiva di ripetere la stessa confusione tripla e chiarisce quale strato ha ancora bisogno di lavoro.