January 18, 2023

Определить текущую раскладку BASH (linux)


За управление раскладкой в консоли отвечает команда setxkbmap, а при запуске с параметром -print она показывает текущее положение дел.

$ setxkbmap -print

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete+ledscroll(group_lock)"    };
    xkb_symbols   { include "pc+ru+us:2+inet(evdev)+compose(caps)"  };
    xkb_geometry  { include "pc(pc105)" };
};

Если немного поиграться, можно достать вот эти вот ru:

$ setxkbmap -print | sed -n 's#xkb_symbols[^"]*"\([^"]*\)".*$#\1#p' | awk -F+ '{print $2}'
ru

При переключении раскладки сменится на us.