Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
8
rated 0 times [  8] [ 0]  / answers: 1 / hits: 15495  / 1 Year ago, sun, april 16, 2023, 8:45:25

I have a fresh i3 version 4.11 (2015-09-30, branch "4.11") installed over my Ubuntu 16.04.
Actually I need to use 3 different keyboard layouts for example en, fr and ru with the possibility to switch between them by using some keyboard shortcut.



I have tried some methods but neither was completely satisfactory:




  • Using ibus-daemon almost works but I cannot use any shortcuts for change layouts.

  • My actual setup is configuring setxkbmap when I start i3:



    exec --no-startup-id "setxkbmap -model pc105 -layout fr,us,ru -option grp:alt_shift_toggle"



So I can switch between my layouts but sometimes I have no idea which layout I am actually in use because there is not any tray icon for that in this setup.



For conclusion my needs are:




  • Be able to switch layouts by pressing some hotkeys.


  • Some indications(preferably, tray icon) for layout I am actually in use.




Is there some work around about this? Or maybe there is some i3 plugin tha t actually does the job? Some third software?


More From » 16.04

 Answers
0

You can do it with xkblayout-state and i3blocks



For xkblayout-state:



I assume you have git.



~$ git clone https://github.com/nonpop/xkblayout-state.git
~$ cd xkblayout-state
~$ make


Now copy compiled xkblayout-state somewhere in your PATH, for example:



~$ `cp xkblayout-state /usr/local/bin/`


Now for i3blocks:



sudo apt-get install i3blocks
cp /etc/i3blocks.conf ~/.i3blocks.conf


In your i3 config file (~/.config/i3/config) replace i3status with i3blocks,



# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3blocks
tray_output primary
}
# in case of layout change event - send signal to i3blocks
bindsym ISO_Next_Group exec pkill -RTMIN+1 i3blocks


And restart i3wm (mod+shift+R), you should now see that i3blocks appeared.



Open your ~/.i3blocks.conf and add somewhere (for example, right above [VOLUME] section):



#Language indicator
[language]
#label=LNG
command=xkblayout-state print %s | awk '{print toupper($0)}'
interval=once
signal=1


Again, restart i3wm (mod+shift+R), and you should see your locales in status bar, switching.



Check out xkblayout-state --help, there is many options for different output.


[#13842] Monday, April 17, 2023, 1 Year  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
rieency

Total Points: 299
Total Questions: 116
Total Answers: 111

Location: Wales
Member since Tue, Dec 14, 2021
2 Years ago
;