- Catch and process sleep event correctly, even if no X is

running.

OBS-URL: https://build.opensuse.org/package/show/Base:System/acpid?expand=0&rev=56
This commit is contained in:
Thomas Renninger 2013-01-15 15:29:52 +00:00 committed by Git OBS Bridge
parent fca6a593a4
commit 8d611ed792
4 changed files with 63 additions and 3 deletions

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Tue Jan 15 15:29:10 UTC 2013 - trenn@suse.de
- Catch and process sleep event correctly, even if no X is
running.
-------------------------------------------------------------------
Sun Sep 23 04:00:57 UTC 2012 - crrodriguez@opensuse.org

View File

@ -1,7 +1,7 @@
#
# spec file for package acpid
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -16,6 +16,7 @@
#
Name: acpid
Version: 2.0.17
Release: 0
@ -28,10 +29,13 @@ Source2: rcacpid
Source3: README.SuSE
Source4: thinkpad_acpi.modprobe
Source5: events.power_button
Source9: events.thinkpad
Source6: thinkpad_handler
Source7: power_button
Source8: acpid.service
Source9: events.thinkpad
Source10: events.sleep_button
Source11: sleep_button
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch1: acpid-makefile.patch
BuildRequires: systemd
@ -54,7 +58,7 @@ Configure it in /etc/sysconfig/powermanagement.
%setup -q
%patch1
cp %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE9} .
cp %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE9} %{SOURCE10} %{SOURCE11} .
%build
export LDFLAGS="-Wl,-z,relro,-z,now"
@ -67,9 +71,11 @@ install -Dm 744 rcacpid %{buildroot}%{_initddir}/acpid
install -Dm 644 thinkpad_acpi.modprobe %{buildroot}%{_sysconfdir}/modprobe.d/50-thinkpad_acpi.conf
install -Dm 744 thinkpad_handler %{buildroot}%{_prefix}/lib/acpid/thinkpad_handler
install -Dm 744 power_button %{buildroot}%{_prefix}/lib/acpid/power_button
install -Dm 744 sleep_button %{buildroot}%{_prefix}/lib/acpid/sleep_button
mkdir -p %{buildroot}%{_prefix}/sbin
ln -sf ../../etc/init.d/acpid %{buildroot}%{_sbindir}/rcacpid
install -Dm 644 events.power_button %{buildroot}%{_sysconfdir}/acpi/events/power_button
install -Dm 644 events.sleep_button %{buildroot}%{_sysconfdir}/acpi/events/sleep_button
install -Dm 644 events.thinkpad %{buildroot}%{_sysconfdir}/acpi/events/thinkpad
mkdir -p %{buildroot}/%{_unitdir}
install -m 644 %{SOURCE8} %{buildroot}/%{_unitdir}
@ -103,6 +109,7 @@ touch %{buildroot}%{_localstatedir}/log/acpid
%dir %{_sysconfdir}/acpi/events
%{_sysconfdir}/acpi/events/thinkpad
%{_sysconfdir}/acpi/events/power_button
%{_sysconfdir}/acpi/events/sleep_button
%{_prefix}/lib/acpid
%{_sysconfdir}/init.d/acpid
%{_sysconfdir}/modprobe.d/50-thinkpad_acpi.conf

5
events.sleep_button Normal file
View File

@ -0,0 +1,5 @@
# handle sleep button event
event=button/sleep.*
action=/usr/lib/acpid/sleep_button

42
sleep_button Normal file
View File

@ -0,0 +1,42 @@
#!/bin/bash
#
# Sleep button suspend script, adapted from
# /usr/lib/acpid/power_button
#
# Copyright (C) 2008 Holger Macht <hmacht@suse.de>
#
# This file is released under the GPLv2.
#
EXEC=/usr/sbin/pm-suspend
# iterate over all sessions. If a active X session is found, do nothing
while read A; do
SESSION=`echo $A | sed 's/\(Session[0-9]*\)://g'`
[ -z "$SESSION" ] || continue
SESSION=`echo $A | sed 's/\(Session[0-9]*\):/\1/g'`
IS_X=`dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \
/org/freedesktop/ConsoleKit/$SESSION \
org.freedesktop.ConsoleKit.Session.GetX11Display`
# check if this is a X session, if not, go on
DISP=`echo $IS_X | sed -e 's/^.* string "\(.*\)"/\1/'`
[ -n "$DISP" ] || continue
IS_ACTIVE=`dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \
/org/freedesktop/ConsoleKit/$SESSION \
org.freedesktop.ConsoleKit.Session.IsActive`
IS_ACTIVE=`echo $IS_ACTIVE | sed -e 's/^.* boolean \(.*\)$/\1/'`
if [ "$IS_ACTIVE" = "true" -a -n "$DISP" ]; then
# additional check, if none of these two apps are running, go on
if [ -n "`pidof kpowersave`" -o -n "`pidof gnome-power-manager`" -o -n "`pidof kded4`" ]; then
echo doing nothing...
exit 0
fi
fi
done < <(ck-list-sessions)
logger -s "Sleep Button event received, running $EXEC."
$EXEC