#!/bin/sh # # Simple suspend script # # Copyright 2006 Red Hat, Inc. # # Based on work from: # Bill Nottingham # Peter Jones # David Zeuthen # Richard Hughes # # This program is free software; you can redistribute it and/or modify # it under the terms of version 2 of the GNU General Public License as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # The rule here? Simplicity. help_options() { echo "${0##*/} [options]" echo echo "Options can change how the supend or hibernate is done." echo echo "Possible actions are:" echo echo " --quirk-dpms-on" echo " --quirk-dpms-suspend" echo " --quirk-radeon-off" echo " --quirk-reset-brightness" echo " --quirk-s3-bios" echo " --quirk-s3-mode" echo " --quirk-vbe-post" echo " --quirk-vbemode-restore" echo " --quirk-vbestate-restore" echo " --quirk-vga-mode3" echo } if [ -n "$EUID" -a "$EUID" != "0" ]; then echo This utility may only be run by the root user. 1>&2 exit 1 fi # Get the command line options while [ $# -gt 0 ] do case "$1" in --quirk-dpms-on) export DISPLAY_QUIRK_DPMS_ON="true" ;; --quirk-dpms-suspend) export DISPLAY_QUIRK_DPMS_SUSPEND="true" ;; --quirk-radeon-off) export DISPLAY_QUIRK_RADEON_OFF="true" ;; --quirk-reset-brightness) export DISPLAY_QUIRK_RESET_BRIGHTNESS="true" ;; --quirk-s3-bios) export DISPLAY_QUIRK_S3_BIOS="true" ;; --quirk-s3-mode) export DISPLAY_QUIRK_S3_MODE="true" ;; --quirk-vbe-post) export DISPLAY_QUIRK_VBE_POST="true" ;; --quirk-vbemode-restore) export DISPLAY_QUIRK_VBEMODE_RESTORE="true" ;; --quirk-vbestate-restore) export DISPLAY_QUIRK_VBESTATE_RESTORE="true" ;; --quirk-vga-mode3) export DISPLAY_QUIRK_VGA_MODE_3="true" ;; --help) help_options exit 0 ;; *) break ;; # terminate while loop esac shift done export PM_FUNCTIONS="/usr/lib/pm-utils/functions" . "${PM_FUNCTIONS}" [ -f /sys/power/state ] || exit 1 ACTION=${0##*pm-} case "$ACTION" in suspend) if ! pm-is-supported --"$ACTION" ; then echo "Error: kernel cannot suspend to ram." 1>&2 exit 1 fi REVERSE=resume ;; hibernate) if ! pm-is-supported --"$ACTION" ; then echo "Error: kernel cannot suspend to disk." 1>&2 exit 1 fi REVERSE=thaw ;; suspend-hybrid) if ! pm-is-supported --"$ACTION" ; then echo "Error: hybrid suspend is not supported." 1>&2 exit fi REVERSE=resume ;; *) exit 1 ;; esac export PM_CMDLINE="$@" pm_main "$(echo $ACTION | tr - _)" "$REVERSE" exit $?