¿Cómo configuro el brillo cero en computadoras portátiles que tienen un brillo mínimo distinto de cero en el control de brillo?
La solución debería funcionar independientemente de XIe, también debería funcionar en las terminales virtuales.
Respuesta1
En el ámbito de las computadoras portátiles con chipsets Intel, parece haber una división entre los paneles conectados LVDS y eDP:
eDP:
echo 4 > /sys/class/backlight/intel_backlight/bl_power
…debe apagar la luz de fondo.
echo 0 > /sys/class/backlight/intel_backlight/bl_power
…debería encenderlo nuevamente.
LVDS:
Descubrí que no es posible apagar la luz de fondo de mis tabletas Thinkpad X201 y X201 a través de sysfs (bl_power no hace nada; aparentemente, es específico de eDP).
Esta páginatiene una descripción muy extensa de la complicada historia del control de retroiluminación en el kernel de Linux. TL;DR:
i915 ha admitido bl_power para paneles eDP (pero no LVDS) a partir de v3.18.
SIN EMBARGO,He podido apagar la luz de fondo usando una herramienta llamada intel_backlight
desdeherramientas-intel-gpu. Esto requiere root, ya que aparentemente escribe en un registro sin formato.
intel_backlight 0
...me apagó la luz de fondo. Aumentarlo con controles de ajuste de brillo lo volvió a habilitar aquí.
También escribí un script que conecté para activar un evento ACPI generado por el teclado (en mi caso, fn+espacio o button/zoom
. Si su sistema no usa ese evento ACPI, necesita usar acpi_listen para encontrar uno que su el sistema sí tiene.
Para activarlo, creé un archivo fnspace-backlight
llamado /etc/acpi/events
:
# Wyatt Ward
# hook for magnify acpi event (fn+space)
# toggle LCD backlight on/off
event=button/zoom
action=/etc/acpi/actions/toggle-lcd-light.sh
También hice un archivo llamado /etc/acpi/actions/toggle-lcd-light.sh
, marcado como ejecutable. Esto me permite alternar la luz de fondo sin cambiar el nivel de brillo establecido previamente, almacenando el valor temporal en formato /brightness
. Dado que los eventos ACPI ejecutan acciones como root, tenga cuidado.
#! /bin/bash
BRIGHTSAVEFILE="/brightness"
BRIGHTSYSFS="/sys/class/backlight/acpi_video0/brightness"
# is the light on or off?
INTEL_BACKLIGHT="/usr/bin/intel_backlight"
light_state=$("$INTEL_BACKLIGHT" | sed 's/current backlight value: //g'|sed 's/%//g')
echo "light: ""$light_state"
if [ "$light_state" -eq 0 ]; then
cat "$BRIGHTSAVEFILE" > "$BRIGHTSYSFS"
else
# back up current brightness level
cat "$BRIGHTSYSFS" > "$BRIGHTSAVEFILE"
# turn off backlight
"$INTEL_BACKLIGHT" 0
fi
Como nota adicional divertida, puedes controlar la luz de fondo con una increíble cantidad de granularidad modificando ligeramente intel_backlight. Cambiarlo para leer argumentos como números de punto flotante en lugar de enteros, y para hacer aritmética de punto flotante, solo requiere ajustar unas pocas líneas de código y le permite realizar cambios de brillo ridículamente precisos, incluidos aquellos inferiores al mínimo que puede obtener a través de sysfs.
Respuesta2
Desde X-Windows
Desde X Windows puede utilizar la aplicación xbacklight
para obtener y configurar el porcentaje de brillo de su pantalla.
Ejemplo
nivel actual
$ xbacklight -get
100.000000
establecido en 75%
$ xbacklight -set 75
$ xbacklight -get
73.333333
volver al 100%
$ xbacklight -set 100
$ xbacklight -get
100.000000
Desde la consola
Para lograr algo similar para una terminal virtual, probablemente necesitará interactuar con la configuración ACPI a través del /sys
sistema de archivos.
Ejemplo
lo atenúa
$ echo "10" | sudo tee /sys/class/backlight/acpi_video0/brightness
10
brillo total
$ echo "15" | sudo tee /sys/class/backlight/acpi_video0/brightness
15
Tendrás que jugar con este, el rango de brillo puede ser de 0-9 o 0-15, creo que en última instancia depende de tu computadora portátil.
¿Nada de esto funciona?
Si ninguna de estas 2 opciones satisface sus necesidades, eche un vistazo al tema de ArchLinux Wiki titulado:Iluminar desde el fondo. ¡Ese artículo contiene todos los métodos que he visto empleados para lograrlo!