Ubuntu Raring Ringtail (13.04) à partir d'une nouvelle installation.
Principal: Changer le gsetting (fond d'écran) avec un script lors de la déconnexion de l'utilisateur.
J'essaie d'arrêter une application nommée variété ( celle-ci ) à la déconnexion dans laquelle j'ai placé mes solutions de contournement. Variety est une application à démarrage automatique, elle démarre donc chaque fois que je me connecte. Variety a une fonction on_quit()
et force_quit_thread()
qui sont appelées lorsque le processus d'application s'est arrêté. J'ai donc ajouté ma ligne de script python à l'intérieur, qui exécute mon vrai script (normalize
). Quand j'ai essayé de quitter la variété normalement, il fait ce que je veux! lorsque le système me déconnecte, tout processus que j'ai commencé doit également être arrêté. Mais ensuite, je me suis rendu compte que non.
Cela m'a permis d'utiliser une autre façon de tuer le processus de variété manuellement lorsque je me déconnecte. J'ai essayé ~/.bash_logout
(J'en doute, car je sais que le démarrage automatique ne fonctionne pas sur bash); ~/etc/gdm/PostSession/Default
(Mais je n'utilise pas gdm); ~/etc/lightdm/lightdm.conf
(Celui-ci ne fonctionne pas non plus! Comment se fait-il?); pam_script/pam-script (je ne sais pas comment travailler avec ça. Vraiment différent.)
Mais, le problème survient lorsque j'essaie de me déconnecter de mon compte. Il n'exécute ni on_quit () ni force_quit_thread (). Et le journal que j'ai capturé de ~/Nohup.out
voir dernière ligne, vous êtes ici:
.... bla-bla ... [only see last line]
IOError: [Errno socket error] [Errno 2] No such file or directory
(variety:15627): Gdk-WARNING **: variety: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.
Ils ont perdu les ressources disponibles, non? Pas quitté normalement alors et signifie, gsetting pas changé.
1) Script ajouté dans quit functions
C'est sur /opt/extras.ubuntu.com/variety/variety/VarietyWindow.py
:
<pre>bashCommand = "/home/abdillah/Toolbox/command/normalize"
os.system(bashCommand)</pre>
2) Script à l'intérieur de normaliser
Objectif: changer le fond d'écran lorsque la variété quitte.
<pre>echo $(cat "${HOME}"/.self-log)"| normalize" > "${HOME}"/.self-log #append log
wallpaper=$(cat /home/abdillah/.wallpaper)
filename="file://"$wallpaper
configname=${filename/'#'/"%23"}
gsettings set org.gnome.desktop.background picture-uri $configname #the most important</pre>
3) Fichier de configuration LightDM
Celui qui me rend confus, c'est que dans c'est documentation , il n'y a pas de déclaration mentionnée session-cleanup-script
. C'est obsolète?
[SeatDefaults] User-session = ubuntu Greeter-session = unit-greeter Autologin-user = Session-cleanup-script =/home/abdillah/Boîte à outils/commande/déconnexion
4) Le fichier de déconnexion contient:
Le fichier .self-log est toujours vide => échec
#!/bin/bash echo $ (cat "$ {HOME}" /. self-log) "| fail? (OnScript)"> "$ {HOME}" /. self-log #append log variété killall /opt/extras.ubuntu.com/variety/bin/variety -q echo $ (cat "$ {HOME}" /. self-log) " | Succès? (OnScript) ">" $ {HOME} "/. Self-log #log Exit 0
Quand quelqu'un pense, la condition ci-dessus est très spécifique, répondez simplement à la question suivante. 1. Comment exécuter le script directement à la déconnexion ( [~ # ~] cmiw [~ # ~] les moyens ci-dessus. Sinon, toute suggestion s'il vous plaît) ou 2. Comment puis-je arrêter la variété correctement lorsque je me suis déconnecté? (Donc on_quit () appelé)
in bash
et utilisez le script ~/.bash_logout pour arrêter. Mais comment?D'accord. c'est long. Mais j'essaie de rendre le plus clair possible. Parce que là-bas, il y a beaucoup de questions liées à cela que j'ai lues. J'ai vraiment besoin d'aide. Je vous remercie.
La solution n'est pas simple. Il nécessite le démarrage du script à la connexion X et l'attente de la session X et. Heureusement, nous avons inotify et pid de gnome-session.
Le processus de variété doit déjà être arrêté correctement au moment de l'exécution du script.
inotify-tools
paquet.Créez ou modifiez le script ~/.xprofile et ajoutez-y la ligne suivante
sh .xlogout &
Créer ~/.xlogout avec le contenu suivant
FILE=/tmp/.ICE-unix/$PPID # pid of parent = gnome-session
sleep 10s # wait for $FILE creation
inotifywait -qe delete_self $FILE # wait for $FILE deletion = logout
# your code goes here # = on_quit
# gsettings reset org.gnome.desktop.background picture-uri