
i3 wm을 사용하고 있으며 밝기 파일은 /sys/class/backlight/ideapad/brightness
.
╰─$ ls -la /sys/class/backlight/ideapad/
-rw-r--r-- 1 root root 4096 Dec 18 16:55 brightness
밝기(예: 4)를 변경하려면 다음을 수행합니다.
sudo sh -c "echo 4 > /sys/class/backlight/ideapad/brightness"
밝기를 1씩 늘리거나 줄이는 스크립트를 작성한 다음 해당 스크립트를 i3 wm 구성 파일의 특정 키 조합(예:)에 바인딩하여 CTRL+F1
밝기 파일을 편집하는 대신 키를 눌러 밝기를 제어할 수 있도록 하고 싶습니다. 매번 밝기를 변경하고 싶을 때마다 수동으로 변경합니다.
루트 액세스가 필요하기 때문에 이를 구현하는 방법을 모르겠습니다. 내 사용자를 파일 소유자로 변경해야 합니까 brightness
, 아니면 파일 그룹을 변경해야 합니까? 아니면 다른 방법을 생각해 볼 수 있나요?
답변1
/sys
RAM 기반 가상 파일 시스템입니다., 따라서 해당 파일에 대한 권한 변경은 재부팅 후에도 유지되지 않습니다.
옵션 1:애필렛
나에게 도움이 된 유일한 패키지 솔루션입니다.
일부 최신 노트북에서는 "XRandR"이 디스플레이 밝기를 설정하지 못할 수도 있습니다. 이 기능은 커널의 ACPI 인터페이스로 이동/통합되었습니다
/sys/class/backlight/
."acpilight"는 "XRandR" 대신 ACPI 인터페이스를 사용하여 명령에 대한 드롭인 대체 기능을 제공하므로
xbacklight
이전 스크립트를 실행할 수 있습니다. 따라서xbacklight
콘솔과 Wayland에서도 사용할 수 있습니다(X11을 전혀 사용하지 않고).
리포지토리에 포함된 배포판은 거의 없지만 언제든지 직접 컴파일하고 설치할 수 있습니다. 그럼 그냥 사용
xbacklight +10
밝기가 10% 증가합니다.
옵션 2와 3의 경우 ideapad
시스템에서 적절한 경로 구성 요소를 대체하십시오.
intel_backlight
그리고 acpi_video0
그것들은 모두 공통적입니다.
옵션 2: Udev
video
명령의 출력에 있는지 확인하십시오 groups
. 그렇지 않은 경우 사용자를 그룹에 추가하십시오.
그런 sudo -e /etc/udev/rules.d/backlight.rules
다음 .
RUN+="/bin/chgrp video /sys/class/backlight/ideapad/brightness"
RUN+="/bin/chmod 0664 /sys/class/backlight/ideapad/brightness"
재시작. 감사해요:Arch Linux 포럼의 Fistrosan.
솔루션 3.1: C+setuid
이 C 프로그램은 제가 얼마 전에 작성한 솔루션이며 결코 저를 실망시킨 적이 없습니다. 표준 Linux 시스템에는 없는 C 컴파일러 외에는 아무것도 필요하지 않습니다.
#include <stdlib.h>
#include <stdio.h>
#define BUFSIZE 10
int main(int argc, char **argv) {
FILE *fp;
char scurr[BUFSIZE];
long new, curr, incr, min = 10;
/* An argument with an integer increment must be supplied */
if (argc != 2 || (incr = strtol(argv[1], NULL, 10)) == 0) { return(1); }
/* Retrieve the current brightness and increment it in the brightness file */
if ((fp = fopen("/sys/class/backlight/ideapad/brightness", "r+"))
&& fgets(scurr, BUFSIZE, fp)) {
curr = strtol(scurr, NULL, 10);
rewind(fp);
new = curr + incr;
if (new < min) { new = min; }
fprintf(fp, "%ld\n", new);
fclose(fp);
} else { return(2); }
return(0);
}
컴파일하고( br.c
는 파일 이름, br
실행 파일) 루트를 소유자로 만들고 엽니다.사용자 ID 비트 설정실행 파일을 현재 위치 어딘가에 두십시오 PATH
( /usr/local/bin/
이것이 일반적인 선택입니다).
cc br.c -o br
chown root br
chmod u+s br
mv br /usr/local/bin/
이제 실행하면 br -100
밝기가 100만큼 낮아집니다.
또한 최소 밝기를 로 설정했습니다 min = 10
. 내 컴퓨터에서는 이 값이 매우 낮아서 디스플레이가 켜져 있다는 것을 거의 알아차리지 못합니다. 필요에 따라 이 값을 조정하십시오.
옵션 3.2: C+ 함수
Setuid는 br
전체 루트 권한을 부여합니다. 매우 주의해서 필요한 권한 집합만 부여하려면(예: 파일 권한 확인을 우회) 위의 chown
및 줄을 다음으로 바꾸세요.chmod
적절한 능력
setcap cap_dac_override+ep br
답변2
일반적으로 그룹 소유권을 변경하는 것이 좋지만 재부팅할 때마다 이 작업을 수행해야 합니다. 이렇게 하려면 아래 설명에 따라 udev 규칙을 자동으로 생성하세요.아치스 위키:
기본적으로 루트만 이 방법을 통해 밝기를 변경할 수 있습니다. 비디오 그룹의 사용자가 밝기를 변경하도록 허용하려면 다음과 같은 udev 규칙을 사용할 수 있습니다.
/etc/udev/rules.d/backlight.rules
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="acpi_video0", GROUP="video", MODE="0664"
그룹의 구성원이 아닌 경우 video
사용자를 그룹에 추가하십시오.
sudo gpasswd video -a $(whoami)
그룹 멤버십 정보를 새로 고치기 위해 로그아웃했다가 다시 로그인했습니다.
su -l $(whoami)
id가 있는 그룹의 구성원인지 확인하면 video
다음과 같이 인쇄됩니다.
$ id
uid=1000(ja) gid=100(users) groups=100(users),16(dialout),17(audio),18(video),83(plugdev),215(vboxusers),281(docker)
물론 udev 규칙에서 사용자가 속한 모든 그룹을 사용할 수 있지만 반드시 그런 것은 아닙니다 video
.