Установка домашнего каталога xscreensaver с помощью systemd

Я написал системный пользовательский модуль для запуска xscreensaver, так как я хочу, чтобы он запускался автоматически. Вот как это выглядит:

# ~/.config/systemd/user/xscreensaver.service
[Unit]
Description=XScreensaver

[Service]
Type=simple
ExecStart=/run/current-system/sw/bin/xscreensaver -no-splash
Restart=always

[Install]
WantedBy=multi-user.target

Это начинается; однако, это не соответствует конфигурации, которую я выложил (как это происходит, когда я просто запускаю ее вручную). Я думаю, что это потому, что каталог HOME не устанавливается (xscreensaver ищет в ~/.xscreensaver для его конфигурации). Но даже добавляя в строку

Environment=HOME=/home/username

в [Service] раздел в моем блоке не исправляет это; он все еще не читает файл конфигурации. Насколько я знаю, xscreensaver не имеет аргумента командной строки для настройки пути к файлу конфигурации. Что мне нужно сделать, чтобы сообщить xscreensaver правильный домашний каталог?

РЕДАКТИРОВАТЬ: после более тщательного изучения, кажется, что xscreensaver ищет правильный файл конфигурации; однако, это просто просто не отображает какие-либо изображения (моя конфигурация просто GLSlideshow, указывая на каталог). Может быть, он не может найти что-то на пути, который ищет?

1 ответ

Хорошо, я понял это. Проблема заключалась в том, что GLSlideshow ожидал, что что-то (не совсем точно) будет вызываться в его PATH, а systemd не указывал ему путь. Итак, что это было исправлено:

[Unit]
Description=XScreensaver

[Service]
Type=simple
ExecStart=/run/current-system/sw/bin/xscreensaver -no-splash
Restart=always
Environment=HOME=/home/myusername
Environment=PATH=/run/current-system/sw/bin

[Install]
WantedBy=multi-user.target

(Обратите внимание, что /run/current-system/sw/bin Путь специфичен для моего дистрибутива NixOS. Возможно, что для более стандартных систем, например, тех, которые используют /bin или же /usr/bin, что это не придумать.)

Другие вопросы по тегам