Como desligo a luz de fundo, mas deixo o LCD ligado?

Como desligo a luz de fundo, mas deixo o LCD ligado?

Como defino brilho zero em laptops que possuem brilho mínimo diferente de zero no controle de brilho?

A solução deve funcionar independentemente do XIe e também deve funcionar nos terminais virtuais.

Responder1

No mundo dos laptops com chipsets Intel, parece haver uma divisão entre os painéis conectados LVDS e eDP:

eDP:

echo 4 > /sys/class/backlight/intel_backlight/bl_power

…deve desligar a luz de fundo.

echo 0 > /sys/class/backlight/intel_backlight/bl_power

deve ligá-lo novamente.

LVDS:

Descobri que não é possível desligar a luz de fundo dos meus tablets Thinkpad X201 e X201 via sysfs (bl_power não faz nada; aparentemente, é específico do eDP).

Esta páginatem uma descrição muito extensa da complicada história do controle de luz de fundo no kernel do Linux. DR:

i915 oferece suporte a bl_power para painéis eDP (mas não LVDS) a partir da v3.18.

NO ENTANTO,Consegui desligar a luz de fundo usando uma ferramenta chamada intel_backlightdeferramentas intel-gpu. Isso requer root, pois aparentemente grava em um registro bruto.

intel_backlight 0

...desligou a luz de fundo para mim. Aumentar os controles de ajuste de brilho o reativou aqui.

Também escrevi um script que conectei para disparar em um evento ACPI gerado pelo teclado (no meu caso, fn+space ou button/zoom. Se o seu sistema não usa esse evento ACPI, você precisa usar acpi_listen para encontrar um que seu sistema tem.

Para acioná-lo, criei um arquivo fnspace-backlightchamado /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

Também criei um arquivo chamado /etc/acpi/actions/toggle-lcd-light.sh, marcado como executável. Isso me permite alternar a luz de fundo sem alterar o nível de brilho definido anteriormente, armazenando o valor temporário em formato /brightness. Como os eventos ACPI executam ações como root, tome 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

Além de uma observação divertida adicional, você pode controlar a luz de fundo com uma quantidade incrível de granularidade modificando ligeiramente o intel_backlight. Alterá-lo para ler argumentos como números de ponto flutuante em vez de números inteiros, e para fazer aritmética de ponto flutuante, requer apenas ajustes de algumas linhas de código e permite fazer alterações de brilho ridiculamente precisas, incluindo aquelas abaixo do mínimo que você pode obter via sysfs.

Responder2

Do X Windows

No X Windows você pode usar o aplicativo xbacklightpara obter e definir a porcentagem de brilho da tela.

Exemplo

nível atual

$ xbacklight -get
100.000000

definido para 75%

$ xbacklight -set 75
$ xbacklight -get
73.333333

voltar para 100%

$ xbacklight -set 100
$ xbacklight -get
100.000000

Da consola

Para conseguir algo semelhante para um terminal virtual, você provavelmente precisará interagir com as configurações da ACPI por meio do /syssistema de arquivos.

Exemplo

escurece

$ echo "10" | sudo tee /sys/class/backlight/acpi_video0/brightness 
10

brilho total

$ echo "15" | sudo tee /sys/class/backlight/acpi_video0/brightness 
15

Você terá que brincar com este, a faixa de brilho pode ser de 0-9 ou 0-15, acredito que depende do seu laptop.

Nada disso funciona?

Se nenhuma dessas 2 opções atender às suas necessidades, dê uma olhada no tópico do ArchLinux Wiki intitulado:Luz de fundo. Esse artigo contém todos os métodos que já vi empregados para conseguir isso!

Referências

informação relacionada