/usr/share/acpi-support/power-funcs is in acpi-support-base 0.142-8.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | # a micro library of helper functions for the power scripts
umask 022
PATH=$PATH:/usr/bin/X11
POWERSTATE=/var/lib/acpi-support/powerstate
# getXuser: get the user for the specified X display, or if none is
# specified, then the user for whatever X display we find.
# input: $displaynum: the X display to query
# output: $XAUTHORITY: the path to the xauth data used for connecting to the
# detected X display.
# $XUSER: the username of the user who owns the display.
getXuser() {
local plist display uid user startx pid userhome IFS
if [ "$displaynum" ]; then
display=":$displaynum"
else
display=.+
fi
user=
if [ -x /usr/bin/ck-list-sessions ]; then
uid=$(ck-list-sessions 2>/dev/null| awk 'BEGIN { unix_user = ""; } /^Session/ { unix_user = ""; } /unix-user =/ { gsub(/'\''/,"",$3); unix_user = $3; } /x11-display = '\'$display\''/ { print unix_user; exit (0); } /x11-display = '\'$display.0\''/ { print unix_user; exit (0);}')
if [ "$uid" ]; then
IFS=:
set -- $(getent passwd $uid)
user=$1
unset IFS
fi
fi
if [ -z "$user" ]; then
plist=$(pinky -fw) || pwf_error "pinky lost"
while read l; do
set -- $l
eval lastpp=\$$#
for ds in $2 $lastpp; do
case $ds in
$display)
user=$1
break
;;
esac
done
[ -z "$user" ] || break
for ds in $2 $lastpp; do
case $ds in
$display.0)
user=$1
break
;;
esac
done
[ -z "$user" ] || break
done <<-EOF
$plist
EOF
fi
if [ -z "$user" ]; then
startx=$(pgrep -n startx || :)
[ -z "$startx" ] || user=$(ps -o user --no-headers $startx || :)
fi
if [ x"$user" != x ]; then
for pid in `ps -U "$user" -o pid=`; do
if grep -z -q XAUTHORITY /proc/$pid/environ; then
XAUTHORITY="$(grep -z XAUTHORITY /proc/$pid/environ | cut -d= -f2-)"
export XAUTHORITY
break
fi
done
if [ -z "$XAUTHORITY" ]; then
userhome="$(getent passwd "$user" | cut -d: -f6)"
XAUTHORITY="$userhome/.Xauthority"
export XAUTHORITY
fi
else
export XAUTHORITY=
fi
XUSER="$user"
export XUSER
}
# getXconsole: get the information for the active X console, if any.
# calls getXuser to get information related to the logged-in user.
# input: none
# output: $XAUTHORITY: the path to the xauth data used for connecting to the
# detected X display.
# $DISPLAY: the X display
# $XUSER: the username of the user who owns the display.
getXconsole() {
local displaynum
if [ -x /usr/bin/ck-list-sessions ]; then
displaynum=$(ck-list-sessions 2>/dev/null| awk 'BEGIN { active = 0; } /^Session/ { active = 0; } /active = TRUE/ { active = 1; } active && /x11-display = '\':.+\''/ { gsub(/'\':*'/,"",$3); print $3; exit (0); }')
fi
if [ -z "$displaynum" ]; then
console=`fgconsole`;
displaynum=`ps t tty$console | sed -n -re 's,.*/Xorg .*:([0-9]+).*,\1,p'`
fi
if [ "$displaynum" ]; then
DISPLAY=":$displaynum"
export DISPLAY
getXuser
fi
}
# getState side effect: sets global variable STATE
getState() {
/usr/bin/on_ac_power
if [ $? -eq 1 ]; then
STATE=BATTERY
else
STATE=AC
fi
}
#check our state has actually changed
checkStateChanged() {
local OLDSTATE
# do we have our state stashed?
# XXX: if vaiable STATE is unset, set it to the null string
: ${STATE=${STATE:-}}
# XXX: make sure variable STATE has a non-null value
[ "$STATE" ] || getState
if [ -f "$POWERSTATE" ]; then
# XXX: unset or empty variable STATE and an existing but empty POWERSTATE file
# and the function will probably have undesired side effects
read OLDSTATE <$POWERSTATE || :
if [ "$STATE" = "$OLDSTATE" ]; then
exit 0
else
#stash the new state
# XXX: unset or empty variable STATE, will create an empty POWERSTATE file
echo "$STATE" > $POWERSTATE
fi
else
#we need to stash the new state
# XXX: unset or empty variable STATE, will create an empty POWERSTATE file
echo "$STATE" > $POWERSTATE
fi
}
HDPARM='/sbin/hdparm -q'
LIDSTATE=/var/lib/acpi-support/lidstate
|