Я написал системный пользовательский модуль для запуска 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 правильный домашний каталог?

EDIT: после более близкого осмотра, кажется , что XScreenSaver смотрит на правильный файл конфигурации; однако, это просто просто не отображает какие-либо изображения (моя конфигурация просто GLSlideshow, указывая на каталог). Может быть, он не может найти что-то на пути, который ищет?

1 ответ1

0

Хорошо, я понял это. Проблема заключалась в том, что 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 , это не подходит .)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .