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

问题:

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

尝试:

我已经使用了acpi,并find了一个对接和取消对接的代码,但是当我尝试利用我在这篇博客文章中find的脚本时,调用xrandr的代码为零。 该脚本在从terminal自行呼叫时起作用。 我已经尝试在自己的线程中调用一个单独的循环脚本,并且在屏幕更新(s)之后很长时间内,该值始终为零。

我已经想出了如何让脚本每隔X秒循环一次,并在脚本获得零的情况下检查一个触摸到的文件,然后执行必要的更改,但我不喜欢这种方法。

题:

我希望有人知道一个地方,我可以把一个电话的引用脚本,并让我的面板来去去,而不需要手动启动脚本。

谢谢!

更新:我已经添加了一个50的奖金(最大我可以做)的答案。

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

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

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

检查它,我希望它可以帮助或至少会指出你在哪个方向挖掘。