Udev: запуск shellscript, который обращается к X-дисплею

После того, как мой 3G-модем работал в Arch Linux я хотел устранить некоторые ручные работы, необходимые в этом процессе. Поэтому мне нужно было создать правило udev. После некоторых проб и ошибок я придумал следующее правило с именем 11-my-rule.rules которое я разместил в /etc/udev/rules.d/ :

 # start at sdb to ignore the system hard drive KERNEL!="sd[bz]*", GOTO="my_media_automount_end" # run the script and create a testdir to verify the rule works ACTION=="add", RUN+="/myscript.sh", RUN+="/bin/mkdir -p '/media/pendrive'" #remove the testfolder on removal of usb ACTION=="remove", RUN+="/bin/rm -R '/media/pendrive'" # exit LABEL="my_media_automount_end" 

Мой тестовый сценарий, который должен быть запущен, выглядит следующим образом:

 #!/bin/bash DISPLAY=:0 xterm 

Что отображает xterminal. Я тестировал сам скрипт, и он работает. Также работает второй RUN +, который создает тестовую директорию. Поэтому я в недоумении, что я делаю неправильно.

One Solution collect form web for “Udev: запуск shellscript, который обращается к X-дисплею”

@EightBitTony может быть прав. Правила udev выполняются как пользователь root. Таким образом, помимо указания DISPLAY , вы должны предоставить этому пользователю root доступ к вашей X-сессии.

Этого можно добиться, найдя соответствующий файл полномочий и экспортируя его как XAUTHORITY . echo $XAUTHORITY от эмулятора терминала может сказать вам, где он находится.

Использование диспетчера дисплеев, местоположение, вероятно, изменится при каждом входе в систему. Кроме того, вы можете вызывать xhost + из вашего сеанса x, предоставляя всем другим пользователям доступ к этому сеансу. xhost - закроет это снова. Напоминаем, что это также позволяет удаленным пользователям получать доступ к сеансу с использованием TCP-порта.

  • Можно ли изменить X-сервер без клика?
  • Как установить переменную среды на основе доступности графического интерфейса?
  • Сессия VMD X11 по ssh
  • диспетчер окон при входе в текстовый режим
  • Отключить эмулированное колесо прокрутки (EmulateWheel) для определенных программ
  • Использовать xvfb для автоматизации программы X
  • удалить фон с feh?
  • Как отключить автоматическое копирование выделения?
  • WDM: автолог после загрузки
  • Как изменить внешний вид приложений, запущенных через NoMachine?
  • Перенос WASD + R_Shift на стрелки
  • Interesting Posts

    Эмулятор терминала с функциональностью сохранения вкладок?

    LXDE не включает монитор ноутбука, где отключен VGA

    Как «расширить» переменную bash (включенный код работает для bash, но не zsh)

    Примеры, почему плохо читаемый / корневой каталог?

    Как я могу поместить пользователя в файл суперпользователей?

    Можно ли запустить дистрибутив Linux в VM на Qubes OS?

    Bluetooth-мышь не перезагружается автоматически при перезагрузке

    Переполнение FIFO FlexCan

    Есть ли конкретная причина, почему Docker не является сервисом на dbus?

    Поиск количества дочерних процессов определенного процесса

    Как сделать WGET образ из веб-адреса и сохранить его на удаленном ftp-месте в виде cronjob on dd-wrt

    Получение большого количества ошибок из / dev / sda

    Предопределенный источник ввода для каждого окна в Gnome

    Как избавиться от среды рабочего стола и использовать только оконный менеджер?

    Понимание среды Linux Back-Slash и звездочки

    Linux и Unix - лучшая ОС в мире.