i3status, как добавить раскладку языка в статус бар
Сегодня искал решение, как добавить раскладку в статус бар. Потратил время, поэтому решил поделиться…
Я использую для переключение раскладки setxkbmap. Для отображения раскладки xkblayout-state (AUR). У меня конфиг для i3status в формате JSON.
Создаем скрипт add-lang-layout-i3status:
#!/bin/sh
lang=""
update_lang() {
lang=$(xkblayout-state print "%s")
}
i3status | (read line && echo "$line" && read line && echo "$line" && read line && echo "$line" && update_lang && while :
do
read line
update_lang
echo ",[{\"full_text\":\"${lang}\" },${line#,\[}" || exit 1
done)
Размещаем где-то в $PATH, у меня он в /usr/local/bin, делаем его исполняемым.
И в конфиг ~/.config/i3/conf добавляем переключение раскладки:
exec --no-startup-id setxkbmap -model 105 -layout us,ru -option grp:ctrl_shift_toggle
и в секции bar:
bar {
status_command exec add-lang-layout-i3status
}
Жмем CTRL+SHIFT+C. Должно работать…