首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么inotifywait没有注意到/sys/class/backlight/intel_backlight/brightness (Linux)中的变化

为什么inotifywait没有注意到/sys/class/backlight/intel_backlight/brightness (Linux)中的变化
EN

Stack Overflow用户
提问于 2020-07-24 11:42:51
回答 1查看 364关注 0票数 1

我的笔记本电脑有一个4K的OLED屏幕,所以它没有背光来改变屏幕的亮度。要控制亮度,您需要使用xrandr和--亮度参数.我以前已经在i3窗口管理器中成功地做到了这一点,但是我现在想在Budgie中做一些类似的事情。

布吉将检测亮度击键,并将/sys/class/backlight/intel_backlight/brightness文件内容更改为通常更新背光设置的值。

我想监视这个文件的变化,当它发生变化时,只需用正确的值调用xrandr .我发现您可以使用inotifywait查看文件更改,但由于某些原因,它对我不起作用。

代码语言:javascript
复制
$ 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/亮度的变化,这解决了我的问题,但这个问题仍然有效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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.
  • Changing亮度-对于每增加/减少一次,我将得到一个close_write事件(运行GNOME Shell 3.36.4)

)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63072846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档