Bash スクリプト

Bash スクリプト

私は OLED ディスプレイ付きの Alienware 13 R3 を持っていて、初めて xrandr コマンドを使用して明るさを変更できました。問題は OLED ディスプレイにバックライトがないため、キーボードや他の方法で明るさを変更できなかったことです。変更できることがわかったので、明るさを 0.1 ずつ変更するキー バインディングを設定します。明るさを変更するために次のコマンドを使用しました。

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

明るさを設定するのではなく、ある値で明るさを増減してマクロをバインドするために使用するコマンドを知っている人はいますか。よろしくお願いします。

PS 私は Linux 初心者なので、あまり厳しくしないでください :P

答え1

以下のbashスクリプトを次のファイルにコピーします。bright

次に、実行可能としてマークしますchmod a+x bright

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 )
  • MON="DP-1-1"モニター名に変更します。MON="HDMI-1"
  • モニター名を確認するにはxrandr | grep " connected"
  • STEP=5ステップ値の変更はSTEP=2目立たなくなります

次のようにスクリプトを呼び出します。

  • bright Upまたはbright +明るさを段階的に上げる
  • bright Downまたはbright -明るさを段階的に下げる
  • bright(パラメータなし)現在の明るさレベルを取得する

bash / shell コマンドは簡単に Google で検索できるので、ぜひ学習してください。質問があれば遠慮なくお尋ねください :)

bc回答を投稿してから8分後、浮動小数点演算に使用して、約10行のコードと、それを書くのにかかった1.5時間から多くの時間を節約できたことに気付きました。肩をすくめる

関連情報