一个小背景:我也想在我的笔记本电脑上和我的桌面上使用i3lock的包装器脚本。
所以,正如标题所说,我可以使用
xset dpms 2在shell中,它做了它应该做的事情,但是当我在脚本中使用它时,例如
#!/bin/sh
revert() {
xset dpms 0
}
trap revert INT
xset dpms 2
i3lock "$@"
revert它不会变戏法。
使用bash -x,我可以得到输出
+ trap revert INT
+ xset dpms 2
+ i3lock
+ revert
+ xset dpms 0我不确定问题出在哪里。当我在第一行放入#!/bin/bash而不是#!/bin/sh时也是一样的。
发布于 2021-06-25 22:08:52
我只是偶然发现了同样的问题,并最终使用i3lock的-n开关(nofork)修复了它。
令人兴奋的是,dpm设置为3,然后启动并派生i3lock,之后立即调用revert函数,而i3lock仍在运行,从而取消了对xset的第一次调用。
使用i3lock -n可以防止这种行为,确保只有当i3lock退出时,脚本才会继续越过i3lock行。
只需用i3lock -n "$@"替换i3lock "$@",它应该可以正常工作。
https://stackoverflow.com/questions/51127374
复制相似问题