Я не могу полностью попробовать это, так как на всех моих машинах отключен root.
Чтобы узнать, на каком дисплее находится пользователь, вы можете использовать who
команду. Последним столбцом вывода обычно является ОТОБРАЖЕНИЕ, в которое входит пользователь. Нечто подобное можно использовать для захвата только дисплея (вероятно, есть гораздо более эффективный способ сделать это, не стесняйтесь вносить изменения):
who | grep -m1 ^username.*\( | awk '{print $5}' | sed 's/[(|)]//g'
Затем для запуска графической команды X на этом дисплее:
DISPLAY=:0 firefox &
где: 0 будет заменено любым отображением, которое вы нашли в первой команде, а firefox будет заменено любой командой, которую вы хотите запустить. Вы можете поместить это в сценарий оболочки и просто использовать переменную.
Следующая часть - это часть, которую я не тестировал, но я не понимаю, почему это невозможно сделать:
su username -c "DISPLAY=:0 firefox"
запустить команду X от имени этого пользователя.
naga_plugged.pl
скрипт завершился (или разветвился на задний план), потому чтоudev
будет ждать его выхода.