我的笔记本电脑有一个4K的OLED屏幕,所以它没有背光来改变屏幕的亮度。要控制亮度,您需要使用xrandr和--亮度参数.我以前已经在i3窗口管理器中成功地做到了这一点,但是我现在想在Budgie中做一些类似的事情。
布吉将检测亮度击键,并将/sys/class/backlight/intel_backlight/brightness文件内容更改为通常更新背光设置的值。
我想监视这个文件的变化,当它发生变化时,只需用正确的值调用xrandr .我发现您可以使用inotifywait查看文件更改,但由于某些原因,它对我不起作用。
$ cat /sys/class/backlight/intel_backlight/brightness
21750
# Now pressing the brightness up key on the keyboard
$ cat /sys/class/backlight/intel_backlight/brightness
28000
$ inotifywait /sys/class/backlight/intel_backlight/brightness
Setting up watches.
Watches established.
# Now pressing the brightness up key on the keyboard....... nothing happens.
# Same when I add the -e close_write parameter.有人知道为什么会这样吗?
当然,我可以每秒钟检查一次文件的内容,但我不喜欢这种解决方案。
FYI: Arch Linux,最新版本
编辑:我刚刚注意到它确实注意到了/sys/class/backlight/acpi_video0 0/亮度的变化,这解决了我的问题,但这个问题仍然有效。
发布于 2020-09-19 18:51:01
我通知在VFS级别工作(可以说是文件系统级别)。如果文件被写入,inotify将被通知。但是,由于sysfs (和procfs,以及所有其他虚拟文件系统)的内容可能是动态更新的&不是通过文件系统异步更新的,所以使用inotify可能不会产生预期的结果。
在您的示例中-- /sys/class/backlight/intel_backlight/brightness的值可能以其他方式更新,而不是通过文件系统更新,而/sys/class/backlight/acpi_video0/brightness则通过文件系统进行更新。这取决于控制软件。这可能是你观察的原因。
为了记录-我已经在我的笔记本电脑上测试了它:在后台运行inotifywatch /sys/class/backlight/intel_backlight/brightness时,我会收到通知:
cat /sys/class/backlight/intel_backlight/brightness - close_nowrite.echo 50000 | sudo tee /sys/class/backlight/intel_backlight/brightness -更改亮度,并通过键盘快捷方式获得close_write.close_write事件(运行GNOME Shell 3.36.4))。
https://stackoverflow.com/questions/63072846
复制相似问题