Как выполнить команды i3 из systemctl? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь запустить команду i3, используя inotify.В моем случае inotify запускается с использованием systemctl.

сценария systemctl:

[Unit]
Description=Inode event watcher

[Service]
User=root
Type=forking
ExecStart=/usr/local/services/inotify/start.sh

[Install]
WantedBy=default.target

/ usr / local / services / inotify / start.sh:

I3_CURRENT_WORKSPACE='/etc/i3/script/swiping-workspace/current'
I3_UPDATE_WORKSPACE="/etc/i3/script/swiping-workspace/update.sh"
inotify $I3_WORKSPACE_TRIGGER $I3_WORKSPACE_UPDATE &

Примечание. Моя цель - выполнить update.sh при изменении файла current на диске.

/ etc / i3 / script / swiping-workspace / update.sh:

sudo -u $user i3 workspace $(cat $I3_CURRENT_WORKSPACE)

, где $user - это пользователь, в котором был установлен i3.Я запускаю эту команду от имени пользователя root.Я также попробовал эти переключатели, но безрезультатно: SCREEN=':0' -E -H

Проблема:

Когда срабатывает событие inotify, возникает ошибка.Вот сообщение журнала, которое я получаю (используя journalctl):

<date> start.sh[1427]: /etc/i3/script/swiping-workspace/ MODIFY current
<date> sudo[6698]:     root : TTY=unknown ; PWD=/ ; USER=$user ; COMMAND=/usr/bin/i3 workspace "6"
<date> sudo[6698]: pam_unix(sudo:session): session opened for user $user by (uid=0)
<date> start.sh[1427]: <date> - Additional arguments passed. Sending them as a command to i3.
<date> start.sh[1427]: <date> - ERROR: Could not get i3 IPC socket path
<date> sudo[6698]: pam_unix(sudo:session): session closed for user $user

Я не понимаю, почему i3 не получает команду, systemctl отправляет ее.

вся настройка на самом деле работает, если я сам запускаю команду inotify (в уникальном терминале) вместо использования systemctl.

У кого-нибудь есть подсказка?

...