The patch I sent is broken, here is one that really works. -- see shy jo
--- /tmp/hibernate 2006-01-31 00:13:29.000000000 -0500
+++ /usr/sbin/hibernate 2006-01-31 01:08:38.000000000 -0500
@@ -206,20 +206,38 @@
# Find a useful XAUTHORITY and ideally a username too if we can!
local xuser xauth xpid
- for xpid in `pidof kwrapper ksmserver kdeinit gnome-session fvwm fvwm2 pwm
blackbox fluxbox X XFree86 Xorg` ; do
- # Ensure the process still exists, and we aren't hallucinating.
- [ -d "/proc/$xpid/" ] || continue
-
- xauth=`awk 'BEGIN{RS="\\000";FS="="}($1 == "XAUTHORITY"){print $2}' <
/proc/$xpid/environ`
- xhome=`awk 'BEGIN{RS="\\000";FS="="}($1 == "HOME"){print $2}' <
/proc/$xpid/environ`
- xuser=`/bin/ls -ld /proc/$xpid/ | awk '{print $3}'`
- [ -z $xauth ] && [ -n $xhome ] && [ -f $xhome/.Xauthority ] &&
xauth=$xhome/.Xauthority
-
- XAUTHORITY=$xauth su $xuser -c "$xhost" > /dev/null 2>&1 && break
-
- xauth=
- xuser=
+ for display in $(seq 0 8); do
+ xuser=$(last ":$display" | grep 'still logged in' | awk '{print $1}')
|| true
+ if [ -n "$xuser" ]; then
+ xhome=$(getent passwd "$xuser" | cut -d: -f 6)
+ if [ -n "$xhome" ]; then
+ xauth=$xhome/.Xauthority
+ fi
+ fi
+ if [ -z "$xhome" ] || [ -z "$xauth" ]; then
+ xauth=
+ xuser=
+ xhome=
+ else
+ break
+ fi
done
+ if [ -z $xuser ] ; then
+ for xpid in `pidof kwrapper ksmserver kdeinit gnome-session fvwm fvwm2
pwm blackbox fluxbox X XFree86 Xorg` ; do
+ # Ensure the process still exists, and we aren't hallucinating.
+ [ -d "/proc/$xpid/" ] || continue
+
+ xauth=`awk 'BEGIN{RS="\\000";FS="="}($1 == "XAUTHORITY"){print $2}'
< /proc/$xpid/environ`
+ xhome=`awk 'BEGIN{RS="\\000";FS="="}($1 == "HOME"){print $2}' <
/proc/$xpid/environ`
+ xuser=`/bin/ls -ld /proc/$xpid/ | awk '{print $3}'`
+ [ -z $xauth ] && [ -n $xhome ] && [ -f $xhome/.Xauthority ] &&
xauth=$xhome/.Xauthority
+
+ XAUTHORITY=$xauth su $xuser -c "$xhost" > /dev/null 2>&1 && break
+
+ xauth=
+ xuser=
+ done
+ fi
if [ -n $xuser ] ; then
XUSER=$xuser
if [ -n "$xauth" ] ; then
signature.asc
Description: Digital signature

