Voci di menu mancanti e preferenze che svaniscono si riparano con lo stesso riflesso, e sono problemi senza rapporto. Uno è l’integrazione con il desktop, l’altro è lo stato dell’applicazione, e una nuova icona non cambia nessuno dei due da sola. Separarli costa un esperimento e spiega gran parte della confusione che le persone portano su questo tema. Il launcher avvia un programma; il programma decide cosa ricorda.

Due compiti che sembrano solo uno

L’integrazione con il desktop significa che l’ambiente può trovare un eseguibile, presentare un nome e un’icona e passare gli argomenti giusti. Lo stato dell’applicazione significa che il programma scrive un profilo in un luogo durevole e lo rilegge all’avvio successivo. Nessuno dei due implica l’altro, ed è per questo che una scorciatoia funzionante può avviare un client che ha dimenticato tutto.

Cambia una preferenza di visualizzazione innocua tramite i controlli dell’applicazione stessa, poi chiudila e riaprila allo stesso modo. Se la preferenza torna, la persistenza funziona e la lamentela restante riguarda il trovare la finestra, non il salvare dati. Se sparisce, la scorciatoia è una distrazione e la vera domanda è dove quel processo tiene i suoi file. Prova una preferenza alla volta, perché un client che richiede di nuovo la password forse sta proteggendo un segreto invece di perdere una configurazione.

Confronta gli input di avvio prima di reinstallare

Parti dalla voce del desktop e leggi cosa fa davvero, perché un avvio dal menu non è automaticamente lo stesso ambiente di processo di un avvio dal terminale. Le chiavi che contano sono Exec, Path e, indirettamente, l’ambiente fornito dalla sessione. Uno script wrapper in Exec può impostare una variabile, cambiare directory o invocare un helper privilegiato che il menu non mostra mai. Reinstallare sostituisce file che l’applicazione già aveva, e questa raramente è la variabile che è cambiata.

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

Guarda il file sotto ~/.local/share/applications prima di quello in /usr/share/applications, perché una copia utente oscura la copia di sistema. Esegui desktop-file-validate quando la voce si comporta male e cerca una copia obsoleta che punta ancora a un percorso rimosso. Una copia utente non valida è ancora preferita dalla maggior parte dei desktop, quindi un file rotto può togliere la voce dal menu mentre il file del pacchetto resta valido. Poi esegui lo stesso comando a mano e confronta cosa producono i due avvii.

Dove vive davvero una preferenza

Le applicazioni che seguono le regole delle directory di base XDG mettono la configurazione sotto $XDG_CONFIG_HOME, lo stato durevole sotto $XDG_STATE_HOME e i dati usa e getta sotto $XDG_CACHE_HOME, usando per impostazione predefinita ~/.config, ~/.local/state e ~/.cache quando queste variabili non sono impostate. I tre sono ruoli e non promesse, quindi un certo prodotto VPN può documentare qualcosa di completamente diverso. Leggere la documentazione del fornitore stesso è meglio che indovinare un percorso dal nome di una directory. Quando la documentazione è scarna, osserva il processo invece del filesystem.

Una traccia filtrata sulle aperture di file mostra ogni percorso di configurazione che il client prova, compreso quello che scrive all’uscita. Eseguila come lo stesso utente e con lo stesso ambiente, poi confronta quei percorsi con le directory che ti aspettavi.

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

Segreti e profili hanno proprietari diversi

Un profilo salvato e una credenziale salvata sono oggetti separati, spesso con archiviazione separata. Uno può vivere in un file di configurazione mentre l’altro siede in un portachiavi che si sblocca per sessione, quindi un client che richiede di nuovo la password forse sta solo facendo ciò per cui è stato progettato. Cancellare il profilo per fermare la richiesta è il modo in cui le persone perdono una configurazione funzionante.

Gli avvii privilegiati complicano ulteriormente, perché un avvio tramite sudo o un helper PolicyKit può presentare una directory home diversa e quindi un insieme di configurazione diverso. Correggi la proprietà sul file specifico che l’applicazione documenta invece che ricorsivamente su tutta la directory home, poi decidi quale identità debba possedere il profilo d’ora in poi e mantieni gli avvii futuri coerenti con essa.

Cosa può dirti l’icona e cosa no

Un’icona dimostra che un file di launcher si risolve, e niente di più. Lo stato della connessione appartiene al client, quindi l’unico controllo affidabile è l’interfaccia, la rotta o l’output di stato del client stesso. Un’applet della barra che non si è avviata può far sembrare rotto un tunnel che funziona, mentre un’applet obsoleta può far sembrare a posto uno rotto. Prova la connessione e il launcher separatamente, poi annota quale dei due hai davvero riparato.

Se entrambi erano rotti, resisti alla tentazione di trattare la riparazione come un solo cambiamento. Ripara la voce, conferma l’avvio, poi conferma il tunnel, e annota il risultato di ogni passo. Quel registro è ciò che rende il prossimo rapporto su impostazioni perse diagnosticabile invece di una ripetizione di questo, ed è anche ciò che dice alla persona successiva quale metà del problema era reale.

Articoli correlati