Script Bash

Script Bash

Portanto, tenho um Alienware 13 R3 com tela OLED e, pela primeira vez, consegui alterar o brilho usando o comando xrandr. O problema era a ausência de luz de fundo nos displays OLED, então não consegui alterar o brilho com o teclado, ou de qualquer outra forma. Então, agora que sei que posso alterá-lo, quero colocar uma tecla para alterar o brilho, digamos, 0,1. Usei este comando para alterar o brilho:

xrandr --output eDP-1-1 --brightness .5

Alguém sabe qual comando usar não para definir o brilho, mas para aumentá-lo ou diminuí-lo em algum valor, para que eu possa vincular uma macro a ele. Desde já, obrigado!

PS: Sou completamente novo no Linux, então, por favor, não seja duro comigo: P

Responder1

Copie o script bash abaixo para um arquivo chamadobright

Em seguida, marque-o como executável comchmod a+x bright

Script Bash

#!/bin/bash

MON="DP-1-1"    # Discover monitor name with: xrandr | grep " connected"
STEP=5          # Step Up/Down brightnes by: 5 = ".05", 10 = ".10", etc.

CurrBright=$( xrandr --verbose --current | grep ^"$MON" -A5 | tail -n1 )
CurrBright="${CurrBright##* }"  # Get brightness level with decimal place

Left=${CurrBright%%"."*}        # Extract left of decimal point
Right=${CurrBright#*"."}        # Extract right of decimal point

MathBright="0"
[[ "$Left" != 0 && "$STEP" -lt 10 ]] && STEP=10     # > 1.0, only .1 works
[[ "$Left" != 0 ]] && MathBright="$Left"00          # 1.0 becomes "100"
[[ "${#Right}" -eq 1 ]] && Right="$Right"0          # 0.5 becomes "50"
MathBright=$(( MathBright + Right ))

[[ "$1" == "Up" || "$1" == "+" ]] && MathBright=$(( MathBright + STEP ))
[[ "$1" == "Down" || "$1" == "-" ]] && MathBright=$(( MathBright - STEP ))
[[ "${MathBright:0:1}" == "-" ]] && MathBright=0    # Negative not allowed
[[ "$MathBright" -gt 999  ]] && MathBright=999      # Can't go over 9.99

if [[ "${#MathBright}" -eq 3 ]] ; then
    MathBright="$MathBright"000         # Pad with lots of zeros
    CurrBright="${MathBright:0:1}.${MathBright:1:2}"
else
    MathBright="$MathBright"000         # Pad with lots of zeros
    CurrBright=".${MathBright:0:2}"
fi

xrandr --output "$MON" --brightness "$CurrBright"   # Set new brightness

# Display current brightness
printf "Monitor $MON "
echo $( xrandr --verbose --current | grep ^"$MON" -A5 | tail -n1 )
  • Mude MON="DP-1-1"para o nome do seu monitor, ou sejaMON="HDMI-1"
  • Descubra os nomes dos seus monitores usandoxrandr | grep " connected"
  • Mude STEP=5para o valor do seu passo, por exemplo, STEP=2é menos perceptível

Chame o script com:

  • bright Upou bright +para aumentar o brilho por valor passo a passo
  • bright Downou bright -para diminuir o brilho por valor de passo
  • bright(sem parâmetros) para obter o nível de brilho atual

Esperamos que os comandos bash/shell possam ser facilmente pesquisados ​​no Google para educação, mas se tiver alguma dúvida, não hesite em perguntar :)

8 minutos depois de postar a resposta, ocorreu-me que eu poderia ter usado bcmatemática de ponto flutuante e economizado cerca de 10 linhas de código e muito tempo de 1,5 horas para escrevê-loencolhe os ombros.

informação relacionada