In the screenshot above it shows that I have 2 keyboard layouts: American English (us) and Ukrainian (ua) and currently the first one is active.
Display part is implemented by this script. It depends on xkblayout-state utility. Save this script and compiled version of xkblayout-state to your ~/bin/ directory.
In your ~/.config/i3status/config add "output_format = i3bar" line to general section:
general {
colors = true
interval = 5
output_format = i3bar
}
In ~/.config/i3/config add:
bar {
status_command ~/bin/i3status.sh
output primary
tray_output primary
}
and
exec_always "setxkbmap -layout us,ua -option 'grp:alt_space_toggle'"
This will allow you to switch keyboard with Alt+SPACE, and the indicator will display the current status.
So far, so good, but the problem is that the status bar is updated every 5 seconds. We would want keyboard layout indicator to update immediately. This could be done. It will require another command line utility: xkb-switch (available via apt on Ubuntu Linux). The idea is to implement switching via i3 hotkey, which will also trigger an instant status bar update. Here is a section of i3 config:
So far, so good, but the problem is that the status bar is updated every 5 seconds. We would want keyboard layout indicator to update immediately. This could be done. It will require another command line utility: xkb-switch (available via apt on Ubuntu Linux). The idea is to implement switching via i3 hotkey, which will also trigger an instant status bar update. Here is a section of i3 config:
exec_always "setxkbmap -layout us,ua"
bindsym Mod1+space exec "xkb-switch -n; pkill -x --signal=SIGUSR1 i3status"
We removed ALT+SPACE toggle option from setxkbmap, and implemented it as bindsym. Sending USR1 signal to i3status triggers the immediate update.
thank you!!
ReplyDeleteах если бы еще рассказали,как быть, если ты меняешь раскладку не альтом и пробелом, а alt+ shift
ReplyDelete