![inotifywait 未检测到 xfce4 配置文件中的行更改](https://linux22.com/image/225506/inotifywait%20%E6%9C%AA%E6%A3%80%E6%B5%8B%E5%88%B0%20xfce4%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E8%A1%8C%E6%9B%B4%E6%94%B9.png)
我遇到的问题是,每次进入全屏模式时,VMWare Workstation 中的 Debian VM 都会将其分辨率更改为 1280x1392 像素。
现在,每次退出并进入全屏模式时,我都可以手动将分辨率更改为 2560x1440px,但更愿意将其自动化。
我首先尝试修改手动存储配置的 .config/xfce4/xfconf/xfce-perchannel-xml/displays.xml 文件,但它不会应用更改。如果我使用 xfconf-query 命令设置分辨率值,则这些更改都不会应用。
可以从命令行设置分辨率的东西是 xrandr
xrandr --output Virtual1 --mode 2560x1440
现在我考虑使用 inotifywait 设置一个脚本来监视 display.xml 中的更改。
但我的问题是它似乎无法识别文件中的更改......
我从命令行运行了以下命令(只是为了测试它是否注意到更改):
while inotifywait -m -e modify /home/myhomesir/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml; do whoami ;done
然后我运行md5sum display.xml
以获取设置文件的当前 md5sum,退出并进入全屏并md5sum display.xml
再次运行以确认文件已更改:
md5sum displays.xml
001c0796aba8c0e8b4ea28d59f2e5edc displays.xml
md5sum displays.xml
322e7ea6ca9914caba6fa1365244b27a displays.xml
检查 inotifywait 命令的输出,我没有得到任何输出:
while inotifywait -m -e delete /home/myhomedir/.config/xfce4/xfconf/xfce-perchannel-xml/; do whoami;done
Setting up watches.
Watches established.
您知道为什么会发生这种情况并且没有意识到这些变化吗?根据我的观察,有两行发生了变化:
diff displays.xml_wrong displays.xml_correct
9,10c9,10
< <property name="Resolution" type="string" value="1280x1392"/>
< <property name="RefreshRate" type="double" value="59.998367391363502"/>
---
> <property name="Resolution" type="string" value="2560x1440"/>
> <property name="RefreshRate" type="double" value="59.950550105254798"/>
期待任何帮助。如果您有任何其他建议,请告诉我。谢谢你!
答案1
我想我找到了解决方案,在监视创建和移动事件后,似乎xfce4首先创建一个新文件,displays.xml.new,然后将其移动到display.xml,而不是直接写入文件