Установка домашнего каталога 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
, что это не придумать.)