¿Cómo cambiar el brillo de la pantalla LCD desde la línea de comandos (o mediante script)?

162

Para evitar el error # 1005495 (es imposible cambiar el brillo de la pantalla LCD mediante teclas de acceso rápido), me gustaría tener una consulta de línea de comando para aumentar y otra para reducir el brillo de mi pantalla LCD. Entonces podría asignar una tecla de acceso rápido a cada una de estas consultas.

El problema es: no sé cómo aumentar y reducir el brillo de la pantalla LCD en la línea de comando. ¿Vos si?

usuario69748
fuente
2
Gracias, Lekensteyn, pero no es un duplicado ya que lsmod | grep ^ i915 no me da salida (ver solución aceptada). Todavía en busca de una solución.
usuario69748

Respuestas:

157

Una forma más de hacerlo es con otro programa nuevo llamado xbacklight, abra su terminal y escriba esto

sudo apt-get install xbacklight

luego escribe esto xbacklight -set 50

Allí 50 representa el rango de brillo, podemos obtener hasta 100 desde 0.

También puede aumentar y disminuir el brillo desde el valor actual hasta el nivel especificado. Como mencionó si desea aumentar al 10% desde el valor actual de brillo, puede dar

xbacklight -inc 10

y para disminuir un 10% puedes dar esto

xbacklight -dec 10 

Advertencia : xbacklightsolo funciona con Intel, no correctamente en Radeon y en absoluto con el controlador de configuración de modo ( fuente ).

rɑːdʒɑ
fuente
Parece un comando realmente simple, pero lo que necesitaría es algo como xbacklight -increase 10 para aumentar el brillo en un 10 por ciento. ¿Eso también es posible?
user69748
1
Sí tu puedes. Ya lo he mencionado. para que pueda obtener eso por xbacklight -inc 10
rɑːdʒɑ
1
Ok, ahora está en tu respuesta. Muchas gracias, lo intentaré.
user69748
34
Eso realmente parece simple, pero desafortunadamente no funciona para mí. El brillo simplemente no cambia, ni con -dec ni con -set. Supongo que tendré que esperar que el error se solucione pronto. Gracias sin embargo.
user69748
2
Además, hay una taquigrafía que puede usar: xbacklight +10; xbacklight -10; xbacklight =50;
Fordi
149

Abre tu terminal y escribe esto

xrandr -q | grep " connected"

te dará la salida como

LVDS1 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 331mm x 207mm

Hay LVDS1 Soportes para su pantalla. Entonces ahora tienes que hacer como

xrandr --output LVDS1 --brightness 0.5

allí 0.5 representa el nivel de brillo y varía de 0.0 a 1.0. 0.0 -> Negro completo. Por lo que debe elegir el valor requerido de brillo.

Esto no cambia el brillo a nivel de hardware . Del randrmanual :

--brightness brightnessMultiplique los valores gamma en el crtc actualmente conectado a la salida al valor flotante especificado. Útil para salidas demasiado brillantes o demasiado tenues. Sin embargo, esta es una modificación solo de software , si su hardware tiene soporte para cambiar realmente el brillo, probablemente prefiera usar xbacklight.

rɑːdʒɑ
fuente
2
Gracias por su respuesta, pero lo que necesito es algo como xrandr: aumentar 10 para aumentar el brillo en un 10 por ciento. ¿Eso también es posible?
user69748
48
esto no parece cambiar el brillo a nivel de hardware
erjoalgo
12
Lástima que esta respuesta haya obtenido tantos votos. La pantalla de mi computadora portátil "emula" la oscuridad, por decirlo así, haciendo que las cosas parezcan más oscuras (como cuando reproduce un video con una escena nocturna, que no tiene nada que ver con la claridad de la pantalla, sino con píxeles que enmascaran la luz de fondo). La ligereza es exactamente la misma, desperdiciando aún más batería que antes debido a que los píxeles ahora son más oscuros.
Mephisto el
2
Gracias, me salvó el día y los ojos también .. :)
Shylendra Madda
77
Simula el brillo. El brillo no cambia, es procesado por software.
user1970939
110

Lo siguiente funciona para mí:

echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness

Supongo que el valor máximo posible está en el /sys/class/backlight/intel_backlight/max_brightnessarchivo.

Reemplace intel_backlightcon un asterisco para aplicar a todas las luces de fondo.

palacsint
fuente
16
@Ray Prueba esto: echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness.
Mygod
10
@Ray cuando haces la sudo echo 400 > /sys/class . .. ./brightnessredirección se hace por shell, no por eco. Y Shell todavía se ejecuta como su usuario habitual, no como sudo. Es por eso que da permiso denegado. Debe tener una utilidad que escriba en el archivo con permisos de root, por eso teefunciona.
Sergiy Kolodyazhnyy
44
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnesspara APUs y tarjetas radeon
Suici Doga
13
Esto es ridículamente bajo, pero de hecho parece ser lo único que funciona de manera confiable. Se vuelve un poco menos feo si usa sudo chmod 0646el brightnessarchivo, por sudolo que ya no es necesario para configurar el brillo.
Leftaroundabout
77
La razón por la que esto se configura con permisos su es que un virus podría hacer que su pantalla se oscurezca y se ilumine a una velocidad increíble, lo que finalmente dañaría su pantalla de hardware. En los años 90, encontré un virus que ajustaba la actualización de la pantalla Hertz tan rápidamente que su monitor se freía. Así que tenga cuidado al ajustar los permisos sobre esto.
RyanNerd
12

Para laptops,

sudo setpci -s 00:02.0 F4.B=80

Cambie 80por [0-FF]para obtener el brillo más bajo-más alto. El valor especificado está en hexadecimal, por lo que 80le dará un 50%brillo máximo.

Para que los equipos de escritorio realicen una corrección gamma (que yo no haya probado),

xgamma -gamma .75
Gaurav Gandhi
fuente
Gracias por su respuesta, pero lo que necesito es algo como setpci: aumente 10 para aumentar el brillo en un 10 por ciento. ¿Eso también es posible?
user69748
gracias por esta respuesta, es bueno saber cómo se hacen las cosas en los niveles inferiores
erjoalgo
1
Esta fue la única respuesta que funcionó para mí en un Samsung NB30 Plus.
OSE
Parece que no puedo hacer que esto funcione. ¿Debería cambiar algunos parámetros, tal vez, y si es así, cómo encuentro los valores apropiados?
Rasmus
Gracias, estoy en una computadora portátil, setpcino funcionó, pero lo xgammahice.
Philip Kirkbride
5

Usando DBus con Gnome

Los pasos de brillo para el control del teclado también se pueden implementar con este método.

# Step up:
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepUp

# Step down:
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepDown

Notas

Pablo A
fuente
+1 confirma que esto funciona muy bien en la pantalla LCD interna. No afecta a monitores externos ya controlados con xrandrscripts de gamma y brillo.
WinEunuuchs2Unix
4

Prueba esto en la terminal:

xrandr --output LVDS1 --brightness 0.9

Puede cambiar el último valor a su gusto, por ejemplo. 0.2 0.2

ripu
fuente
1
1) La salida no siempre es LVDS1, pero el usuario puede averiguarlo con xrandr --verbose 2) No cambia la intensidad de la luz de fondo
erjoalgo
4

Haz este script:

set-brightness.sh

#!/bin/bash
TARGET="acpi_video0"
cd /sys/class/backlight
MAX="$(cat "${TARGET}/max_brightness")"
# The `/1` at the end forced bc to cast the result 
# to an integer, even if $1 is a float (which it 
# should be)
LOGIC="$(echo "($1 * ${MAX})/1" | bc)"
for i in */; do
    if [[ "${TARGET}/" != "$i" && -e "${i}brightness" ]]; then
        cat "${i}max_brightness" > "${i}brightness"
    fi
done
echo "$LOGIC" > "${TARGET}/brightness"

Ejecútelo como root, con cualquier valor entre 0 y 1.

sudo ./set-brightness.sh 0.5
  • Si su sistema no tiene un /sys/class/backlight/acpi_video0, debe haber al menos un directorio allí, que puede ser específico del dispositivo (también tengo un radeon_bl0, por ejemplo).
  • Si tiene otros, tenga en cuenta su pila de valores (de ahí el ciclo; empuje todos los demás valores a 1.0, luego establezca el objetivo en la cantidad deseada).
  • Si bien siempre acpi_video0 debería funcionar, no siempre tiene la gama completa de brillos físicos disponibles. Pruebe cada uno y use el que tenga la mayor gama como su "OBJETIVO"
Fordi
fuente
2
Considere usar en /sys/class/backlight/*/brightnesslugar de intentar codificar acpi_video0en el script. Permitirá generalizar la ruta al archivo, que puede ser diferente; por ejemplo intel_backlight, no acpi_video0. Eso es lo que he usado en mi script aquí
Sergiy Kolodyazhnyy el
3

Como dijo @palacsint, el echo 244 > /sys/class/backlight/intel_backlight/brightnesscamino funciona para mí.

Pero los valores máximo y mínimo se reenvían en /sys/class/backlight/intel_backlight/max_brightnessy /sys/class/backlight/intel_backlight/bl_powerarchivos respectivamente.

Además, el brillo real que está ejecutando su computadora ahora está presente en /sys/class/backlight/intel_backlight/actual_brightness

usuario281989
fuente
3

KDE 4.12:

qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl setBrightness 55

Versión de plasma KDE: 5.14.3:

El código anterior sigue siendo válido. Solo funcionará si eres un usuario de KDE. Sin embargo, en ese caso no requerirá ninguna pieza de software adicional. Tendrá exactamente el mismo comportamiento que cuando usa el widget "batería y brillo". AFAIK cambia la luz de fondo física, en contraste con lo xrandrque no hace.

Tenga en cuenta que el 55 anterior no es una fracción de 100, siendo este último el brillo máximo. En cambio, está relacionado con max_brightness:

qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl brightnessMax

También hay una versión "silenciosa" que puede preferir en un script:

qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl setBrightnessSilent 2000

Refs: qdbus , sólido , brillo

int_ua
fuente
¿Puedes explicar qué hará?
rɑːdʒɑ
2

Aquí hay una línea corta que puede ayudarlo a relajar los ojos. Simplemente crea un crontaab con la línea o crea un script

xrandr --output VGA1 --brightness 0.5; sleep 20; xrandr --output VGA1 --brightness 1
Cristianpark
fuente
2

Utilizando las respuestas anteriores, creé este script (guardado en mi directorio de inicio como brillo.sh) para modificar el brillo de la pantalla (ya que el teclado de la computadora portátil sufrió un problema de té derramado y quedó inutilizable). Siéntase libre de usarlo (si tiene los archivos designados ... de lo contrario será necesario retocar para señalar su variación de ellos).

#!/bin/bash
function main_menu
{
    sudo clear
    cursetting=$(cat /sys/class/backlight/intel_backlight/brightness)
    maxsetting=$(cat /sys/class/backlight/intel_backlight/max_brightness)
    powersave=$((maxsetting/5))
    conservative=$((powersave*2))
    medium=$((powersave*3))
    performance=$((powersave*4))
    echo ""
    echo "----------------------- Brightness -----------------------"
    echo " 1. Set Display to Minimum (Powersave) brightness setting."
    echo " 2. Set Display to Low (Conservative) brightness setting."
    echo " 3. Set Display to Medium brightness setting."
    echo " 4. Set Display to High (Performance) brightness setting."
    echo " 5. Set Display to Maximum brightness setting."
    echo " 6. Exit."
    echo "----------------------------------------------------------"
    if [ $cursetting -eq $powersave ]; then
     cursetting='Minimum'
    else
     if [ $cursetting -eq $conservative ]; then
      cursetting='Conservative'
     else
      if [ $cursetting -eq $medium ]; then
       cursetting='Medium'
      else
       if [ $cursetting -eq $performance ]; then
        cursetting='Performance'
       else
        if [ $cursetting -eq $maxsetting ]; then
         cursetting='Maximum'
        fi
       fi
      fi
     fi
    fi
    echo "        Current Display Setting - "$cursetting;
    choice=7
    echo ""
    echo -e "Please enter your choice: \c"
}

function press_enter
{
    echo ""
    echo -n "Press Enter to continue."
    read
    main_menu
}

main_menu
while [ $choice -eq 7 ]; do
read choice

if [ $choice -eq 1 ]; then
 echo $powersave | sudo tee /sys/class/backlight/intel_backlight/brightness
 main_menu
else
 if [ $choice -eq 2 ]; then
  echo $conservative | sudo tee /sys/class/backlight/intel_backlight/brightness
  main_menu
 else
  if [ $choice -eq 3 ]; then
   echo $medium | sudo tee /sys/class/backlight/intel_backlight/brightness
   main_menu
  else
   if [ $choice -eq 4 ]; then
    echo $performance | sudo tee /sys/class/backlight/intel_backlight/brightness
    main_menu
   else
    if [ $choice -eq 5 ]; then
     echo $maxsetting | sudo tee /sys/class/backlight/intel_backlight/brightness
     main_menu
    else
     if [ $choice -eq 6 ]; then
      exit;
     else
      echo -e "Please enter the NUMBER of your choice: \c"
      choice = 7
     fi
    fi
   fi
  fi
 fi
fi
done
Aaron Nichols
fuente
Podría hacerlo mejor que simplemente anidar muchas condiciones, como elifo incluso mejores case. También sugiero leer una guía de estilo como google.github.io/styleguide/shell.xml y probar un linter como shellcheck, ya que te ayuda a crear un mejor código. Desearía que alguien me dijera esto cuando comencé a hacer scripts hace años. :)
LiveWireBT
1

ddccontrol es otra opción para controlar la retroiluminación de monitores externos. Aquí puedo configurar la luz de fondo de mi monitor externo al 50% de su potencia con:

ddccontrol -p -r 0x10 -w 50

Busqué posibles soluciones para este problema para mejorar la forma en que Redshift maneja los cambios de brillo . Allí descubrí que hay un parche para el kernel de Linux para mejorar la compatibilidad entre dispositivos, de modo que las computadoras portátiles y las pantallas externas puedan funcionar de manera similar sysfs.

Mientras tanto, ddccontrol es lo único que me funciona aquí. Como de costumbre, el wiki de Arch también tiene una buena documentación general sobre el tema.

anarcat
fuente
0

IU interactiva similar a ncurses usando xbacklight

Las maldiciones de un hombre pobre. Golpea hy baja un 10%, golpea ly sube un 10%. Luego muestra la luminosidad actual.

xback() (
  done=false;
  echo "less: h, more: l, quit: q"
  while ! $done; do
    read -rsn1 key
    if [ "$key" = h ]; then
      xbacklight -dec 10
    elif [ "$key" = l ]; then
      xbacklight -inc 10
    elif [ "$key" = q ]; then
      done=true
    fi
    printf "\r$(xbacklight -get) "
  done
)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente
0

Para establecer el brillo absoluto (para usuarios de computadoras portátiles):

BRIGHTNESS=50 # 0 to 100

dbus-send \
--session \
--type=method_call \
--dest="org.gnome.SettingsDaemon.Power" \
/org/gnome/SettingsDaemon/Power \
org.freedesktop.DBus.Properties.Set \
string:"org.gnome.SettingsDaemon.Power.Screen" \
string:"Brightness" \
variant:int32:$BRIGHTNESS
nvd
fuente