pztrn's wiki

Простое отображение текущей погоды в i3status

Существует различное количество сторонних приложений, которые можно встроить в i3status через оборачивание вывода оного скриптом и добавлением выхлопа этого приложения в какую-либо часть выхлопа i3status. Меня подобные способы не устроили и я решил сделать свое, которое требует только наличия `curl`.

У i3status имеется возможность получить содержимое файла и вывести его, чем мы и воспользуемся. Получать погоду будем с помощью curl с сайта https://wttr.in, писать полученную информацию в файл, который будет использоваться для вывода в i3status.

Для работы необходимо включить linger в logind!

systemd

Создаем юнит:

/home/USERNAME/.config/systemd/wttr.service
[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. Пробел добавляется с помощью знака +.

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

/home/USERNAME/.config/systemd/wttr.timer
[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

Итог

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

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International