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.
You may have to change several paths to use it and donwload this iconsCode:#!/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:
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.![]()