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개만 필요합니다.
에서 하나의 행만 필요하기 때문에 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'
이렇게 하면 처음 발생하기 전의 모든 줄이 삭제됩니다.브롬끈. 하나를 찾으면 해당 줄에서 마지막 줄까지 모든 내용을 삭제한 다음 <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
...^그 패키지.