Простое отображение текущей погоды в i3status
Существует различное количество сторонних приложений, которые можно встроить в i3status через оборачивание вывода оного скриптом и добавлением выхлопа этого приложения в какую-либо часть выхлопа i3status. Меня подобные способы не устроили и я решил сделать свое, которое требует только наличия curl
.
У i3status имеется возможность получить содержимое файла и вывести его, чем мы и воспользуемся. Получать погоду будем с помощью curl с сайта https://wttr.in, писать полученную информацию в файл, который будет использоваться для вывода в i3status.
Для работы необходимо включить linger в logind!
Systemd
Создаем юнит:
[Unit]
Description=Get weather from wttr
After=network.target
[Service]
ExecStart=curl -H "Accept-Language: ru" "https://wttr.in/yekaterinburg?T&format=%%C+%%t+(FL:+%%f)" -o /home/pztrn/.cache/wttr
Type=simple
Справка по форматированию доступна тут.
Важно:
- Ordered List ItemЗамените
yekaterinburg
на название вашего города или локации! - Знак
%
необходимо экранировать в юните дополнительным%
, то есть у вас должно получиться%%
перед буквой переменной! - Пробел добавляется с помощью знака
+
.
Создаем таймер:
[Unit]
Description=Get weather every 15 minutes
[Timer]
OnBootSec=1min
OnUnitActiveSec=15m
[Install]
WantedBy=timers.target
I3status
В конфигурацию i3status (~/.config/i3status/config
по-умолчанию) добавляем следующие строки:
order += "read_file weather"
...
read_file weather {
path = "/home/pztrn/.cache/wttr"
}
После чего необходимо перезапустить i3:
i3-msg restart
Итог
Вы должны получить вывод текущей погоды в панельку: