Bash-Skript

Bash-Skript

Ich habe also ein Alienware 13 R3 mit OLED-Display und konnte zum ersten Mal die Helligkeit mit dem Befehl xrandr ändern. Das Problem war, dass OLED-Displays keine Hintergrundbeleuchtung haben, sodass ich die Helligkeit weder mit der Tastatur noch auf andere Weise ändern konnte. Nachdem ich nun weiß, dass ich sie ändern kann, möchte ich eine Tastenkombination festlegen, um die Helligkeit um beispielsweise 0,1 zu ändern. Ich habe diesen Befehl verwendet, um die Helligkeit zu ändern:

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

Weiß jemand, welchen Befehl ich verwenden muss, um die Helligkeit nicht einzustellen, sondern um sie um einen bestimmten Wert zu erhöhen oder zu verringern, damit ich ein Makro daran binden kann? Vielen Dank im Voraus!

PS: Ich bin ein völliger Linux-Neuling, also seid bitte nicht zu streng mit mir :P

Antwort1

Kopieren Sie das folgende Bash-Skript in eine Datei namensbright

Markieren Sie es dann als ausführbar mitchmod a+x bright

Bash-Skript

#!/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 )
  • Ändern Sie MON="DP-1-1"den Namen Ihres Monitors, d. h.MON="HDMI-1"
  • Ermitteln Sie Ihre Monitornamen mitxrandr | grep " connected"
  • Änderung STEP=5Ihres Schrittwertes, zB STEP=2ist weniger auffällig

Rufen Sie das Skript auf mit:

  • bright Upoder bright +um die Helligkeit schrittweise zu erhöhen
  • bright Downoder bright -zur schrittweisen Verringerung der Helligkeit
  • bright(ohne Parameter), um die aktuelle Helligkeitsstufe abzurufen

Hoffentlich können die Bash-/Shell-Befehle zu Informationszwecken leicht gegoogelt werden. Wenn Sie jedoch Fragen haben, zögern Sie nicht, sie zu stellen :)

8 Minuten nach dem Posten der Antwort fiel mir ein, dass ich sie bcfür die Fließkomma-Mathematik hätte verwenden können und so ~10 Zeilen Code und eine Menge Zeit hätte einsparen können, die ich sonst für das Schreiben der 1,5 Stunden gebraucht hätte.zuckt mit den Schultern.

verwandte Informationen