Решил, что хочу свой собственный аналог i3status. Как я понимаю, i3bar взаимодействует с программой, которая указана в status_command, следующим образом: каждая новая строка вывода программы заменяет предыдущую в статусном пространстве i3bar, и каждая строка там висит, пока не будет заменена. Ну и всё это происходит, пока программа не завершится, поэтому нужен бесконечный цикл.
Попробовал банальщину:
while true
do
date
sleep 3
done
Я хочу такую структуру: есть одна строка, в которой фигурируют переменные, и эта строка выводится в бесконечном цикле каждые n секунд (это просто), и дополнительно ещё в нескольких бесконечных фоновых циклах должно происходить обновление переменных.
Как я это вижу:
while true
do
VAR1=...
sleep 600
done &
while true
do
VAR2=...
sleep 60
done &
while true
do
VAR3=...
sleep 5
done &
while true
do
echo $VAR1 $VAR2 $VAR3
sleep 5
done
Но почему-то такая идея не сработала - переменная пустой получается. Вот буквально так и попробовал в командной строке:
while true
do
myvar="$(date)"
sleep 5
done &
echo $myvar #несколько раз через некоторое время
И ещё: Мб кто-нибудь в курсе, как именно в этом юзкейсе (статусная строка i3bar) получать всегда актуальное время, т.е. чтобы у меня минута на часах менялась не с задержкой в несколько секунд, а в соответствии с реальным ходом часов? Заранее спасибо.