Ripristino opzioni spegnimento KDE 4
Qualche settimana fa ho deciso di installare su di un HD esterno (USB), una distribuzione Linux in modo da poter portar sempre dietro il mio sistema . Dopo avere installato Kubuntu 7.10, ho pensato bene di “upgradare” KDE alla release 4.0, e di aggiungere il famoso Compiz per poter ruotare i desktop su di un cubo. Tutto è andato bene tranne che per un piccolo particolare:
Le opzioni di spegnimento sono sparite
o meglio, mi è possibile selezionare solo il Log Out….
Ho cominciato quindi a navigare la rete in cerca di qualche dritta, e dopo molti link esplorati, sono arrivato alla conclusione che il problema ( almeno nel mio caso ) è causato proprio da Compiz.
Il fix che sto per descrivere è stato provato su KUBUNTU 7.10 con KDE4 (KDM-KDE4).
Mettendo insieme alcune informazioni prese dalla rete, e spulciando un po il sistema, provo ora a spiegarvi quello che ho capito.
La scomparsa delle opzioni di spegnimento, è dovuta ad un problema autorizzativo del server X per il display sul quale è stato lanciato.
Quando viene avviata una sessione del server X, infatti, viene eseguito lo script
/usr/share/xserver-xlg/Xgl-session
il quale si preoccupa, tra le varie cose, di individuare il primo display libero sul quale lanciare il server grafico, e sul quale “clonare” le autorizzazioni .
…
# Find an unused DISPLAY by searching the lockfiles
find_free_display()
{
if [ ! -f /tmp/.X$1-lock ] ; then
return $1
fi
find_free_display $(($1 + 1))
}
…
Per individuare il display libero, lo script controlla nella cartella /tmp/, l’esistenza di file di lock :
/tmp/X*-lock
dove * indica il numero del display. Individuato il display libero, lo script clona le autorizzazioni.
Appena viene mostrata la schermata di accesso, nella cartella /tmp/ esiste il file di lock solo per il dispay 0:
/tmp/X0-lock
Inseriti utente e password, all’avvio della sessione di KDE4, nella cartella /tmp/ esiste anche il lock per il display 1
/tmp/X0-lock
/tmp/X1-lock
Quindi lo script /usr/share/xserver-xlg/Xgl-session, ha probabilmente clonato erroneamente i permessi per il server X sul display > 0 (forse 1 o 2): questo causa la sparizione delle opzioni di spegnimento.
L’errore vero e proprio è quindi causato, credo, da un’errata gestione dei file di lock, cercherò di capire il perchè; ma per il momento ho risolto il problema modificando lo script
/usr/share/xserver-xlg/Xgl-session
nel quale viene valorizzata la variabile XGL_DISPLAY con l’esito della ricerca del display libero. Per far si che le autorizzazioni di X vengano clonate correttamente sul display 0, ho sostituito la valorizzazione
XGL_DISPLAY=”:$?”
come segue
XGL_DISPLAY=”:0″
e dopo aver riavviato il server grafico, sono apparse di nuovo le opzioni di spegnimento
.
Prima di modificare lo script si puo verificare se la soluzione corregge il problema, creando dei link simbolici (soluzione temporanea poichè al riavvio successivo, saranno cancellati automaticamente!!!) come segue:
sudo ln -s /var/run/xdmctl/xdmctl-:0 /var/run/xdmctl/xdmctl-:1
sudo ln -s /var/run/xdmctl/dmctl-:0 /var/run/xdmctl/dmctl-:1
Provare a disconnettersi; se ci sono le opzioni di spegnimento, questa soluzione correggerà il vostro problema, altrimenti …. ciccia…..