Как получить текущую раскладку клавиатуры в Ubuntu в формате, таком как ‘us’?

Вопрос или проблема

Я использую менеджер окон i3, Ubuntu 20.04.
Я выполнил следующие команды, чтобы настроить две раскладки клавиатуры:

setxkbmap -layout us,tr
setxkbmap -option 'grp:alt_shift_toggle'

Это позволяет мне переключаться между двумя раскладками клавиатуры us и tr с помощью alt-shift.
Я хочу получить короткий вывод, us или tr, из командной строки, который скажет мне, на какой раскладке клавиатуры я сейчас нахожусь.

Следующая команда дает мне us в качестве вывода, даже когда я переключился на tr.
setxkbmap -print | awk -F"+" '/xkb_symbols/ {print $2}'

Полный вывод setxkbmap -print приведен ниже:

xkb_keymap {                                                                                           
        xkb_keycodes  { include "evdev+aliases(qwerty)" };                                             
        xkb_types     { include "complete"      };                                                     
        xkb_compat    { include "complete"      };                                                     
        xkb_symbols   { include "pc+us+tr:2+inet(evdev)+group(alt_shift_toggle)+capslock(escape)"};    
        xkb_geometry  { include "pc(pc105)"     };                                                     
};                                                                                                     

Как я могу получить текущую раскладку клавиатуры в командной строке?

Вы можете использовать
xkblayout-state:

xkblayout-state – это небольшая командная программа для получения/установки текущей раскладки клавиатуры XKB.

Команда для использования:

xkblayout-state print "%s"

Под gnome и xwayland xkblayout-state не работает, вместо этого вы можете использовать что-то вроде:

gsettings get org.gnome.desktop.input-sources mru-sources

И тот, что находится в начале списка, – это ваша текущая раскладка.

Ответ или решение

Чтобы получить текущую раскладку клавиатуры в Ubuntu 20.04 с установленным оконным менеджером i3, можно использовать несколько подходов. Ваша конфигурация настроена на использование двух раскладок – us и tr, что подразумевает возможность их смены с помощью сочетания клавиш Alt+Shift. Однако, как вы уже заметили, команда setxkbmap -print | awk -F"+" '/xkb_symbols/ {print $2}' может неверно отражать текущее состояние раскладки.

Способы получения текущей раскладки клавиатуры

  1. Использование утилиты xkblayout-state:
    Утилита xkblayout-state — это удобный командный инструмент, который позволяет получать и устанавливать текущую раскладку клавиатуры. Чтобы установить xkblayout-state, выполните следующую команду в терминале:

    sudo apt install xkblayout-state

    После установки вам просто нужно выполнить команду:

    xkblayout-state print "%s"

    Эта команда выведет краткую строку, например us или tr, что является наиболее удобным способом получения информации о текущей раскладке.

  2. Прямой запрос к setxkbmap с использованием grep и cut:
    Если по какой-то причине вы не можете установить xkblayout-state, вы можете использовать комбинацию команд setxkbmap, grep и cut. Выполните следующую команду в терминале:

    setxkbmap -print | grep -oP '(?<=include "pc\+us\+tr:)[0-9]+' | head -n 1

    Данная команда ищет в строке xkb_symbols нужный паттерн и выводит номер текущей раскладки. Обратите внимание, что этот метод тоже имеет свои ограничения.

  3. Мониторинг через gsettings (только для GNOME):
    Если вы хотите использовать метод, основанный на GNOME, можно использовать следующую команду:

    gsettings get org.gnome.desktop.input-sources mru-sources

    В этом случае необходимо быть осторожным, так как данный метод может не работать под i3, ориентированном на пользовательский интерфейс без GNOME.

Заключение

Из вышеприведённых методов рекомендуем использовать xkblayout-state как наиболее надежный и простой способ для получения текущей раскладки клавиатуры в разных средах. Убедитесь, что утилита установлена, и используйте команду вывода.

Эти методы подойдут как для обычных пользователей, так и для системных администраторов, уверенных в своей компетентности в Linux. Если вам нужна дополнительная информация или функциональность, пожалуйста, не стесняйтесь задавать дополнительные вопросы.

Оцените материал
Добавить комментарий

Капча загружается...