Created
September 19, 2009 01:29
-
-
Save anonymous/189374 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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