Como alterar o brilho do LCD na linha de comando (ou via script)?


162

Para contornar o bug # 1005495 (não é possível alterar o brilho do LCD via teclas de atalho), gostaria de ter uma consulta na linha de comando para aumentar e outra para reduzir o brilho do meu LCD. Eu poderia mapear uma tecla de atalho para cada uma dessas consultas.

O problema é: não sei como aumentar e reduzir o brilho do LCD na linha de comando. Você?



2
Obrigado, Lekensteyn, mas não é uma duplicata desde lsmod | grep ^ i915 não fornece saída (consulte a solução aceita). Ainda procurando por uma solução.
user69748

Respostas:


157

Mais uma maneira de fazer isso é com outro novo programa chamado xbacklight, abra seu terminal e digite este

sudo apt-get install xbacklight

então digite isso xbacklight -set 50

lá 50 significa faixa de brilho, podemos obter até 100 a partir de 0.

você também pode aumentar e diminuir o brilho do valor presente para o nível especificado. como você mencionou, se deseja aumentar para 10% o valor atual do brilho, pode fornecer

xbacklight -inc 10

e para diminuir 10% você pode dar isso

xbacklight -dec 10 

Aviso : xbacklightfunciona apenas com a Intel, não corretamente na Radeon e nem com driver de configuração de modo ( fonte ).


Parece um comando realmente simples, mas o que eu precisaria é algo como xbacklight -crease 10 para aumentar o brilho em 10%. Isso também é possível?
user69748

1
Sim você pode. Eu já mencionei isso. para que você possa obtê-lo por xbacklight -inc 10
#

1
Ok, agora está na sua resposta. Muito obrigado, vou tentar isso.
user69748

34
Isso realmente parece simples, mas infelizmente não funciona para mim. O brilho simplesmente não muda, nem com -dec nem com -set. Acho que terei que esperar que o bug seja corrigido em breve. Obrigado, no entanto.
user69748

2
Além disso, existe uma abreviação que você pode usar: xbacklight +10; xbacklight -10; xbacklight =50;
Fordi 9/16

149

Abra seu terminal e digite este

xrandr -q | grep " connected"

isso lhe dará a saída como

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

Lá LVDS1 representa o seu monitor. Então agora você tem que fazer o seguinte

xrandr --output LVDS1 --brightness 0.5

lá 0,5 significa nível de brilho e varia de 0,0 a 1,0. 0.0 -> Preto total. Então você precisa escolher o valor necessário do brilho.

Isso não altera o brilho no nível do hardware . Do randrmanual :

--brightness brightnessMultiplique os valores de gama no crtc atualmente conectado à saída para o valor flutuante especificado. Útil para saídas muito brilhantes ou muito fracas. No entanto, essa é apenas uma modificação de software ; se o seu hardware tiver suporte para alterar o brilho, você provavelmente preferirá usar o xbacklight.


2
Obrigado pela resposta, mas o que eu precisaria é algo como xrandr - aumentará 10 para aumentar o brilho em 10%. Isso também é possível?
user69748

48
este não parece alterar o brilho a um nível de hardware
erjoalgo

12
Pena que esta resposta tenha tantos votos. A tela do meu laptop "emula" a escuridão, por assim dizer, fazendo as coisas parecerem mais escuras (como quando você reproduz um vídeo com uma cena noturna, isso não tem nada a ver com a luminosidade da tela, mas com pixels mascarando a luz de fundo). A luminosidade é exatamente a mesma, desperdiçando ainda mais bateria do que antes por causa dos pixels do que agora são mais escuros.
Mephisto

2
Thanx ele salvou meu dia e olhos também .. :)
Shylendra Madda

7
Isso finge o brilho. O brilho não muda, é renderizado pelo software.
precisa saber é o seguinte

110

O seguinte funciona para mim:

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

Eu acho que o valor máximo possível está no /sys/class/backlight/intel_backlight/max_brightnessarquivo.

Substitua intel_backlightpor um asterisco para aplicar a todas as luzes de fundo.


16
@Ray Tente isto: echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness.
28515 Mygod

10
@Ray quando você faz o sudo echo 400 > /sys/class . .. ./brightnessredirecionamento é feito pelo shell, não pelo eco. E o shell ainda roda como seu usuário comum, não como sudo. É por isso que dá permissão negada. Você precisa de um utilitário que grave em um arquivo com permissões de root, e é por isso que teefunciona.
Sergiy Kolodyazhnyy 9/0316

4
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnesspara APUs e placas Radeon
Suici Doga

13
Isso é ridiculamente baixo, mas na verdade parece ser a única coisa que funciona de maneira confiável. Ele fica um pouco menos feio se sudo chmod 0646o brightnessarquivo, por isso sudonão é necessário para o ajuste do brilho mais.
leftaroundabout

7
A razão pela qual isso é definido com permissões su é que um vírus pode tornar sua tela fraca e brilhar a uma velocidade incrível, danificando sua tela de hardware. Nos anos 90, encontrei um vírus que ajustaria a atualização da tela do Hertz tão rapidamente que seu monitor fritaria. Portanto, tenha cuidado ao ajustar as permissões.
RyanNerd

12

Para laptops,

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

Mudar 80por [0-FF]obter mais baixo de mais alto brilho. O valor especificado está em hexadecimal e, portanto 80, fornece um 50%brilho máximo.

Para os desktops fazerem uma correção gama (não testada por mim),

xgamma -gamma .75

Obrigado pela resposta, mas o que eu precisaria é de algo como setpci - aumento de 10 para aumentar o brilho em 10%. Isso também é possível?
user69748

obrigado por esta resposta, é bom saber como as coisas são feitas nos níveis mais baixos
erjoalgo

1
Esta foi a única resposta que funcionou para mim em um Samsung NB30 Plus.
OSE

Parece que não consigo fazer isso funcionar. Devo alterar alguns parâmetros, talvez, e se sim, como encontro os valores apropriados?
Rasmus

Obrigado, estou em um laptop, setpcinão funcionou, mas xgammafuncionou.
Philip Kirkbride

5

Usando DBus com Gnome

Etapas no brilho do controle do teclado também podem ser implementadas com esse 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


+1 confirma que isso funciona muito bem no visor LCD interno. Não afeta monitores externos já controlados com xrandrscripts de gama e brilho.
WinEunuuchs2Unix 6/04

4

Tente isso no terminal:

xrandr --output LVDS1 --brightness 0.9

Você pode alterar o último valor como desejar, por exemplo. 0,2


1
1) saída nem sempre é LVDS1, mas o usuário pode descobrir com xrandr --verbose 2) Não altera a intensidade da luz de fundo
erjoalgo

4

Faça 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"

Execute-o como root, com qualquer valor entre 0 e 1.

sudo ./set-brightness.sh 0.5
  • Se o seu sistema não tiver um /sys/class/backlight/acpi_video0, deve haver pelo menos um diretório, que pode ser específico do dispositivo (eu também tenho um radeon_bl0, por exemplo).
  • Se você tiver outras pessoas, lembre-se de que a pilha de valores delas (daí o loop; pressiona todos os outros valores para 1,0 e, em seguida, define o alvo na quantidade desejada).
  • Embora sempre acpi_video0 deva funcionar, nem sempre há toda a gama de brilhos físicos disponíveis. Experimente cada um e use aquele com a maior gama como seu "TARGET"

2
Considere usar em /sys/class/backlight/*/brightnessvez de tentar codificar acpi_video0no script. Isso permitirá generalizar o caminho para o arquivo, que pode ser diferente - por exemplo intel_backlight, eu não acpi_video0. Isso é o que eu usei no meu script aqui #
Sergiy Kolodyazhnyy

3

Como o @palacsint disse, o echo 244 > /sys/class/backlight/intel_backlight/brightnesscaminho funciona para mim.

Mas os valores max e min são reenviados /sys/class/backlight/intel_backlight/max_brightnesse /sys/class/backlight/intel_backlight/bl_powerarquivos, respectivamente.

Além disso, o brilho real que seu computador está executando agora está presente em /sys/class/backlight/intel_backlight/actual_brightness


3

KDE 4.12:

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

Versão de plasma do KDE: 5.14.3:

O código acima ainda é válido. Só funcionará se você for um usuário do KDE. No entanto, nesse caso, não será necessário nenhum software adicional. Ele terá exatamente o mesmo comportamento que ao usar o widget "bateria e brilho". AFAIK altera a luz de fundo física, em contraste com o xrandrque não.

Lembre-se de que os 55 acima não são uma fração de 100, sendo o último o brilho máximo. Em vez disso, está relacionado ao max_brightness:

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

Há também uma versão "silenciosa" que você pode preferir em um script:

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

Refs: qdbus , sólido , brilho


você pode explicar o que isso fará?
rɑːdʒɑ

2

Aqui está uma pequena linha que pode ajudá-lo a relaxar os olhos. Basta criar um crontaab com a linha ou criar um script

xrandr --output VGA1 --brightness 0.5; sleep 20; xrandr --output VGA1 --brightness 1

2

Usando as respostas acima, criei esse script (salvo no meu diretório pessoal como brightness.sh) para modificar o brilho da tela (como o teclado do laptop sofreu um problema de chá derramado e se tornou inutilizável). Sinta-se livre para usá-lo (se você tiver os arquivos designados ... caso contrário, será necessário mexer para apontar para a sua variação deles).

#!/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

Você poderia fazer melhor do que apenas aninhar várias condições, como elifou até melhor case. Também sugiro a leitura de um guia de estilo como google.github.io/styleguide/shell.xml e a tentativa de um linter como o shellcheck, pois ajuda a criar um código melhor. Eu gostaria que alguém me dissesse isso quando comecei a escrever anos atrás. :)
LiveWireBT

1

O ddccontrol é outra opção para controlar a luz de fundo de monitores externos. Aqui eu posso definir a luz de fundo do meu monitor externo para 50% de sua potência com:

ddccontrol -p -r 0x10 -w 50

Procurei possíveis soluções para esse problema para melhorar a maneira como o Redshift lida com as alterações de brilho . Por lá, descobri que existe um conjunto de patches para o kernel do Linux melhorar a compatibilidade entre dispositivos, para que laptops e telas externas funcionem da mesma maneira sysfs.

Enquanto isso, ddccontrol é a única coisa que funciona para mim aqui. Como sempre, o wiki do Arch também possui uma boa documentação geral sobre o assunto.


0

UI interativa semelhante a ncurses usando xbacklight

O pobre homem amaldiçoa. Bata he desce 10%, acerta le sobe 10%. Em seguida, mostre a luminosidade atual.

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
)

0

Para definir o brilho absoluto (para usuários de laptop):

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.