Программа, запущенная из udev, не может открыть окно [дубликат]

0
26.02.2016, 22:40
2 ответа

Я предполагаю, что код запускается от имени пользователя root или udev, и что у этих пользователей нет полномочий общаться с вашим оконным менеджером и делать Tk окна или что-то в этом роде. Может помочь какая-то форма общения, например сценарий udev записывает записи в журнал или отправляет сообщения в сокет, который на другой стороне чего-либо в среде оконного менеджера может читать сообщения и предпринимать соответствующие действия.

1
28.01.2020, 02:35

Когда вы запускаете скрипт из интерактивной оболочки, у вас есть переменная окружения DISPLAY, указывающая сервер, к которому вы имеете право подключиться.

Когда сценарий запускается udev, это не так.

В общем, вы не хотите, чтобы udev делал что-либо, что зависит от наличия X11, и вы определенно не хотите увеличивать его поверхность атаки таким образом.

Похоже, что вы ищете систему подписки/уведомлений, поэтому вы можете запустить слушателя (как себя) в X-сессии, а уведомление запускать с udev. Возможно, вы захотите рассмотреть DBus или UDisks для этого; альтернативно, вы можете запустить inotifywait, следящий за созданием файла устройства, и читать его события в вашем сценарии (опять же, все от имени пользователя, не root).

1
28.01.2020, 02:35

Теги

Похожие вопросы