Skip to content

Instantly share code, notes, and snippets.

Created September 19, 2009 01:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/189374 to your computer and use it in GitHub Desktop.
Save anonymous/189374 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
WIFI_MOD="ath_pci"
XUSER="nomius"
TASK_MANAGER_COMMAND="urxvt -tr +sb -sh 30 -fn fixed -fg white -ls \
-bd red +vb -title htop -bl -hc blue -e htop"
DEFAULT_AP=Apollo
setXuser() {
if [ -S /tmp/.X11-unix/X0 ]; then
export DISPLAY=":0.0"
export XU=$(ps axfu | grep -v grep | grep xinit | grep X | \
awk '{print $1}')
if [ -z "$XU" ]; then
logger "Could not verify user for X:"
logger "Falling back to XUSER: $XUSER"
XU="$XUSER"
else
logger "Found X session user: $XU"
fi
XAUTHORITY=/home/$XU/.Xauthority
[ -f $XAUTHORITY ] && export XAUTHORITY
export XU
else
logger "X not probably running"
exit 1
fi
}
suspend2ram() {
logger "Going to suspend mode"
if [ -n "${XU}" ]; then
xset dpms force off
else
vbetool dpms off
fi
if grep -q mem /sys/power/state; then
sync
sleep 1
echo -n "mem" > /sys/power/state
fi
vbetool dpms on
logger "Restoring from suspend more"
}
setspeed() {
if grep -q 'off-line' /proc/acpi/ac_adapter/AC0/state; then
logger "Setting machine to powersave mode"
corectl gobernor powersave
else
logger "Setting machine to ondemand mode"
corectl gobernor ondemand
fi
}
manage_hotkeys() {
case "$2" in
'00000010') # Wireless button
if [ "$(lsmod | grep "${WIFI_MOD}")" != "" ]; then
logger "Turning Wireless device off"
dhcpcd -k ath0
ip link set ath0 down
rmmod ath_pci
else
logger "Turning Wireless device on"
modprobe ath_pci
ip link set ath0 up
if [ -n "${DEFAULT_AP}" ]; then
iwconfig ath0 essid "${DEFAULT_AP}"
if [ $? -eq 0 ]; then
dhcpcd ath0
fi
fi
fi
;;
'00000037') # Touchpad button
setXuser
logger "Toggle touchpad device"
if [ "$(synclient -l | grep TouchpadOff | awk '{print $3}')" = "0" ]; then
synclient TouchpadOff=1
else
synclient TouchpadOff=0
fi
;;
'00000038') # Display resize
setXuser
[ ! -f /tmp/.acpi/_xsize ] && echo 0 > /tmp/.acpi/_xsize
before=$(cat /tmp/.acpi/_xsize)
if [ "${before}" == '0' ]; then
xrandr -s 1
echo 1 > /tmp/.acpi/_xsize
elif [ "${before}" == '1' ]; then
xrandr -s 0
echo 0 > /tmp/.acpi/_xsize
fi
logger "Switching display size"
echo
;;
'00000016') # Turn off display
before=$(cat /tmp/.acpi/_dpms)
if [ "${before}" == "off" ]; then
if [ -n "${XU}" ]; then
setXuser
su ${XU} --login -c xset dpms force on
else
vbetool dpms on
fi
logger "Turning display on"
echo on > /tmp/.acpi/_dpms
else
if [ -n "${XU}" ]; then
setXuser
su ${XU} --login -c xset dpms force off
else
vbetool dpms off
fi
logger "Turning display off"
echo off > /tmp/.acpi/_dpms
fi
;;
'00000030') # Swtich displays (vga and lvds)
setXuser
[ -z "${XU}" ] && exit 0
[ ! -f /tmp/.acpi/_display ] && echo lvds > /tmp/.acpi/_display
before=$(cat /tmp/.acpi/_display)
if [ "${before}" == "vga" ]; then
logger "Setting display output to LVDS"
su ${XU} --login -c xrandr --output LVDS --preferred \
--output VGA --off
echo lvds > /tmp/.acpi/_display
fi
if [ "${before}" == "lvds" ]; then
logger "Setting display output to VGA"
su ${XU} --login -c xrandr --output LVDS --off \
--output VGA --preferred
echo vga > /tmp/.acpi/_display
fi
;;
'00000012') # Start the "task manager" (htop! :-D)
setXuser
logger "Starting the task manager"
su $XU --login -c "$TASK_MANAGER_COMMAND" &
;;
'00000013') # Sound toggle
amixer set LineOut toggle
amixer set iSpeaker toggle
;;
'00000014') # Volume Down
amixer set LineOut 4%-
;;
'00000015') # Volume Up
amixer set LineOut 4%+
;;
'00000039') # Toggle speed (with space key)
if [ "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)" = "ondemand" ]; then
if grep -q 'off-line' /proc/acpi/ac_adapter/AC0/state; then
logger "Setting powersave gobernor"
corectl gobernor powersave
else
logger "Setting performance gobernor"
corectl gobernor performance
fi
elif [ "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)" = "powersave" ]; then
logger "Setting ondemand gobernor"
corectl gobernor ondemand
elif [ "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)" = "performance" ]; then
logger "Setting ondemand gobernor"
corectl gobernor ondemand
fi
;;
'0000001a') # Toggle camera (X button in the extra buttons panel)
if [ "$(cat /sys/devices/platform/eeepc/camera)" == "0" ]; then
echo 1 > /sys/devices/platform/eeepc/camera
else
echo 0 > /sys/devices/platform/eeepc/camera
fi
esac
}
case "$1" in
'button/sleep'|'button/lid')
suspend2ram
sleep 1
setspeed
;;
'button/power')
/sbin/shutdown -t3 -h now
;;
'hotkey')
manage_hotkeys ${2} ${3} ${4}
;;
'ac_adapter')
if grep -q 'off-line' /proc/acpi/ac_adapter/AC0/state; then
logger "Setting machine to powersave mode"
corectl gobernor powersave
echo 0 > /sys/devices/virtual/backlight/eeepc/brightness
echo 1 > /proc/sys/vm/laptop_mode
else
logger "Setting machine to ondemand mode"
corectl gobernor ondemand
echo 3 > /sys/devices/virtual/backlight/eeepc/brightness
echo 0 > /proc/sys/vm/laptop_mode
echo 40 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold
fi
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment