[Debian-eeepc-devel] Beta 1 of eeepc-acpi-scripts 1.1.0 available for testing
Luca Niccoli
lultimouomo at gmail.com
Fri Apr 3 19:37:19 UTC 2009
2009/4/3 Axel Beckert <abe at deuxchevaux.org>:
> Though had one funny encounter:
>
> When I suspended the EeePC while the GDM login screen was displayed
> (but noone logged in), xtrlock was running in front of GDM after
> resume. I had to enter the root password to xtrlock before I could
> login with any user at GDM again.
I think this depends pm-utils or hibernate configuration...
> Not sure what caused this. If there's a setting to lock the session
> after suspend, I surely have enabled this, but that result is slightly
> too much. :-)
IIRC it's even worse, since xtrlock is started by the program that is
responsible of the suspend, which has usually root privileges, it asks
for the root password even if you have already logged in.
I use the following script in my /etc/pm/sleep.d (used by pm-utils)
#!/bin/sh
LOCK_CMD=/usr/bin/xtrlock
[ -x $LOCK_CMD ] || exit $NA
####
#Shamelessly copied from acpi-support
getXuser() {
user=`w -hs | awk '{ if ($3 == ":'$displaynum'" || $2 ==
":'$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
}
# getXconsole gets the foreground (console) X user
getXconsole() {
console=`fgconsole`;
displaynum=`COLUMNS="" ps ax | grep -e 'X .* vt'$console | grep -v
grep | sed -re 's!.*/X .*:([0-9]+).*!\1!' | uniq`
if [ x"$displaynum" = x"" ]; then
# Second attempt: perhaps there's no X started with the "vt"
argument, some users
# prefer to start X using startx instead. As a fallback we use
that X instance.
displaynum=`COLUMNS="" ps ax | grep -e '/usr/bin/X .*' | grep -v
grep | sed -re 's!.*/X .*:([0-9]+).*!\1!' | uniq`
fi
if [ x"$displaynum" != x"" ]; then
export DISPLAY=":$displaynum"
getXuser
fi
}
###
lock_screen() {
getXconsole
if [ x"$XUSER" != x""]; then
su -c "$LOCK_CMD &" $XUSER
fi
}
case "$1" in
hibernate|suspend)
exit $NA
;;
thaw|resume)
lock_screen
;;
*) exit $NA
;;
esac
It should fail if there's no user logged in...
Cheers,
Luca
More information about the Debian-eeepc-devel
mailing list