Wayland(或非特权 Xorg)能够通过 fd 传递systemd-logind
或等效方式访问 DRM 和输入设备。我可以在 中看到这些设备(第一个座位)loginctl seat-status seat0
。
/sys/class/backlight/*/
但是,我在此设备列表中没有看到背光设备 ( )。
此外,虽然 GNOME 能够控制我的背光,但我的用户尚未通过 sysfs 文件所有者/组或 ACL 获得背光权限:
$ ls -ld /sys/class/backlight/intel_backlight
lrwxrwxrwx. 1 root root 0 May 24 17:12 /sys/class/backlight/intel_backlight -> ../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight
$ cd /sys/class/backlight/intel_backlight
$ $ ls -l
total 0
-r--r--r--. 1 root root 4096 May 27 22:09 actual_brightness
-rw-r--r--. 1 root root 4096 May 27 22:17 bl_power
-rw-r--r--. 1 root root 4096 May 27 22:17 brightness
lrwxrwxrwx. 1 root root 0 May 27 22:09 device -> ../../card0-eDP-1
-r--r--r--. 1 root root 4096 May 27 22:17 max_brightness
drwxr-xr-x. 2 root root 0 May 27 22:09 power
lrwxrwxrwx. 1 root root 0 May 24 17:12 subsystem -> ../../../../../../../class/backlight
-r--r--r--. 1 root root 4096 May 27 22:17 type
-rw-r--r--. 1 root root 4096 May 27 22:17 uevent
$ getfacl bl_power brightness
# file: bl_power
# owner: root
# group: root
user::rw-
group::r--
other::r--
# file: brightness
# owner: root
# group: root
user::rw-
group::r--
other::r--
我的 GNOME 会话中的非特权进程使用什么机制来控制背光,尽管没有root
?
编辑添加:该设备/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1
如图所示loginctl seat-status
,这是背光设备的父设备。
我正在使用 gnome-shell3.28.2-1.fc28
和 Wayland。 systemd 是版本238-8.git0e0aa59.fc28
。
答案1
gsd-backlight-helper
背光由以 root 身份运行的助手设置gnome-settings-daemon
,这要归功于允许活动用户执行此操作的 PolicyKit 设置。/usr/share/polkit-1/actions/org.gnome.settings-daemon.plugins.power.policy
包含以下内容:
[...]
<action id="org.gnome.settings-daemon.plugins.power.backlight-helper">
[...]
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
[...]