, последнее обновление:

Простое отображение текущей погоды в 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

Справка по форматированию доступна тут.

Важно:

  1. Ordered List ItemЗамените yekaterinburg на название вашего города или локации!
  2. Знак % необходимо экранировать в юните дополнительным %, то есть у вас должно получиться %% перед буквой переменной!
  3. Пробел добавляется с помощью знака +.

Создаем таймер:

[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

Итог

Вы должны получить вывод текущей погоды в панельку:

Pasted image 20211208032536.png