[Risolto] Esportare in cron la variabile XAUTHORITY dell'ambiente Gnome

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

[Risolto] Esportare in cron la variabile XAUTHORITY dell'ambiente Gnome

Messaggio da rai »

Gnome non mette più nella home dell'utente il file con il magic cookie per consentire l'accesso al display.
Quando esiste ~/.Xauthority, se serve uno può fare

Codice: Seleziona tutto

export XAUTHORITY=$HOME/.Xauthority
per esempio per lanciare col cron/anacron di sistema una app con output grafico.


Per risolvere, avevo pensato di salvare tutte le variabili di ambiente mettendole in un file da potere leggere successivamente. Si può salvare l'environment ad ogni login con un rigo in ~/.profile:

Codice: Seleziona tutto

env > $HOME/.env
Purtroppo al momento del login, quando viene letto ~/.profile, la variabile XAUTHORITY non è ancora stata assegnata, per cui uno la trova se in un terminale fa:

Codice: Seleziona tutto

$ env | grep XAUTH
XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.XXXXX  # per errore avevo scritto /run/user/1000/xauth_XXXXX 
$
ma se uno la cerca nel file creato al login non trova niente

Codice: Seleziona tutto

$ grep XAUTH $HOME/.env
$ 
Come si può fare per assegnare/esportare in cron la variabile XAUTHORITY?
Ultima modifica di rai il venerdì 7 giugno 2024, 13:45, modificato 1 volta in totale.
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1633
Iscrizione: giovedì 12 ottobre 2006, 11:34

Re: Esportare in cron la variabile XAUTHORITY dell'ambiente Gnome

Messaggio da nuzzopippo »

Ciao @rai, suppongo che questo Tuo post sia collegato all'altro, letto ma sul quale non ho trovato nulla di utile, in questo post non hai specificato se l'ambiente sia wayland o x11, nel caso di X11 avevo trovato qualcosa potenzialmente utile per questa domanda:
rai ha scritto:
lunedì 3 giugno 2024, 13:58
...
Purtroppo al momento del login, quando viene letto ~/.profile, la variabile XAUTHORITY non è ancora stata assegnata, per cui uno ...
il trafiletto
You can also export necessary information from your running session (renewed with each session), type this into a terminal there: xauth list $DISPLAY and add it for your cron running user: xauth add displayname protocolname hexkey (using those three values as returned by xauth list.
verso la fine di questa discussione, pare essere stato risolutivo, lo segnalo sperando possa essere utile.
:ciao:
Fatti non foste a viver come bruti ...
saxtro
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2980
Iscrizione: domenica 4 giugno 2006, 13:16
Distribuzione: Kubuntu 20.04

Re: Esportare in cron la variabile XAUTHORITY dell'ambiente Gnome

Messaggio da saxtro »

A giudicare dal valore della variabile, direi che lo script è eseguito in wayland.

In una sessione, dove wayland non è in esecuzione, quella variabile non si setta.

Immagine

Prova ad eseguire il tuo:

Codice: Seleziona tutto

env > $HOME/.env
In un terminale aperto nella sessione wayland dopo il login, a quel punto dovresti trovare un valore per "XAUTHORITY"

EDIT: se riesci a identificare un processo sempre presente, che ha quella variabile, potresti usare una cosa del genere:

Codice: Seleziona tutto

strings /proc/$(pidof xdg-desktop-portal)/environ > $HOME/.env
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Esportare in cron la variabile XAUTHORITY dell'ambiente Gnome

Messaggio da rai »

Grazie a entrambi per il contributo.
Non posso entrare nel merito con questa risposta perché, causa lavoro, da quando ho postato non ho più avuto modo di usare il _mio_ pc ma non voglio fare passare altro tempo prima di dare un cenno.

@nuzzopippo sì, ho omesso di precisarlo, questo problema accade in sessione wayland, comunque proverò a vedere se quel suggerimento si può applicare.

@saxtro sì, come scrivevo, è wayland. Però mi pare di ricordare che in sessione Xorg la var XAUTHORITY contiene il valore "$HOME/.Xauthority". Ma sono al telefono e vado a memoria.
Interessante il trucco che proponi nell'edit. Il punto è che ci vuole un hack che
• sia automatico
• possa accedere al magic cookie in /run/user/1000/.mutter-Xwaylandauth.XXXXX
• lo renda disponibile al cron di sistema nel cui ambiente viene eseguita l'applicazione che deve aprire un box grafico.
Appena ho novità le scrivo. :ciao:
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Esportare in cron la variabile XAUTHORITY dell'ambiente Gnome

Messaggio da rai »

Ho risolto mettendo nella riga del cronjob, prima di lanciare lo script, il seguente comando:

Codice: Seleziona tutto

export XAUTHORITY=$(ls /run/user/1000/.mutter-Xwaylandauth.*)
per cui il cronjob diventerebbe una cosa di questo tipo:

Codice: Seleziona tutto

* * * * * export XAUTHORITY=$(ls /run/user/1000/.mutter-Xwaylandauth.*); /path/allo/script.py
e questo permette l'output grafico di qualsiasi script lanciato dal cron di sistema.

Mi scuso se ho creato confusione scrivendo per errore nel primo post una variabile da una sessione di Plasma, non di Gnome.
Comunque lo stesso sistema trovato per Gnome è applicabile a qualsiasi DE, una volta visto qual'è il pattern del nomefile usato per contenere il magic cookie:
in Gnome /run/user/1000/.mutter-Xwaylandauth.*
in Plasma /run/user/1000/xauth_*
in DE . . . /run/user/1000/. . .

Grazie dell'attenzione
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti