get current active keyboard layout(language) in linux
keyboard-layout, linux
Solution
`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`.
Problem
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)