We have some news to share for the request index beta feature. We’ve added more options to sort your requests, counters to the individual filters and documentation for the search functionality. Checkout the blog post for more details.

File power_button of Package acpid

#!/bin/bash
#
# check if a X session is running and active.
# If not, shut down the system
#
# Copyright (C) 2008 Holger Macht <hmacht@suse.de>
#
# This file is released under the GPLv2.
#

EXEC="/sbin/shutdown -h now"

# check if we have pm-profiler and an active profile. If so, $EXEC can be
# overwritten by the active profile's configuration
. /etc/pm-profiler.conf > /dev/null 2>&1
if [ "$?" = "0" ]; then
    . /etc/pm-profiler/$PM_PROFILER_PROFILE/config >/dev/null 2>&1
fi
[ -z "$POWER_BUTTON_HOOK" ] || EXEC="$POWER_BUTTON_HOOK"
    

# 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/'`
    
    # debug
    #if [ "$IS_ACTIVE" = "true" ]; then
    #	echo "and is active"
    #else
    #	echo "and is not active"
    #fi

    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`" -o -n "`pidof dalston-power-applet`" -o -n "`pidof gnome-settings-daemon`" ]; then
	    echo doing nothing...
	    exit 0
	fi
    fi
done < <(ck-list-sessions)   

# iterate over all sessions. If a active X session is found, do nothing
# bnc#810125 - 12.3 power button always halts system instead suspend
# similar to consolekit checks, this time we check systemd-logind sessions
while read SESSION DUMMY ; do

    # check if this is a X session, if not, go on
    DISP=`loginctl --property=Display show-session $SESSION`
    DISP=`echo $DISP | sed -e 's/^Display=//'`
    [ -n "$DISP" ] || continue

    STATE=`loginctl --property=State show-session $SESSION`
    STATE=`echo $STATE | sed -e 's/^State=//'`

    if [ "$STATE" = "active" -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`" -o -n "`pidof dalston-power-applet`" -o -n "`pidof gnome-settings-daemon`" ]; then
	    echo doing nothing...
	    exit 0
	fi
    fi

done < <(loginctl list-sessions)

logger -s -t pm-profiler "Power Button pressed, executing $EXEC"
$EXEC
openSUSE Build Service is sponsored by