Ajustando el brillo de la pantalla en Awesome
Poder cambiar la luminosidad de una pantalla siempre es algo práctico, para ajustarla cuando hay más o menos luz, o incluso apagarla para que un portatil siga procesando sin la pantalla encendida. Esto suele funcionar solo cuando utilizamos un entorno como KDE o Gnome, pero puede que no sea así si no utilizamos ciertos drivers o si preferimos entornos más configurables (como awesome).
Si preferimos hacerlo a mano, podemos desde la línea de comandos en
/sys/class/backlight/
, en el directorio de cada dispositivo hay
un archivo brightness
que marca el brillo actual (y que acepta cambios) y
otro, max_brightness
, donde indica el valor máximo que acepta, por ejemplo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Sabiendo esto, podemos montar un scriptillo para que lo haga automáticamente, tendría que poder...
Listar los dispositivos:
1 2 |
|
Mostrar el brillo actual y el máximo:
1 2 3 4 5 6 7 |
|
Cambiar el brillo:
1 2 3 |
|
Con esto ya podemos hacer un par de funciones para aumentar y disminuir el brillo:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Le añadimos una función de ayuda y un main y está listo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
Y el script está listo [ brightness.py ],
pero hay un problema... para cambiar el brillo hacen falta permisos de root.
Podemos ejecutar el script con sudo
, pero podemos hacer que no sea
necesario con setuid.
El tema de usar setuid
con python tiene truco, resulta que usarlo en
scripts que indiquen el intérprete con #!
implica problemas de seguridad
y está desactivado en sistemas modernos. La solución es compilar el script,
por ejemplo con cython
.
1 2 3 4 5 6 7 8 |
|
OJO: gcc no require demasiados parámetros por que es un script sencillo, pero no tiene por que ser así, hay por ahí Makefiles más completos
Una vez compilado ya podemos hacerlo setuid
como root:
1 2 3 4 5 |
|
Así que con esto ya debería bastar:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Y ya podemos modificarlo con cualquier usuario desde la consola!
Pero, y si tenemos un entorno de escritorio Awesome y queremos que funcionen
las teclas de brillo? Pues eso es bastante sencillo, en el rc.lua
hay
una sección, clientkeys
, donde podemos configurarlo:
1 2 3 4 5 |
|
Y con esto ya estaría completo y podremos ajustar el brillo sin necesidad de ningún extra (más... :P).
PD: el código, para hacer make
y tirar millas está en GitLab.