Как переключать раскладку клавиатуры в Linux: все способы от горячих клавиш до конфигурационных файлов

Если при нажатии Alt+Shift или Super+Space раскладка клавиатуры в Linux не меняется, проблема кроется либо в несконфигурированных комбинациях, либо в отсутствии установленных языковых пакетов. В 80% случаев это решается через Настройки → Региональные стандарты, но иногда требуется правка файлов /etc/default/keyboard или ~/.config/dconf/user. Например, в Ubuntu 22.04 по умолчанию может быть отключён индикатор языка в панели задач, из-за чего пользователи ошибочно считают, что переключение не работает.

В этой статье разберём все актуальные методы смены раскладки — от стандартных сочетаний клавиш до ручного редактирования конфигов для GNOME, KDE Plasma и Xfce. Отдельно остановимся на типичных ошибках: когда раскладка сбрасывается после перезагрузки, когда индикатор языка исчезает, или когда система игнорирует горячие клавиши. Если вы используете сервер без графического интерфейса, ниже есть раздел с командами для setxkbmap и loadkeys.

1. Стандартное переключение через горячие клавиши

Большинство дистрибутивов Linux по умолчанию используют комбинации Alt+Shift (как в Windows) или Super+Space (типично для GNOME). Однако эти сочетания могут конфликтовать с другими программами или просто не работать из-за сброса настроек. Чтобы проверить текущую комбинацию:

  • 🔹 Нажмите Super (клавиша с логотипом Windows), введите Настройки и выберите КлавиатураИсточники ввода.
  • 🔹 В KDE Plasma путь будет: Системные настройкиВвод устройствРаскладка клавиатуры.
  • 🔹 В Xfce откройте НастройкиКлавиатура → вкладка Макет.
  • 🔹 Если раздел отсутствует, значит языковые пакеты не установлены (см. раздел 3).

Если комбинация сбросилась, восстановите её:

  1. В GNOME: перейдите в Настройки → Клавиатура → Горячие клавиши, найдите Переключить источник ввода и назначьте новое сочетание.
  2. В KDE: в настройках раскладки нажмите ДополнительноНастроить вариантыПереключение групп.

2. Проблемы с индикатором языка в панели задач

Отсутствие индикатора раскладки — частая причина паники у новичков. В Ubuntu и Debian он может скрываться автоматически, если добавлен только один язык. Чтобы вернуть его:

  • 🔧 В GNOME: выполните в терминале:
    gsettings set org.gnome.desktop.input-sources show-all-sources true

    Затем перезагрузите сессию (Alt+F2rEnter).

  • 🔧 В KDE Plasma: кликните правой кнопкой по панели → Настроить панель → добавьте виджет Переключатель раскладки клавиатуры.
  • 🔧 В Xfce: установите пакет xfce4-xkb-plugin и добавьте его в панель через Настройки → Панель.

Критическая ошибка: если индикатор исчез после обновления GNOME Shell до версии 42+, попробуйте сбросить настройки dconf:

dconf reset -f /org/gnome/desktop/input-sources/

Это вернёт стандартные комбинации и отобразит все добавленные раскладки.

📊 Какую раскладку вы чаще всего используете в Linux?
Русскую и английскую
Только английскую
Другие (украинскую, немецкую и т.д.)
Использую Colemak/Dvorak

3. Установка новых раскладок и языковых пакетов

Если нужного языка нет в списке, его требуется доустановить. В Debian/Ubuntu это делается через пакеты language-pack-*, в Arch Linux — через localectl. Инструкции для популярных дистрибутивов:

ДистрибутивКоманда установкиКоманда для применения
Ubuntu/Debiansudo apt install language-pack-rusudo dpkg-reconfigure locales
Arch Linuxsudo pacman -S kde-l10n-ru (для KDE)localectl set-x11-keymap ru,us
Fedorasudo dnf install langpacks-rulocalectl set-keymap ru
OpenSUSEsudo zypper install yast2-trans-ruyast2 keyboard

После установки перезагрузите систему или примените изменения через терминал:

setxkbmap -layout us,ru -option grp:alt_shift_toggle

Здесь us,ru — список раскладок, а grp:alt_shift_toggle — метод переключения.

Обновите список пакетов (sudo apt update)|Проверьте текущие раскладки (localectl status)|Установите шрифты для языка (sudo apt install fonts-*)|Перезагрузите сессию после изменений-->

4. Ручное редактирование конфигурационных файлов

Если графический интерфейс недоступен (например, на сервере) или настройки сбрасываются после перезагрузки, придётся править конфиги вручную. Основные файлы:

  • 📄 /etc/default/keyboard — глобальные настройки для всех пользователей (влияет на tty и X11).
  • 📄 ~/.config/dconf/user — настройки GNOME (можно редактировать через dconf-editor).
  • 📄 ~/.xprofile или ~/.xinitrc — пользовательские скрипты для Xorg.

Пример редактирования /etc/default/keyboard для Ubuntu Server:

# Меняем строки на:

XKBMODEL="pc105"

XKBLAYOUT="us,ru"

XKBVARIANT=",winkey" # для раскладки "Windows" (ЙЦУКЕН)

XKBOPTIONS="grp:alt_shift_toggle,terminate:ctrl_alt_bksp"

После сохранения примените изменения:

sudo setupcon --force

или перезагрузите систему.

Что делать, если после редактирования конфигов раскладка сбрасывается?

Проверьте права на файлы (ls -la /etc/default/keyboard — должен быть владельцем root).

Убедитесь, что нет конфликтующих строк в ~/.bash_profile или ~/.profile.

В Systemd-системах попробуйте sudo systemctl restart systemd-localed.

Если используете Wayland, некоторые настройки setxkbmap могут игнорироваться — переключитесь на Xorg временно.

5. Переключение раскладки в терминале (без GUI)

На серверах или в tty (виртуальной консоли) горячие клавиши часто не работают. Здесь поможет утилита loadkeys (для консоли) или setxkbmap (для X11). Основные команды:

  • 🖥️ Посмотреть текущую раскладку:
    setxkbmap -query | grep layout
  • 🖥️ Сменить раскладку на русскую (одноразово):
    setxkbmap ru
  • 🖥️ Добавить две раскладки (US и RU) с переключением по Alt+Shift:
    setxkbmap -layout us,ru -option grp:alt_shift_toggle
  • 🖥️ Для консоли (tty), не X11:
    sudo loadkeys ru

Чтобы изменения применялись автоматически при входе в tty, добавьте строку в ~/.bashrc:

echo "loadkeys ru" >> ~/.bashrc
Важно: в некоторых дистрибутивах (например, Arch Linux) для tty требуется указать карту клавиш в /etc/vconsole.conf:
KEYMAP=ru

6. Решение типичных проблем

Если раскладка не переключается despite всех усилий, проверьте эти моменты:

⚠️ Внимание: В Ubuntu 22.04+ и Fedora 36+ с Wayland некоторые сочетания клавиш (например, Caps Lock для смены языка) могут не работать. Переключитесь на Xorg на экране входа в систему (шестерёнка рядом с кнопкой "Войти").
  • 🔍 Конфликт с IBus или Fcitx: Эти менеджеры ввода (популярны в азиатских локалях) могут блокировать стандартное переключение. Проверьте:
    ps aux | grep -E "ibus|fcitx"

    Если они запущены, убирайте их или настройте через im-config.

  • 🔍 Сброшенные настройки после обновления: В Ubuntu это лечится командой:
    sudo dpkg-reconfigure keyboard-configuration
  • 🔍 Не работает Alt+Shift в VMware или VirtualBox: Отключите в настройках ВМ опцию Auto-capture keyboard или используйте Host Key для освобождения клавиш.

Если проблема остаётся, соберите диагностическую информацию:

setxkbmap -print -verbose 10

localectl status

gsettings list-recursively org.gnome.desktop.input-sources

Ищите строки с xkb_options или sources — они покажут текущие настройки.

7. Альтернативные методы переключения

Если стандартные способы не устраивают, рассмотрите эти варианты:

  • 🎯 Xkb-switch: Утилита для переключения раскладок из скриптов. Установка:
    sudo apt install xkbswitch  # Debian/Ubuntu
    

    yay -S xkbswitch # Arch Linux (AUR)

    Пример использования в скрипте:

    xkbswitch -s us  # переключить на английскую
    

    xkbswitch -s ru # переключить на русскую

  • 🎯 Пользовательские скрипты: Создайте в ~/.local/bin/switch-layout файл со содержимым:
    #!/bin/bash
    

    current=$(setxkbmap -query | grep layout | awk '{print $2}')

    if [ "$current" = "us" ]; then

    setxkbmap ru

    else

    setxkbmap us

    fi

    Сделайте его исполняемым (chmod +x ~/.local/bin/switch-layout) и назначьте на горячую клавишу.

  • 🎯 KSuperKey: Для KDE Plasma позволяет переназначить клавишу Super (Win) на переключение раскладки. Установите через:
    sudo apt install ksuperkey

Для любителей минимализма подойдёт dmenu или rofi с кастомными скриптами. Например, этот код выведет меню выбора раскладки:

#!/bin/bash

layout=$(echo -e "us\nru" | rofi -dmenu -p "Выберите раскладку")

setxkbmap $layout

Как привязать скрипт к горячей клавише в GNOME?

Откройте Настройки → Клавиатура → Горячие клавиши → Пользовательские сочетания.

Нажмите "+", укажите путь к скрипту (например, /home/user/.local/bin/switch-layout).

Назначьте комбинацию, например, Super+Tab.

FAQ: Частые вопросы

Почему после обновления системы сбросились горячие клавиши для переключения раскладки?

Это типичная проблема при обновлении GNOME или KDE. В большинстве случаев помогает сброс настроек через:

gsettings reset org.gnome.desktop.input-sources xkb-options

Или переустановка пакета с языковыми настройками:

sudo apt install --reinstall gnome-control-center

Если используете KDE, проверьте целостность конфигов:

kbuildsycoca5 --noincremental

Как сделать, чтобы раскладка автоматически переключалась в зависимости от окна (например, в Telegram — русская, в терминале — английская)?

Для этого нужен менеджер окон с поддержкой правил, например, i3 или AwesomeWM. В i3 добавьте в конфиг (~/.config/i3/config):

for_window [class="Telegram"] exec --no-startup-id setxkbmap ru

for_window [class="URxvt"] exec --no-startup-id setxkbmap us

Для GNOME/KDE можно использовать скрипты с xdotool, которые отслеживают активное окно:

#!/bin/bash

while true; do

active_window=$(xdotool getactivewindow getwindowclassname)

if [[ $active_window == "telegram" ]]; then

setxkbmap ru

elif [[ $active_window == "terminal" ]]; then

setxkbmap us

fi

sleep 1

done

Внимание: такой скрипт потребляет ресурсы, запускайте его через nohup.

Можно ли использовать Caps Lock для переключения раскладки?

Да, но это требует правки xkb-опций. Добавьте в /etc/default/keyboard строку:

XKBOPTIONS="grp:caps_toggle"

Или примените временно:

setxkbmap -option grp:caps_toggle

В GNOME это можно сделать через GUI: Настройки → Клавиатура → Параметры раскладки → Caps Lock как переключатель группы.

Как добавить раскладку Colemak или Dvorak?

Эти раскладки устанавливаются как варианты (variant) стандартных макетов. Например, для Colemak:

setxkbmap -layout us -variant colemak

Чтобы сделать её постоянной, добавьте в /etc/default/keyboard:

XKBVARIANT="colemak"

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

localectl list-x11-keymap-variants us

Почему в некоторых программах (например, в играх или Wine) не работает переключение раскладки?

Это связано с тем, что приложения могут захватывать клавиатуру в обход системы. Решения:

  • 🎮 Для Wine: добавьте в winecfg (на вкладке "Библиотеки") переопределение для imm32 и user32 (установите native,builtin).
  • 🎮 Для игр: попробуйте запустить игру в оконном режиме или используйте xdotool для эмуляции нажатий.
  • 🎮 В Steam: отключите в настройках запуска параметр -nojoy (он может блокировать клавиатурные события).

Альтернатива — использовать AutoHotkey для Windows-игр через Proton.