Cfuzz
03-24-2008, 09:43 PM
Hi all! I've written a bash script to switch between hi and low power consumption with just one click on the tray icon. I recently added support to a third mode that enables a second monitor when it is connected, altough I had to comment some lines because my graphics card has no low-power mode for dual-head. The script is quite specific for my setup, it requires ksystraycmd and xrandr 1.2, it enables compiz fusion on startup if connected to AC and assumes your screen resolution is 1280x800.
#!/bin/bash
# Cambia el estado de energia de la tarjeta grafica para reducir el consumo
# Al principio no tiene parametros, esto es lo que ejecuta para inicializarse:
if [ $# = 0 ]; then
# Dependiendo de si estamos conectados a una fuente de alimentacion AC o funcionamos
# con baterias ponemos el modo de energía y activamos o no fusion
if cat /proc/acpi/ac_adapter/ACAD/state | grep on >/dev/null 2>/dev/null; then
echo 'Cambiando a maximo rendimiento'
POWER=3
FUSION="-f"
else
echo 'Cambiando a bajo consumo'
POWER=1
FUSION="-n"
fi
sudo /usr/bin/aticonfig --set-powerstate=$POWER
/home/cfu22/sistema/bin/fusion-icon $FUSION &
# Comprueba si tenemos doble monitor y si hay que cambiar la configuracion
if sudo /usr/bin/aticonfig --query-monitor | grep Connected | grep crt1 >/dev/null 2>/dev/null; then
DOUBLE=2
POWER=3 # El modo doble monitor no soporta ahorro de energia
if sudo /usr/bin/aticonfig --query-monitor | grep Enabled | grep crt1 >/dev/null 2>/dev/null; then
echo 'El segundo monitor ya esta habilitado'
else
echo 'habilitando el segundo monitor'
xrandr -s 1280x800
sudo /usr/bin/aticonfig --enable-monitor="lvds,crt1"
xrandr -s 2560x800
fi
else
DOUBLE=1
echo 'Optimizando la resolucion'
xrandr -s 1280x800
fi
else
# Estamos cambiando el modo con el icono de la bandeja
if [ $1 = "--switch" ]; then
# Comprueba si tenemos doble monitor y si hay que cambiar la configuracion
if sudo /usr/bin/aticonfig --query-monitor | grep Connected | grep crt1 >/dev/null 2>/dev/null; then
if sudo /usr/bin/aticonfig --lsp | grep \* | grep default >/dev/null 2>/dev/null; then
echo 'Cambiando a bajo consumo'
# POWER=1
if sudo /usr/bin/aticonfig --query-monitor | grep Enabled | grep crt1 >/dev/null 2>/dev/null; then
xrandr -s 1280x800
sudo aticonfig --enable-monitor="lvds"
DOUBLE=1
POWER=1
else
xrandr -s 1280x800
sudo aticonfig --enable-monitor="lvds,crt1"
xrandr -s 2560x800
DOUBLE=2
POWER=3
fi
else
echo 'Cambiando a maximo rendimiento'
POWER=3
if sudo /usr/bin/aticonfig --query-monitor | grep Enabled | grep crt1 >/dev/null 2>/dev/null; then
DOUBLE=2
else
DOUBLE=1
fi
fi
else
DOUBLE=1
if sudo /usr/bin/aticonfig --lsp | grep \* | grep default >/dev/null 2>/dev/null; then
echo 'Cambiando a bajo consumo'
POWER=1
else
echo 'Cambiando a maximo rendimiento'
POWER=3
fi
fi
sudo /usr/bin/aticonfig --set-powerstate=$POWER
fi
fi
if [ $POWER = 3 ]; then
ICON=/home/cfu22/sistema/share/icons/atihigh$DOUBLE.svg
else
ICON=/home/cfu22/sistema/share/icons/atilow$DOUBLE.svg
fi
/usr/bin/ksystraycmd --hidden --startonshow --ownicon --icon=$ICON '/home/cfu22/sistema/bin/traysensor' '--switch' & exit
You may have to change several paths to use it and donwload this icons :p:
http://www.megaupload.com/?d=86IXI23F
I know this is kinda dirty, but I thought it might be useful for somebody. I plan on doing a serious app with more options when I have some time.:D
#!/bin/bash
# Cambia el estado de energia de la tarjeta grafica para reducir el consumo
# Al principio no tiene parametros, esto es lo que ejecuta para inicializarse:
if [ $# = 0 ]; then
# Dependiendo de si estamos conectados a una fuente de alimentacion AC o funcionamos
# con baterias ponemos el modo de energía y activamos o no fusion
if cat /proc/acpi/ac_adapter/ACAD/state | grep on >/dev/null 2>/dev/null; then
echo 'Cambiando a maximo rendimiento'
POWER=3
FUSION="-f"
else
echo 'Cambiando a bajo consumo'
POWER=1
FUSION="-n"
fi
sudo /usr/bin/aticonfig --set-powerstate=$POWER
/home/cfu22/sistema/bin/fusion-icon $FUSION &
# Comprueba si tenemos doble monitor y si hay que cambiar la configuracion
if sudo /usr/bin/aticonfig --query-monitor | grep Connected | grep crt1 >/dev/null 2>/dev/null; then
DOUBLE=2
POWER=3 # El modo doble monitor no soporta ahorro de energia
if sudo /usr/bin/aticonfig --query-monitor | grep Enabled | grep crt1 >/dev/null 2>/dev/null; then
echo 'El segundo monitor ya esta habilitado'
else
echo 'habilitando el segundo monitor'
xrandr -s 1280x800
sudo /usr/bin/aticonfig --enable-monitor="lvds,crt1"
xrandr -s 2560x800
fi
else
DOUBLE=1
echo 'Optimizando la resolucion'
xrandr -s 1280x800
fi
else
# Estamos cambiando el modo con el icono de la bandeja
if [ $1 = "--switch" ]; then
# Comprueba si tenemos doble monitor y si hay que cambiar la configuracion
if sudo /usr/bin/aticonfig --query-monitor | grep Connected | grep crt1 >/dev/null 2>/dev/null; then
if sudo /usr/bin/aticonfig --lsp | grep \* | grep default >/dev/null 2>/dev/null; then
echo 'Cambiando a bajo consumo'
# POWER=1
if sudo /usr/bin/aticonfig --query-monitor | grep Enabled | grep crt1 >/dev/null 2>/dev/null; then
xrandr -s 1280x800
sudo aticonfig --enable-monitor="lvds"
DOUBLE=1
POWER=1
else
xrandr -s 1280x800
sudo aticonfig --enable-monitor="lvds,crt1"
xrandr -s 2560x800
DOUBLE=2
POWER=3
fi
else
echo 'Cambiando a maximo rendimiento'
POWER=3
if sudo /usr/bin/aticonfig --query-monitor | grep Enabled | grep crt1 >/dev/null 2>/dev/null; then
DOUBLE=2
else
DOUBLE=1
fi
fi
else
DOUBLE=1
if sudo /usr/bin/aticonfig --lsp | grep \* | grep default >/dev/null 2>/dev/null; then
echo 'Cambiando a bajo consumo'
POWER=1
else
echo 'Cambiando a maximo rendimiento'
POWER=3
fi
fi
sudo /usr/bin/aticonfig --set-powerstate=$POWER
fi
fi
if [ $POWER = 3 ]; then
ICON=/home/cfu22/sistema/share/icons/atihigh$DOUBLE.svg
else
ICON=/home/cfu22/sistema/share/icons/atilow$DOUBLE.svg
fi
/usr/bin/ksystraycmd --hidden --startonshow --ownicon --icon=$ICON '/home/cfu22/sistema/bin/traysensor' '--switch' & exit
You may have to change several paths to use it and donwload this icons :p:
http://www.megaupload.com/?d=86IXI23F
I know this is kinda dirty, but I thought it might be useful for somebody. I plan on doing a serious app with more options when I have some time.:D