Keyboard layout switching. Toggle between 2 of 3 languages.

 Let's say you have 3 languages on your linux machine: English, Russian and Belarusian. You frequently switch between EN and RU. Sometimes you write something in EN and BY. So you don't want to press Alt+Shift three times constantly, only when writing something in Belarusian.
I have made a followin script for that:


#!/bin/bash
current=`setxkbmap -query | grep layout|cut  -d ',' -f 2`
echo $current
if [ "$current" == "by" ]
then
    notify-send -t 500 -i keyboard "Keyboard layouts: US/RU"
    setxkbmap -model pc105 -layout us,ru -variant altgr-intl, -option grp:alt_shift_toggle
else
    notify-send -t 500 -i keyboard "Keyboard layouts: US/BY"
    setxkbmap -model pc105 -layout us,by -variant altgr-intl, -option grp:alt_shift_toggle
fi


Here I assume that Alt+Shift will be used to switch languages inside a group.
Save the scipt in /usr/local/bin as toggle_en_ru.sh (for example).
Add execution permissions. Like
sudo chmod +x /usr/local/bin/toggle_en_ru.sh

Go to keyboard layouts settings and add a new shortcut. Assign a shortcut for switching between languages groups. I decided to use Win+Space for language pairs (EN/RU <-> EN/BY) switching.


Sources and ideas from:
http://superuser.com/questions/505466/2-and-more-keyboard-layout-groups-in-linux-changed-by-different-hot-key


Querying existing configuration:
$setxkbmap -query



No comments:

Post a Comment