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

746
limp_chimp

Я написал системный пользовательский модуль для запуска 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, указывая на каталог). Может быть, он не может найти что-то на пути, который ищет?

0

1 ответ на вопрос

0
limp_chimp

OK, I figured this one out. The problem was that GLSlideshow was expecting something (not exactly sure what) to be callable on its PATH, and systemd wasn't giving it the path. So what fixed it was:

[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 

(Note that the /run/current-system/sw/bin path is specific to my distribution, NixOS. It's possible that for more standard systems, e.g. ones that use /bin or /usr/bin, that this wouldn't come up.)

Возможно, вы хотите добавить `/ run / current-system / sw / bin` в PATH в` / etc / profile` или около того. Я не думаю, что вам также нужно устанавливать `Environment = HOME =` в пользовательском модуле. Также `multi-user.target` на самом деле не имеет смысла для пользовательского модуля (я сомневаюсь, что вы можете сделать его практически включенным таким образом). Вы, вероятно, хотите вместо этого `default.target`. Tom Yan 8 лет назад 0

Похожие вопросы