Cambiar el nivel de brillo desde línea de comando en Linux

Debido a que uso XMonad, siempre busco la forma de realizar tareas con el teclado.  Cuando hablé de ese administrador de ventanas también puse un par de scripts que uso para escribir información miscelánea en la “barra” que creo con dzen2. Pero hay algo que todavía no logro desde la línea de comandos: cambiar el nivel de brillo de la pantalla.

Bueno, en realidad no es que no haya podido, solamente que el método que uso no es definitivamente el mejor: cambiar directamente el archivo /sys/class/backlight/acpi_video0/brightness con el nivel de brillo deseado (que sin mal no recuerdo va de 0 a 20) con el comando:

echo 10 > /sys/class/acpi_video0/brightness

(para un valor de 10, por ejemplo. La ubicación del archivo puede variar dependiendo de la distribución.)

El problema de este método es que, para que funcione, hay que hacer una de 2 cosas:

  • chmod para que cualquier usuario pueda modificarlo, o
  • ejecutar el comando como root

Para muchos, quizá no importe el hecho de tener que ser root para ejecutar un comando, pero hay que recordar que se recomienda no ejecutar nada como súper usuario para evitar posibles agujeros de seguridad. Y tener el archivo con permisos 777 tampoco es la meta.

Estuve revisando, y encontré que xrandr tiene la propiedad Backlight, la cual controla el nivel de brillo en la pantalla. Según xrandr –prop los valores válidos están en el rango 0-9, así que intenté un xrandr –set Backlight 5, pero no pasó nada.

Como tengo gnome-power-manager en .xsession y las hotkeys de la laptop para ajustar el brillo funcionan, pensé que mi problema estaría resuelto, pero no contaba con que al usarlas, el valor que cambia es el mismo que xrandr reporta, por lo que, como ya podrán imaginar, no pasó nada. Y lo mismo pasó con xbacklight, el cual reporta un cambio al usar xbacklight -10%, pero en realidad no sucede nada.

Cierto es que podría hacer un script para modificar el brillo y podría ligarlo a la combinación de teclas Mod4 + left/right, pero termino en lo mismo de arriba: si no lo ejecuto como root, sencillamente no va a funcionar.

De momento, lo que hago siempre que entro en Linux (en XMonad) es ejecutar el comando ya mencionado (echo del valor al archivo) como root. Da flojera, sí, pero es la única solución que ha funcionado hasta el momento.

4 thoughts on “Cambiar el nivel de brillo desde línea de comando en Linux”

  1. Podrías añadir en /etc/sudoers un usuario que solo pueda ejecutar el script como root y nada más.

    http://www.rpublica.net/sudo/sudoers.html

    Y por ejemplo poner tu script en /usr/bin o /usr/sbin
    y que el usuario tan solo tenga permiso de hacer sudo al script con el valor que requiera, por otro lado le di una leída rápida a que es /sys en 2.6.x y a lo mejor si tienes tiempo puedes sacar algo de los excelentes tutoriales de lwn sobre como portar drivers a 2.6.x http://lwn.net/Articles/driver-porting/

    1. Lo voy a intentar.

      Lo que también probé fue crear un grupo brightness, agregar mi usuario a él, y hacer un chgrp al archivo en cuestión, pero quién sabe por qué nomás no se dejó.

      Nomás que tenga chance y me pongo a jugar más. Necesito hacer otros scripts para la barrita 🙂

  2. hola yo pongo asi en la terminal como root y si me funciona en una lenovo G480 con intel Fedora 17
    xrandr –outpu LVDS1 –brightness 0.6 y asi cambia pero lo que quiero es que esto funcione desde el arranque de fedora y nose donde poner esta configuracion gracias por alguna ayuda.

Leave a Reply

Your email address will not be published. Required fields are marked *