In my C/C++ program I want to know which language is user going to type. I mean the language whose ID is displayed in the corner of the task bar. Like EN or RU or ZH or FR or IT.
I know how to get the list of possible layout:
$ setxkbmap -query | grep layout
output:
layout: us,ru
But how to know which one is selected right now? (for the current window)
setxkbmap -print isn't helpful in this case, which was also my first idea. I have found a little tool, very easy to compile
sudo apt-get install git
mkdir -p `~/src`
cd `~/src`
git clone https://github.com/nonpop/xkblayout-state.git
cd xkblayout-state
make
Now you can run the command ./xkblayout-state to get the current layout, e.g.
./xkblayout-state print "%n"
German%
or list all installed layouts
./xkblayout-state print "%N"
German
English
English
In this case without a trailing %. I would have expected that, because I have not added a \n.