как вывести уведомление при подключении usb скриптом правила udev - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь всплыть уведомление при подключении USB. Я написал правило udev, которое отлично работает и запускает мой скрипт оболочки для всплывающего уведомления ACTION=="add", ATTRS{bInterfaceClass}=="08", RUN+=PATH

Я понял, что скрипт имеет ограниченное время для запуска, поэтому я использовал '&' в каждой команде. Другое дело, что этот тип сценария выполняется без контекста, поэтому я указал export DISPLAY=:0.0 и Xauthority. Я также получил путь DBUS_SESSION . проблема в том, что после перезагрузки системы, чтобы все было сделано, мне нужно запустить скрипт вручную с пользователем non-root и сразу после этого он появится, когда подключится usb. Я думаю, это происходит потому, что udev запускает его с разрешениями root, я уже пытался вызвать команду notify-send с помощью sudo -u и su - c.

Мой сценарий:

#!/bin/sh
{
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
set -x
xhost local:root
DISPLAY=:0.0
export DISPLAY
export XAUTHORITY=/var/lib/lightdm/.Xauthority
notify-send -t 10000 -u normal 'USB Detected' 'starting to create snapshot\nPlease do not remove the device'
echo $DISPLAY > debug
python /home/magshimim/Desktop/test.py
} &
...