пятница, 21 ноября 2014 г.

Автоматическое изменение цветовой температуры монитора.

Говорят,  что полезнее для глаз, когда цветовые тона монитора меняются в зависимости от времени суток.

Днем — свет холодный 5000-6000 К, ночью — тёплый 3400-4000.

Последнее время с этой задачей у меня отлична справлялась малюсенькая программка x.flux.

С приходом богомерзкого systemd конечно всё это сломалось, и вот только спустя несколько дней зоркий индеец заметил неладное.

Помучившись немного с unit файлом для x.flux я сдался. Как пишут мне смешные фанбои systemd в комментариях оно должно чего то упростить.
Но действительность как раз обратная.

Что то там не срабатывает, хотя и enviroment и всё остальное передаю.

Чудесный, человеко понятный лог говорит мне:
● flux-x11.service
   Loaded: loaded (/etc/systemd/system/flux-x11.service; enabled)
   Active: failed (Result: exit-code) since Пт 2014-11-21 22:38:00 YEKT; 2s ago
  Process: 26995 ExecStart=... (code=exited, status=1/FAILURE)
 Main PID: 26995 (code=exited, status=1/FAILURE)

Шах и мат.

 Environment=DISPLAY=:0
просто не работает.
Передать  enviroment в саму команду execstart невозможно.

Причём натолкнулся что оно (execstart) еще и кавычки неправильно раскрывает, попробуйте su user -l -c '/path/flux -g' , напишет что нет -g у su.


Красота, одиночный, двойные, неважно.

В интернетах есть советы да, клёвые.

Create ~/.config/systemd/user/flux.service.d/display.conf
Put the following in, replace DISPLAY value with whatever you actually need:
[Service]
Environment=DISPLAY=:0

И запускать как

systemctl --user start blabla
Жуть какая, юзеру в каталог? Какому? Зачем?
Но у меня всё равно не работает,
systemctl --user daemon-reload

Failed to get D-Bus connection: В соединении отказано
 
D-Bus ? omg Это откуда.

Сделал шаг назад, стал запускать xflux от root (ужас), просто для диагностики.

xflux[17606]: Couldn't open display (null)

Ну как же null ? Вот же:
 [Service]
Environment=DISPLAY=:0
Пробовал миллион написаний, кавычки, всё что только в голову пришло. Толку нет. X-server конечно запущен.
>echo $DISPLAY                                         
:0


Решил тем что стал запускать его, средствами своего wm, при его старте.

Ну, фанбои, расскажите, у меня наверно неправильный systemd?
Или я не так на него посмотрел?