updatebrightness
Nombre: updatebrightness
Autor: elsenyordelcaos
Origen: propio
Lenguaje: bash
Licencia: GPL
Propósito: Manipular el brillo de la pantalla en los portátiles Toshiba compatibles con omnibook o toshiba_acpi
Dependencias: omnibook|toshiba_acpi, coreutils, sed, grep
Código:
#!/bin/bash
# Inicialización de variables.
state=0
max=7
min=0
dest=""
med=""
#Comprobamos la existencia de la primer parámetro y se lo asignamos a la variable acc y si no hay variable devuelve error
if [ -n "$1" ]; then
acc=$1
else
echo "Falta acción a realizar, las acciones permitidas son up, down y assing"
exit 1
fi
#Comprobamos si la acción es de asignación y comprobamos que exista el segundo parámetro que asignamos a la variable val y sino sale con error.
if [ "$acc" = "assing" ]; then
if [ -n "$2" ]; then
val=$2
else
echo "Falta valor a asignar"
exit 2
fi
fi
#Comprobar si existe el archivo a modificar del módulo omnibook
if [ -f "/proc/omnibook/lcd" ]; then
dest="/proc/omnibook/lcd"
state=`cat /proc/omnibook/lcd | grep brightness: | sed -e 's/.* //;s/ (.*//'`
max=`cat /proc/omnibook/lcd | grep brightness: | sed -e 's/.*: //;s/)//'`
min=0
med=""
#Comprobar si existe el archivo a modificar del módulo toshiba_acpi
elif [ -f "/proc/acpi/toshiba/lcd" ]; then
dest="/proc/acpi/toshiba/lcd"
state=`cat /proc/acpi/toshiba/lcd | grep brightness: | sed -e 's/.* //'`
max=`cat /proc/acpi/toshiba/lcd | grep brightness_ | sed -e 's/.* //'`
max=$(($max-1))
min=0
med="brightness: "
else
#Si no hay ninguno cargado devuelve error y sale del script
echo "No esta cargado el módulo de control de brillo"
exit 3
fi
#Comprobamos que acción se ha elegido y la aplicamos
if [ "$acc" = "up" ]; then
#Comprobamos que no este en el máximo.
if [ "$state" != "$max" ]; then
state=$(($state+1))
echo $med$state > $dest
fi
elif [ "$acc" = "down" ]; then
#Comprobamos que no este en el mínimo.
if [ "$state" != "$min" ]; then
state=$(($state-1))
echo $med$state > $dest
fi
elif [ "$acc" = "assing" ]; then
#Traducimos máximo y mínimo, además nos aseguramos que queda un número.
if [ "$val" = "maximo" ]; then
val=$max
elif [ "$val" = "minimo" ]; then
val=$min
elif [ -z "${val//[0-9]}" ]; then
val=$val
else
val=$(($max+1)) #Si no coincide con las anteriores ponemos un valor numérico que sepamos que no funcione.
fi
#Comprobamos que el numero este entre los valores máximos y mínimos.
if [ "$min" -le "$val" ] && [ "$max" -ge "$val" ]; then
echo $med$val > $dest
else
#Salimos con error si no hay valor correcto.
echo "No se ha asignado un valor correcto, Utilize un número entre $min y $max o máximo o mínimo"
exit 4
fi
else
#Si la acción no es correcta devuelve error
echo "La opción no es correcta. Utilize: up, down o assing"
exit 5
fi
Ejemplos de uso:
Subir y bajar el brillo:
$ updatebrightness down
$ updatebrightness upAsignar un valor concreto al brillo
$ updatebrightness assing 4Poner el brillo al mínimo o al máximo:
$ updatebrightness assing minimo
$ updatebrightness assing maximoComentarios:
Para usarlo como usuario normal debemos cargar el módulo omnibook con la opción: userset=1 y en el caso del módulo toshiba_acpi cambiar los permisos del archivo /proc/acpi/toshiba/lcd.
No posee ayuda. Se necesita darle al usuario una forma de conocer que valores máximos y mínimos posee el brillo de la pantalla.