В 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 -
снова.
Проверьте это, я надеюсь, это поможет или, по крайней мере, укажет вам, в каком направлении копать.