linux - 在带有 xmonad 的 gnome 中,当插入显示器或对接笔记本电脑时如何调用脚本?

标签 linux gnome acpi xmonad

问题:

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

尝试过:

我使用了 acpi 并找到了用于停靠和取消停靠的代码,但是当我尝试使用我在 this blog post 中找到的脚本时,它在调用 xrandr 时得到零。该脚本在从终端自行调用时起作用。我试过在它自己的线程中调用一个单独的循环脚本,并且在屏幕更新很久之后它的值一直为零。

我已经弄清楚如何让脚本每 X 秒循环一次,并检查在脚本为零的情况下是否存在被触及的文件,然后执行必要的更改,但我不喜欢这种方法.

问题:

我希望有人知道我可以挂断对引用脚本的调用并让我的面板按照我的预期来来去去,而无需手动启动脚本。

谢谢!

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

最佳答案

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

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

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

检查一下,希望它对您有所帮助,或者至少能为您指明挖掘的方向。

关于linux - 在带有 xmonad 的 gnome 中,当插入显示器或对接笔记本电脑时如何调用脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980060/

相关文章:

C++ - 如何检测我在没有终端的情况下运行

linux - 编程 gnome 电源管理

Linux ACPI 配置

linux - 从命令行恢复/暂停能源之星 linux

c - 在内核程序中获取 root 用户 id 并与当前用户 id 进行比较

linux - 在 CentOS 上安装 Maven 后找不到 mvn 命令

linux - Sublime - 仅将选择范围扩展到匹配项

acpi - 以编程方式即时断电?

linux - 防止 Perl 程序在使用系统写入 sh 终端后打印换行符

linux - 在 Linux RHEL 6 上的重启后坚持 ifconfig lo 多播