setpci – Hacer una secuencia de commands para cambiar manualmente el brillo

Puedo usar algo como

setpci -s 00:02.0 F4.B=XX 

reemplazando 00: 02.0 con la dirección de su dispositivo (obtenida vía lspci | grep VGA) y XX con un valor entre 00 y FF (FF = 100%, 7F = 50%, etc …) para cambiar manualmente mi brillo desde la terminal ( como root, o con chmods adecuados).

Deseo hacer una secuencia de commands para cambiar manualmente mi brillo a través de las teclas. Para hacerlo, necesito get el estado actual (XX arriba) para retransmitir a la secuencia de commands el brillo actual de la pantalla.

¿Cómo puedo get el estado actual?

Related of "setpci – Hacer una secuencia de commands para cambiar manualmente el brillo"

Terminé haciendo algunos guiones para resolver mi problema.

  • Ligé los siguientes tres scripts a las teclas convenientes (CTRL + ALT + PGUP para boost el brillo, CTRL + ALT + PGDN para brigthtness hacia abajo y CTRL + ALT + HOME para restaurar brigtness a un valor pnetworkingeterminado).
  • Los scripts requieren setpci sudoless (probablemente puedas jugar con algunos chmods luego de ver los errores que obtienes ejecutando setpci para evitar editar sudoers) a través de una línea como:

    androith ALL = (ALL) NOPASSWD: / usr / bin / setpci

  • Finalmente, deberá mantener un "file de estado" en algo similar a /home/androith/.scripts/brightness/state que contenga solo un estado (BF para empezar está bien).

brightness-up.sh

 #!/bin/bash # Get the stonetworking state from file exec < /home/androith/.scripts/brightness/state # stdin replaced by this file read state # first line of file goes to state variable # Increase the state, up to FF new_state=$(echo "$[0x$state+0x10]") # in decimal if [ "$new_state" -gt 255 ] # 255 = FF in hex then echo "Already at maximal brightness." else state=$(echo "obase=16; $new_state" | bc) # put into hex echo "Setting brightness to $state and storing state..." sudo setpci -s 00:02.0 F4.B=$state # passwordless sudo echo $state > /home/androith/.scripts/brightness/state fi 

brightness-down.sh

 #!/bin/bash # Get the stonetworking state from file exec < /home/androith/.scripts/brightness/state # stdin replaced by this file read state # first line of file goes to state variable # Decrease the state, down to FF new_state=$(echo "$[0x$state-0x10]") # in decimal if [ "$new_state" -lt 15 ] # 15 = 0F in hex then echo "Already at minimal brightness." else state=$(echo "obase=16; $new_state" | bc) # update and put into hex echo "Setting brightness to $state and storing state..." sudo setpci -s 00:02.0 F4.B=$state # passwordless sudo echo $state > /home/androith/.scripts/brightness/state fi 

brightness-default.sh

 #!/bin/bash # Set brightness to default value state=AF sudo setpci -s 00:02.0 F4.B=$state # passwordless sudo echo $state > /home/androith/.scripts/brightness/state 

Xbacklight no funciona en mi netbook; la luz de background no es visible para el subsistema ACPI. Sin embargo, he pirateado estos dos guiones de shell juntos:

 brightup.sh: #!/bin/bash var1=`sudo setpci -s 00:02.0 f4.b | tr [:lower:] [:upper:]`; var2=$(echo "obase=16;ibase=16;${var1} + 8" |bc) sudo setpci -s 00:02.0 f4.b=$var2 brightdown.sh: #!/bin/bash var1=`sudo setpci -s 00:02.0 f4.b | tr [:lower:] [:upper:]`; var2=$(echo "obase=16;ibase=16;${var1} - 8" |bc) sudo setpci -s 00:02.0 f4.b=$var2 

El problema que estoy teniendo es que requiere sudo. El objective final de esto es establecer estos dos scripts de shell para que se ejecuten como accesos directos de keyboard, por lo que necesito averiguar cómo configurar setpci para poder ejecutar sin una contraseña con sudo. Lo sé, es probable que sea inseguro, y un poco complicado, pero no veo ninguna otra opción en este momento.

Además, me disculpo por necroing este hilo, pero estos son dos guiones que he estado buscando en las networkinges internas desde que volví a usar Linux a diario.

Hay un pequeño progtwig llamado xbacklight. Puede get y establecer el brillo de su pantalla. Si tienes una camera web, incluso puedes dejar que configure tu brillo automáticamente tomando una foto, obteniendo el brillo promedio y ajustando el brillo de la pantalla en consecuencia.

 image='/home/kim/brightness.jpeg' streamer -c /dev/video0 -b 16 -o $image >/dev/null 2>/dev/null && \ meanline=`convert $image -colorspace gray -verbose info: | grep '^\s*mean: '` if [[ $meanline =~ \((.*)\) ]]; then brightness="${BASH_REMATCH[1]}" brightness=`echo "$brightness * 200" | bc` echo $brightness xbacklight -set $brightness xbacklight fi rm -f "$image" 

Sé que esta no es una forma muy segura de hacerlo … pero funciona.

 #!/bin/bash password="your_password_here" set_value_to=$(zenity --title="Brightness control" --scale --text="Adjust the brightness value" --min-value=5 --max-value=95 --value=50) echo $password | sudo -S setpci -s 00:02.0 f4.b=$set_value_to