繁体   English   中英

在gnome w / xmonad中,如何在插入显示器或对接笔记本电脑时调用脚本?

[英]In gnome w/ xmonad, how can I call a script when a monitor is plugged in OR when docking my laptop?

问题:

我有一套额外的顶部和底部gnome面板用于第二台显示器。 当我卸下我的联想Thinkpad(T510)时,额外的顶部和底部面板仍然存在,所以我有两个在顶部,两个在底部。 我目前正在运行RHEL6 / Fedora(x86_64)gnome(2.28.2)实例,并将xmonad(0.9.1-6.1.el6)设置为窗口管理器,使用xmonad扩展在gnome中工作。

尝试:

我已经使用了acpi并找到了一个用于停靠和取消停靠的代码,但是当我尝试使用我在这个博客文章中找到的脚本时,对于xrandr的调用它变为零。 该脚本在从终端自行调用时有效。 我已经尝试在自己的线程中调用一个单独的循环脚本,并且在屏幕更新后很长时间内它仍然为零值。

我已经想出如何每X秒有一个脚本循环并检查一个文件,如果脚本变为零,则触摸存在,然后执行必要的更改,但我不喜欢这种方法。

题:

我希望有人知道一个地方我可以放弃对引用脚本的调用,让我的面板按照我的预期来去,而不需要手动启动脚本。

谢谢!

更新:我已经为答案添加了50(我能做的最多)的赏金。

我想下面列出的问题之一(或两者):

1)看起来你的xrandr片段没有返回正确的值,因为没有正确设置$ DISPLAY环境变量。 Acpi处理程序脚本通常以用户身份运行,该用户不是运行当前X会话的用户。 这样xrandr就不知道要访问哪个$DISPLAY

2)如果$DISPLAY设置正确,acpid用户可能仍然无法访问正在运行的xsession。 如果执行xhost +作为当前正在使用脚本中指定的$ DISPLAY来修改当前xsession的用户,则可以检查脚本是否可以在acpi处理程序上运行。 这将禁用X的访问控制。您可以再次使用xhost -重新启用它。

检查它,我希望它有助于或至少指出你在哪个方向挖掘。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM