Le bouton de mise en marche est lié à un script dans /etc/acpi qui s'appelle powerbtn.sh, qui est lancé avec l'utilisateur par défaut de Xandros. powerbtn.sh appelle dcop pour qu'il adresse un message aux applications ouvertes de se préparer à la fermeture.
Lorsque vous utilisez n'importe quelle application ayant les droits de super utilisateur (root), comme par exemple le gestionnaire de fichiers en mode root, la session est alors propriété du super utilisateur. Le script d'arrêt plante alors puisqu'il n'a pas les droits de lire le fichier .ICEauthority de root.
Il y a plusieurs contournement possible – par exemple supprimer manuellement ou par script le fichier .ICEauthority de root, changeer le script pour que dcop soit lancé en root, ou alors ne lancer le signal dcop qu'aux sessions utilisateurs. J'ai testé la dernière option en premier lieu, elle fonctionne. La méthode à privilégier reste à votre appréciation.
Utilisez un éditeur de texte, comme vi, éditez le fichier /etc/acpi/powerbtn.sh et recherchez la ligne suivante (vers la ligne 8):
dcop –all-sessions –all-users ksmserver ksmserver logout 1 2 2 && exit 0
modifiez la ainsi :
dcop –all-sessions –user user ksmserver ksmserver logout 1 2 2 && exit 0
sauvez le fichier. Voila, le bouton marche/arrêt fonctionne à nouveau !
Comme ci dessus, éditez /etc/acpi/powerbtn.sh et recherchez la ligne qui exécute dcop
dcop –all-sessions –all-users ksmserver ksmserver logout 1 2 2 && exit 0
ajoutez la commande “sudo” en début de ligne :
sudo dcop –all-sessions –all-users ksmserver ksmserver logout 1 2 2 && exit 0
Cela lancera dcop avec les droits de root, ce qui évitera les erreurs. Il y a moins à éditer, mais maintenant vous lancez dcop en tant que super utilisateur, et certains utilisateurs peuvent ne pas apprécier…
Si vous ne vous sentez pas capable de modifier un script système, vous pouvez contourner le problème en vous débarrassant du fichier .ICEauthority qui arrête le script powerbtn.sh.
Ouvrez un terminal et tapez :
sudo rm /root/.ICEauthority
Ce fichier sera recréé à chaque fois que vous lancez une application avec les droits de root, vous devrez donc effectuer cette opération à chaque fois que le bouton de stop cesse de fonctionner.