#!/bin/bash # /etc/acpi/default.sh # Default acpi script that takes an entry for all actions set $* group=${1/\/*/} action=${1/*\//} device=$2 id=$3 value=$4 tmpdir="/var/tmp/acpid/" if [ ! -d $tmpdir ] ; then mkdir -m 700 -p $tmpdir ; fi @@notify_users() { #Use Xosd to print information on all displays. displays=`ls /tmp/.X*-lock |sed -e "s/\/tmp\/.X\([0-9]\+\)-lock/\1/g"` osd_cmd="osd_cat -p bottom -A center -d 2 -c green -s 3 -o 100" osd_cmd="${osd_cmd} -f -microsoft-verdana-bold-r-normal--32-* " osd_text="" case $1 in text) osd_text=$2 ;; slider) osd_cmd="${osd_cmd} -b slider -P $3 " osdparamname="-T" osdtext=$2 ;; percentage) osd_cmd="${osd_cmd} -b percentage -P $3 " osdparamname="-T" osdtext=$2 ;; *) osd_text=$1 ;; esac #this SUX MORE, but is the only solution... /usr/bin/xauth merge /home/*/.Xauthority ; killall -u root osd_cat ; for i in $displays ; do export DISPLAY=":${i}" ; echo "${osd_text}" | $osd_cmd $osdparamname "$osdtext" & done } log_unhandled() { # notify_users text "ACPI event unhandled: $*" echo "Unhandled event: $*" } case "$group" in button) case "$action" in power) tmpfile=${tmpdir}powertime ; if [ -e $tmpfile ] ; then lasttime=`cat $tmpfile` ; else lasttime=0 ; fi timenow=`date +%s` if [[ $(( $lasttime+1 )) -ge $timenow ]] ; then /usr/sbin/hibernate ; else echo $timenow > $tmpfile ; fi ;; *) log_unhandled $* ;; esac ;; ac_adapter) case "$value" in # Add code here to handle when the system is unplugged # (maybe change cpu scaling to powersave mode) #*0) # ;; # Add code here to handle when the system is plugged in # (maybe change cpu scaling to performance mode) #*1) # ;; *) log_unhandled $* ;; esac ;; hotkey) if [[ ( $id > 0000000f ) && ( $id < 00000030 ) ]] ; then br=`cat /proc/acpi/asus/brn` ; br=$(($br*100/15)) ; notify_users percentage "display brightness" $br ; fi case "$id" in 00000032) /usr/bin/amixer sset Headphone toggle mutestatus="unmuted" if [[ `/usr/bin/amixer sget Headphone |grep off` ]] ; then mutestatus="muted" ; fi notify_users text $mutestatus ; ;; 00000031) #volume down /usr/bin/amixer sset Line 1%- percentxt=`amixer sget Line |grep -o [0-9]*\%|head -n 1` percent=`echo ${percentxt} |grep -o [0-9]*` notify_users percentage "volume:${percentxt}" $percent ;; 00000030) #volume up /usr/bin/amixer sset Line 1%+ percentxt=`amixer sget Line |grep -o [0-9]*\%|head -n 1` percent=`echo ${percentxt} |grep -o [0-9]*` if [[ $percent -ge 52 ]] ; then /usr/bin/amixer sset Line 52% ; percentxt="52%" ; percent=52 ; fi notify_users percentage "volume:${percentxt}" $percent ;; 0000005c) tmpfile=${tmpdir}nettime ; if [ -e $tmpfile ] ; then lasttime=`cat $tmpfile` ; else lasttime=0 ; fi timenow=`date +%s` if [[ $(( $lasttime+1 )) -ge $timenow ]] ; then notify_users text "ethernet is begin restarted..." ; /etc/init.d/net.eth2 restart ; notify_users text "done" ; else echo $timenow > $tmpfile ; fi ;; *) log_unhandled $* ;; esac ;; *) log_unhandled $* ;; esac