В gnome w/ xmonad, как я могу вызвать скрипт, когда монитор подключен ИЛИ при подключении моего ноутбука?

Проблема:

У меня есть дополнительный набор верхней и нижней панелей гномов для второго монитора. Когда я отсоединяю свой Lenovo Thinkpad (T510), остаются лишняя верхняя и нижняя панели, поэтому у меня есть две сверху и две снизу. В настоящее время я использую экземпляр RHEL6/Fedora (x86_64) gnome (2.28.2) с xmonad (0.9.1-6.1.el6), установленным в качестве оконного менеджера, с использованием расширений xmonad для работы в gnome.

Пытался:

Я использовал acpi и нашел код для стыковки и расстыковки, но когда я пытаюсь использовать скрипт, который я нашел в этом посте, он получает ноль для вызова xrandr. Скрипт работает при вызове самостоятельно из терминала. Я попытался вызвать отдельный цикл цикла в своем собственном потоке, и он продолжает получать ноль для значения, долгое время после обновления экрана (ов).

Я выяснил, как делать цикл скриптов каждые X секунд и проверять наличие файла, в котором происходит соприкосновение, когда скрипт получает ноль, а затем выполняет необходимые изменения, но мне не нравится такой подход.

Вопрос:

Я надеюсь, что кто-то знает место, где я могу оставить вызов ссылочному сценарию и сделать так, чтобы мои панели приходили и уходили, как и следовало ожидать, без необходимости запуска сценария вручную.

Спасибо!

Обновление: я добавил награду 50 (максимум, что я могу сделать) за ответ.

Бен

1 ответ

Решение

Я предполагаю, что одна из проблем, перечисленных ниже, встречается (или обе):

1) похоже, что ваш фрагмент кода xrandr не возвращает правильные значения, поскольку переменная окружения $DISPLAY установлена ​​неправильно. Сценарий обработчика Acpi обычно запускается как пользователь, который не является пользователем, выполняющим текущий сеанс X. Таким образом, Xrandr просто не знает, какой $DISPLAY для доступа.

2) если $DISPLAY установлен правильно, пользователь acpid, возможно, все еще не сможет получить доступ к запущенной xsession. Вы можете проверить, будет ли скрипт работать над обработчиком acpi, если вы выполните xhost + как пользователь, который в настоящий момент выполняет текущую xsession с $DISPLAY, указанным в вашем скрипте. Это отключит контроль доступа для X. Вы можете включить его с помощью xhost - снова.

Проверьте это, я надеюсь, это поможет или, по крайней мере, укажет вам, в каком направлении копать.

Другие вопросы по тегам