Guión de bash

Guión de bash

Tengo un Alienware 13 R3 con pantalla OLED y por primera vez pude cambiar el brillo usando el comando xrandr. El problema era la ausencia de luz de fondo en las pantallas OLED, por lo que no podía cambiar el brillo ni con el teclado ni de ninguna otra manera. Ahora que sé que puedo cambiarlo, quiero poner una combinación de teclas para cambiar el brillo, digamos 0,1. Usé este comando para cambiar el brillo:

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

¿Alguien sabe qué comando usar no para establecer el brillo, sino para aumentarlo o disminuirlo en algún valor, para poder vincularle una macro? ¡Gracias de antemano!

PD: Soy completamente nuevo en Linux, así que no seas duro conmigo :P

Respuesta1

Copie el script bash a continuación en un archivo llamadobright

Luego márcalo como ejecutable conchmod a+x bright

Guión de 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 )
  • Cambie MON="DP-1-1"el nombre de su monitor, es decirMON="HDMI-1"
  • Descubra los nombres de sus monitores usandoxrandr | grep " connected"
  • Cambie STEP=5su valor de paso, por ejemplo, STEP=2es menos perceptible

Llame al guión con:

  • bright Upo bright +para aumentar el brillo por valor de paso
  • bright Downo bright -para disminuir el brillo por valor de paso
  • bright(sin parámetros) para obtener el nivel de brillo actual

Con suerte, los comandos bash/shell se pueden buscar fácilmente en Google con fines educativos, pero si tiene alguna pregunta, no dude en preguntar :)

8 minutos después de publicar la respuesta, se me ocurrió que podría haberlo usado bcpara matemáticas de punto flotante y haber guardado ~10 líneas de código y mucho tiempo de las 1,5 horas para escribirlo.se encoge de hombros.

información relacionada