acpid.power.sh 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/bin/bash
  2. #
  3. # check if a X session is running and active.
  4. # If not, shut down the system
  5. #
  6. # Copyright (C) 2008 Holger Macht <hmacht@suse.de>
  7. #
  8. # This file is released under the GPLv2.
  9. #
  10. EXEC="/sbin/shutdown -h now"
  11. # iterate over all sessions. If a active X session is found, do nothing
  12. while read A; do
  13. SESSION=`echo $A | sed 's/\(Session[0-9]*\)://g'`
  14. [ -z "$SESSION" ] || continue
  15. SESSION=`echo $A | sed 's/\(Session[0-9]*\):/\1/g'`
  16. IS_X=`dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \
  17. /org/freedesktop/ConsoleKit/$SESSION \
  18. org.freedesktop.ConsoleKit.Session.GetX11Display`
  19. # check if this is a X session, if not, go on
  20. DISP=`echo $IS_X | sed -e 's/^.* string "\(.*\)"/\1/'`
  21. [ -n "$DISP" ] || continue
  22. IS_ACTIVE=`dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \
  23. /org/freedesktop/ConsoleKit/$SESSION \
  24. org.freedesktop.ConsoleKit.Session.IsActive`
  25. IS_ACTIVE=`echo $IS_ACTIVE | sed -e 's/^.* boolean \(.*\)$/\1/'`
  26. if [ "$IS_ACTIVE" = "true" -a -n "$DISP" ]; then
  27. # additional check, if none of these two apps are running, go on
  28. if [ -n "`pidof kded4`" -o -n "`pidof gnome-power-manager`" -o -n "`pidof guidance-power-manager`" -o -n "`pidof kpowersave`" -o -n "`pidof dalston-power-applet`" ]; then
  29. echo doing nothing...
  30. exit 0
  31. fi
  32. fi
  33. done < <(ck-list-sessions)
  34. logger -s -t acpid "Power Button pressed, executing $EXEC"
  35. $EXEC