blob: 8b9f13762256b412c345fd89aa1b0514162c5bb6 (
plain)
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
|
. /usr/share/acpi-support/power-funcs
CheckUPowerPolicy() {
pidof upowerd > /dev/null
}
# The (not very aptly named) function CheckPolicy checks if the current X
# console user is running a power management daemon that handles suspend/resume
# requests. This is used in various places to determine if we need to handle
# something ourselves or if we need to pass the info on to a power management
# daemon (e.g. through a fake key press).
CheckPolicy() {
local PMS
getXconsole
PMS="/usr/bin/gnome-power-manager /usr/bin/kpowersave /usr/bin/xfce4-power-manager"
PMS="$PMS /usr/bin/guidance-power-manager /usr/lib/dalston/dalston-power-applet"
PMS="$PMS /opt/trinity/bin/tdepowersave"
pidof -x $PMS > /dev/null ||
{ test "$XUSER" != "" &&
pidof dcopserver > /dev/null &&
test -x /opt/trinity/bin/dcop &&
/opt/trinity/bin/dcop --user $XUSER kded kded loadedModules | grep -q klaptopdaemon; } ||
PowerDevilRunning ||
GnomeSettingsDaemonPowerRunning
}
# Find a DBUS session bus, by looking at the given process' environment and
# then send a message to that bus. If multiple processes match the given name,
# the message is sent to all of the buses (and output is simply concatenated.
DBusSend() {
# The process to get the DBUS session address from
local PROC_NAME="$1"
# Parameters for dbus-send
local DEST="$2"
local DBUS_PATH="$3"
local METHOD="$4"
test -x /usr/bin/dbus-send || return 1
local DBUS_SESS
for p in $(pidof "$PROC_NAME"); do
test -r /proc/$p/environ || continue
DBUS_SESS=$(grep -a -z "DBUS_SESSION_BUS_ADDRESS=" /proc/$p/environ || :)
test "$DBUS_SESS" != "" || continue
su $(ps -o user= $p) -s /bin/sh -c "$DBUS_SESS dbus-send --print-reply --dest='$DEST' '$DBUS_PATH' '$METHOD'"
done
}
# Ask kde if the powerdevil module is loaded
PowerDevilRunning() {
DBusSend kded4 org.kde.kded /kded org.kde.kded.loadedModules | grep -q powerdevil
}
# gnome-power-manager was integrated into gnome-settings-daemon from version
# 3.1.4, in a new Power plugin (though the handling of buttons is done in the
# MediaKeys plugin.
#
# gnome-settings-daemon does not export a list of loaded plugins, but
# fortunately the Power plugin does have its own Dbus interface we can check
# for (We can't check the MediaKeys plugin, since that has been around for
# longer).
GnomeSettingsDaemonPowerRunning() {
DBusSend gnome-settings-daemon org.gnome.SettingsDaemon /org/gnome/SettingsDaemon/Power org.freedesktop.DBus.Introspectable.Introspect | grep -q 'interface name="org.gnome.SettingsDaemon.Power"'
}
|