Страница 1 из 1

Автоматический запуск скринсейвера из скрипта

Добавлено: 19 фев 2017, 00:10
IlyaT
Пытаюсь автоматически запускать скринсейвер по вытаскиванию USB устройства.
Почему-то вот такая команда запускаемая от пользователя:
/bin/su ilya -c "DISPLAY=:0 /usr/bin/cinnamon-screensaver-command --lock"
вызывает скринсейвер, а при вызове от рута говорит что
Can't connect to screensaver!

Автоматический запуск скринсейвера из скрипта

Добавлено: 19 фев 2017, 12:14
Dja
потому что графическая сессия как правило запускается под пользователем. Под рутом консоль. А в консоли какая заставка...

Автоматический запуск скринсейвера из скрипта

Добавлено: 19 фев 2017, 12:28
IlyaT
Dja писал(а):Под рутом консоль. А в консоли какая заставка.
Я это понимаю, поэтому делаю вот так:
/bin/su ilya -c

Автоматический запуск скринсейвера из скрипта

Добавлено: 19 фев 2017, 12:40
symon2014
Извините, я тут на лыжах мимо пролетал, недопонял про рута и без него, что то мне кажется , что эту штуку (/bin/su) надо копать или в патчах или писать полный путь.

Автоматический запуск скринсейвера из скрипта

Добавлено: 19 фев 2017, 12:41
zuzabrik
IlyaT писал(а): Я это понимаю, поэтому делаю вот так:
/bin/su ilya -c
Зачем делать смену пользователя на ilya перед тем как запускать скринсейвер? чем не устраивает просто cinnamon-screensaver-command --lock

Можешь попробовать запустить в таком виде - su --login -c "cinnamon-screensaver-command --lock" но не даю гарантий что сработает.

Автоматический запуск скринсейвера из скрипта

Добавлено: 19 фев 2017, 13:37
IlyaT
zuzabrik писал(а):Зачем делать смену пользователя на ilya перед тем как запускать
Так тоже не работает, но я понимаю почему - потому что у рута нет никакого скринсейвера и это логично.
На всякий случай поясню - скрипт дергается демоном udev который очевидно работает из по рута, а рабочий пользователь ilya и у него есть скринсейвер и его можно запустить из команды, но как запустить скинсейвер из udev ?

Автоматический запуск скринсейвера из скрипта

Добавлено: 19 фев 2017, 13:55
zuzabrik
зайди с другого боку. отслеживай то что можешь отслеживать в сеансе пользователя. типа демона который висит и следит за смонтированными разделами и на основе его работы врубай сейвер. типа такого

Автоматический запуск скринсейвера из скрипта

Добавлено: 19 фев 2017, 23:05
nimms

Код: Выделить всё

# файл с правилом udev; nim - мой пользователь
$ cat /etc/udev/rules.d/usb-remove.rules
SUBSYSTEM=="usb", ACTION=="remove", RUN+="/bin/su nim -c 'DISPLAY=:0 /usr/bin/cinnamon-screensaver-command --lock'"

# перезагрузка правил udev
$ sudo udevadm control -R
Вставляю флешку, вытыкаю - экран блокируется. Так что всё должно работать. Может, у Вас правило неверно прописано?