Hy!
J'ai remplacé gnome-screensaver par xscreensaver, cela fonctionne très bien jusqu'à présent, mais je ne parviens pas à verrouiller ma session lorsque je suspends mon ordinateur portable.
Des idées comment faire cela?
Ubuntu 10.10 Dell Vostro 1310
Merci!
Finalement, j'ai trouvé le bon moyen de faire cela en combinant les parties que j'ai trouvées dans /etc/acpi/sleep.sh (qui semble y rester inutilisées), et Scaine a pointé dans/usr/lib/pm-utils ...
Le script final qui fonctionne pour moi est donc: /usr/lib/pm-utils/sleep.d/00xscreensaver
#!/bin/sh
# Lock xscreensaver on resume from a suspend.
# getXuser gets the X user belonging to the display in $displaynum.
# If you want the foreground X user, use getXconsole!
getXuser() {
user=`pinky -fw | awk '{ if ($2 == ":'$displaynum'" || $(NF) == ":'$displaynum'" ) { print $1; exit; } }'`
if [ x"$user" = x"" ]; then
startx=`pgrep -n startx`
if [ x"$startx" != x"" ]; then
user=`ps -o user --no-headers $startx`
fi
fi
if [ x"$user" != x"" ]; then
userhome=`getent passwd $user | cut -d: -f6`
export XAUTHORITY=$userhome/.Xauthority
else
export XAUTHORITY=""
fi
export XUSER=$user
}
if pidof xscreensaver > /dev/null; then
for x in /tmp/.X11-unix/*; do
displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
getXuser;
if [ x"$XAUTHORITY" != x"" ]; then
export DISPLAY=":$displaynum"
case "$1" in
resume|thaw)
Sudo -u $XUSER xscreensaver-command -unthrottle
;;
suspend|hibernate)
Sudo -u $XUSER xscreensaver-command -throttle
Sudo -u $XUSER xscreensaver-command -lock
;;
esac
fi
done
fi
Les commandes réelles xscreensaver peuvent aussi être appelées via su (au lieu de Sudo) comme
su $XUSER -c "(xscreensaver-command -lock)"
mais cela ne fonctionnera pas pour moi car j'utilise pam_mount pour monter ma maison cryptée lors de la connexion, et pam me demande mon mot de passe pour pam_mount dans le script lorsque j'utilise su ...
Il convient de noter que les réponses ci-dessus sont obsolètes depuis l’introduction de systemd. Maintenant, pour verrouiller xscreensaver, il faut soit déplacer et modifier le script d'assistance pour les conventions d'appel systemd-sleep(8)
, soit utiliser un programme d'assistance tel que xss-lock .
Je ne suis pas un expert, mais je pense que vous pourriez éditer /usr/lib/pm-utils/sleep.d/00powersave
pour ajouter la commande xscreensaver-command --lock
au début.
Toutefois, cela sera exécuté deux fois - une fois lorsque vous suspendez, puis à nouveau lorsque vous reprenez.
Edit: C’est un peu plus compliqué (pas beaucoup), mais à partir de ce fil , il semble que vous feriez mieux de créer votre fichier dans /usr/lib/pm-utils/sleep.d avec la commande que vous voulez exécuter. Donc, en entier, voici les commandes du terminal:
Sudo gedit /usr/lib/pm-utils/sleep.d/000LockScreensaver
Ensuite, mettez ceci dans le fichier et enregistrez:
#!/bin/sh
# Lock xscreensaver on resume from a suspend.
case "$1" in resume|thaw)
xscreensaver-command --lock ;
esac
Et enfin,
Sudo chmod +x /usr/lib/pm-utils/sleep.d/000LockScreensaver
Ensuite, essayez une suspension pour voir si cela fonctionne lorsque vous reprenez.