xrandr --verbose
現在の明るさを取得するために使用されるモニターの明るさを調整するbashスクリプトがあります。ここに示すようにうまく動作しますが、xrandr
私のコンピュータで使用するのは少し遅いです。
[PROMPT REDACTED]$ time xrandr --verbose
# xrandr output omitted for brevity
real 0m0.976s
user 0m0.003s
sys 0m0.002s
ほぼ1秒かかることに加えて、不要な多くの情報が出力されます。実際に必要な出力行は次のとおりですBrightness: X
。現在、この行を使用して次の値を取得します。
BRIGHTNESS=`xrandr --verbose | grep -i brightness | cut -f2 -d ' ' | head -n1`
注:head
最後の呼び出しでは、モニターは2つなので、最終的に2つの値が得られますが、同じ明るさに保たれるため、1つだけが必要です。
で1行しか必要ないので、xrandr --verbose
次のように「ゆっくり」評価する方法があるかどうか疑問に思います。
xrandr
この行に達すると出力を停止します。xrandr
行の読み取りが終了すると、残りの出力は無視されます。- 他にはありませんか?
私はbashがこの状況に最も適した言語ではないかもしれないことを知っているので、他の言語のソリューションにも開いています。
答え1
awk
以下を使用して、一部のパイプ(プロセス)を削除し、最初の明るさインスタンスが表示されるまでファイルを読み取ることができます。
xrandr --verbose | awk '/Brightness/ { print $2; exit }'
答え2
初めて発見したら止めて無視してみましょうbrigthness
。grep
マニュアルページから:
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines.
これが私の最終版です。私たちはさらに必要ありませんhead
:
BRIGHTNESS=`xrandr --verbose | grep -m 1 -i brightness | cut -f2 -d ' '`
答え3
grep
試合後の読み取りを中止するために'フラグを使用するように@LatinSuDの提案に加えて、次のようなものを使用して-m
stdoutバッファのサイズを変更することもできます。xrandr
stdbuf
このように:
BRIGHTNESS=`stdbuf -o0 xrandr --verbose | grep -m 1 -i brightness | cut -f2 -d ' '`
これにより速度が大幅に向上します。
$ cat brightness
xrandr --verbose | grep -m 1 -i brightness | cut -f2 -d ' '
$ time sh brightness > /dev/null
sh brightness > /dev/null 0.00s user 0.00s system 1% cpu 0.485 total
$ cat brightness_nobuffer
stdbuf -o0 xrandr --verbose | grep -m 1 -i brightness | cut -f2 -d ' '
[ para ~ . ]$ time sh brightness_nobuffer > /dev/null
sh brightness_nobuffer > /dev/null 0.01s user 0.01s system 10% cpu 0.130 total
答え4
このプログラムをインストールすることをお勧めしますxbacklight
。
もちろん、ハードウェアがそれをサポートしていない場合、これはオプションではありません。したがって、これまでやってきたようにソフトウェアを調整する必要があります。
man xrandr 2>/dev/null |
grep '^ *--brightness' -A8
--brightness brightness
Multiply the gamma values on the crtc cur‐
rently attached to the output to specified
floating value. Useful for overly bright or
overly dim outputs. However, this is a
software only modification, if your hardware
has support to actually change the bright‐
ness, you will probably prefer to use xback‐
light.
明るさの設定はRGB乗数にすぎないようです。ガンマモニターの価値。したがって、直接的な影響を与える方が合理的である可能性があり、少なくとも簡単になりますxgamma
。
xgamma
-> Red 1.000, Green 1.000, Blue 1.000
xgamma -gamma .7
-> Red 1.000, Green 1.000, Blue 1.000
<- Red 0.700, Green 0.700, Blue 0.700
他の多くの答えと同様に、sed
問題が発生したらすぐに入力を中止できます。明るさ次の文字列:
xrandr --verbose | sed '/Br/!d;s/.* //;q'
これにより、最初に発生する前のすべての行が削除されます。臭素ひも。 1つが見つかったら、その行から最後の行まですべての内容を削除し、<space>
すぐに入力を終了します。したがって、100%の明るさで残ったものは次のとおりです。
echo "<$(xrandr --verbose | sed '/Br/!d;s/.* //;q')>"
<1.0>
以下を使用して出力から有効なEDIDを取得し、バックライトに直接影響を与えることができる場合は、より良いでしょう。
man xbacklight 2>/dev/null |
sed '/^ *SYNOPSIS/,/^ *-inc/!d;//c\\'
xbacklight [-help] [-display display] [-get] [-set
percent] [-inc percent] [-dec percent]
DESCRIPTION
Xbacklight is used to adjust the backlight bright‐
ness where supported. It finds all outputs on the X
server supporting backlight brightness control and
changes them all in the same way.
-get Print out the current backlight brightness
of each output with such a control. The
brightness is represented as a percentage of
the maximum brightness supported.
-set percent
Sets each backlight brightness to the speci‐
fied level.
私のコンピュータには明らかにすでにインストールされています。なぜなら、ある時点で設置したからです。
pacman -Qo /usr/bin/xbacklight
/usr/bin/xbacklight is owned by xorg-xbacklight 1.2.1-1
...^そのパッケージ。