How do I change keyboards from the command line?
How I change keyboard layouts from the command-line? For example, I want to switch from English to Hebrew. I’m able to do it from lightdm with the little icon in the corner of my screen.
11 Answers 11
You can find all the different keymaps in the following locations:
/usr/share/keymaps/i386/ /usr/share/kbd/keymaps/i386/ /usr/share/X11/xkb/symbols/
To change the keyboard layout (e.g. to Spanish) in the Linux command line, type the following command:
To make these changes system wide, assuming you’re using Ubuntu, you can use the following:
sudo dpkg-reconfigure console-setup
This has effect on tty1, tty2, etc, but no effect in X. I want to do it in X, the same way that the keyboard switcher in lightdm works.
English to Hebrew and vise versa with Alt + Shift
setxkbmap -option grp:alt_shift_toggle us,il
You can see all locale alias with this command
More info about setxkbmap in manual
How do you find the Dvorak keyboard using this? /etc/locale.alias seems to contain a list of locales (languages), not keyboard layouts.
Ubuntu 13.10 or Later
This works better then setxkbmap with Gnome/Unity keyboard layout indicator.
gsettings set org.gnome.desktop.input-sources current 0
0 is the layout index (0 default or top layout). Layouts indexed starting from 0.
For easy use, create an alias.
@hugomg, right now I don’t have access yet to newer gnome. but you may try using dconf-editor tool and check /org/gnome/desktop/ . they may just rename it.
setxkbmap us,il -option "lv3:ralt_alt,grp:alt_shift_toggle"
this command enable you toggle between English and Hebrew only through by right alt + shift and rescue you from left alt + shift .
There seems to be no standard CLI tool, but xkb-switch is a small open-source tool to do the job. Just tested it with Ubuntu 16.04.4 LTS and it works flawelessly.
$ xkb-switch # display current group ua $ xkb-switch -l # list groups us ua $ xkb-switch -s us # switch to a named group $
This looks better than the other solutions because setxkbmap ruins all options, and setxkbmap -layout , while it preserves the options, it still fails to change the taskbar indicator nor the grp_led if set.
Caveat
If your ~/.config/kxkbrc uses LayoutLoopCount (e.g. it is set to less than the total number of layouts listed in LayoutList ), like this:
LayoutList=us,ua,th,de LayoutLoopCount=2 Options=grp_led:scroll,grp:rwin_switch,compose:menu,lv3:ralt_switch, nbsp:level2,grp:rctrl_toggle,misc:typo
then xkb-switch would only let you switch between the layouts in current group.
Invoke at screen lock
Right before my screensaver turns on, I want to switch to English so that it will be easy to type my password when I get back in.
This was precisely my goal, so here’s the answer:
To do that, you only need wrap it into a script hooking to dbus-monitor like discussed here.
Using gsettings in 18.04+ with Gnome, you can both add keyboard layouts and switch between them from the command line or from the keyboard layout switcher on the desktop.
- Present keyboard layouts and options:
$ gsettings list-recursively org.gnome.desktop.input-sources org.gnome.desktop.input-sources show-all-sources false org.gnome.desktop.input-sources xkb-options ['terminate:ctrl_alt_bksp'] org.gnome.desktop.input-sources per-window false org.gnome.desktop.input-sources current uint32 1 org.gnome.desktop.input-sources mru-sources @a(ss) [] org.gnome.desktop.input-sources sources [('xkb', 'es'), ('xkb', 'no')]
$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'no'),('xkb','gr')]" $ gsettings get org.gnome.desktop.input-sources sources [('xkb', 'es'), ('xkb', 'no'), ('xkb', 'gr')]
$ gsettings set org.gnome.desktop.input-sources current 1
cat //usr/share/X11/xkb/rules/base.lst
$ gsettings get org.gnome.desktop.wm.keybindings switch-input-source ['space']
A new shortcut can be set by using gsetting set , but take care not to use a shortcut that is already in use. To list all shortcuts in use:
$ gsettings list-recursively org.gnome.desktop.wm.keybindings org.gnome.desktop.wm.keybindings cycle-windows-backward ['Escape'] org.gnome.desktop.wm.keybindings minimize ['h'] org.gnome.desktop.wm.keybindings move-to-workspace-7 @as [] org.gnome.desktop.wm.keybindings move-to-workspace-8 @as [] org.gnome.desktop.wm.keybindings move-to-workspace-9 @as [] org.gnome.desktop.wm.keybindings move-to-monitor-left ['Left'] .
This part doesn’t seem to work on Ubuntu 23.04 with Wayland: gsettings set org.gnome.desktop.input-sources current 1
For Ubuntu 18.04 + Gnome the other answers did not work for me, but this did:
gdbus call --session --dest org.gnome.Shell \ --object-path /org/gnome/Shell \ --method org.gnome.Shell.Eval \ "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
The argument in «inputSources[0]» is the index of the keyboard layout, the same as for gsettings solution.
Thanks. Small nit-pick, there is to such thing as «Ubuntu 22», you either meant «Ubuntu 22.04» (released in April 2022) or «Ubuntu 22.10» (released in October 2022). The version numbers are confusing, but they refer to the year and month of the date of release.
I was able to find the best and most stable combination of xkb-switch , setxkbmap and ibus . IBus allows pinyin input and xkb-switch is stable, while setxkbmap returns back set of keyboard layouts.
This is important when switching directly to a language, for example Shift + Alt + 1 . 4 . Why not using only IBus? It gets stuck all the time because it requires a restart to bring keyboard layouts back to life after switching to non-latin keyboard layout. At least in FireFox, see I need to exit and restart ibus-daemon to make ibus-chewing work. #2319.
Disclaimer: Tested on OpenSuse Leap 15.3 xfce4 and xkb-switch is compiled from source
To make this work you should make script files with those commands and assign keyboard shortcuts to run them. Also you might want to disable Alt+Shift shortcut in keyboard switch settings to remove unexpected behavior.
So, here are my set of commands:
Shift + Alt + 1 — switch to English:
killall ibus-daemon setxkbmap us,ru,pt xkb-switch -s us
Shift + Alt + 2 — switch to Russian:
killall ibus-daemon setxkbmap us,ru,pt xkb-switch -s ru
Shift + Alt + 3 — switch to Chinese Mandarin Pinyin:
ibus-daemon -d ibus reset-config gsettings set org.freedesktop.ibus.general preload-engines "['libpinyin']" setxkbmap us,ru,pt xkb-switch -s us ibus engine libpinyin
Shift + Alt + 4 — switch to Portugese:
killall ibus-daemon setxkbmap us,ru,pt xkb-switch -s pt
Also assign the following script to run on system autostart.
Переключение раскладки Linux Mint
За каждой клавишей на клавиатуре закреплён определённый знак — буква, цифра или специальный символ. Соответствие этих знаков клавишам называется раскладкой. Следует заметить, что, говоря слово «раскладка», чаще всего подразумевают язык, но это не тождественные понятия. У некоторых языков есть только один вариант раскладки, у других — несколько. На компьютере могут быть установлены сразу две или три раскладки для одного и того же языка.
Пользователи Linux имеют возможность по своему усмотрению добавлять в систему языки и раскладки, а также настраивать варианты переключения между ними. Сегодня рассмотрим как переключать раскладку в linux mint, а также как добавить новый язык в систему.
Как добавить раскладку в Linux Mint
По умолчанию в Linux Mint Cinnamon установлен только один язык — английский. Во время установки ОС на свой компьютер вы можете выбрать вторую раскладку — например, русскую. То есть, во время первого запуска системы у вас будут доступны для использования уже два языка. Иногда этого недостаточно, но если возникает потребность в установке дополнительных раскладок, то сделать это можно в любой момент. Таким образом важно не только понять как поменять язык в linux mint на один из уже установленных, но и как добавить новый язык.
Для управления клавиатурой (и языками в том числе) предусмотрена утилита keyboard-configuration. Запустить её можно двумя способами:
- Пройдя по адресу Меню → Параметры → Клавиатура.
- Нажав на значок языка на Панели задач и выбрав в открывшемся меню пункт Настройки клавиатуры.
Какой бы из этих способов вы ни выбрали, для настройки языка нужно перейти во вкладку Раскладки.
Список всех установленных раскладок находится в левой части окна. Чтобы добавить новую, нажмите на знак + внизу окна. Откроется новое окно с перечнем всех доступных языков.
Найдите в списке нужный язык, выделите его мышкой и нажмите кнопку Добавить. Чтобы не пришлось перелистывать весь список, можно ввести название языка в строку поиска.
А чтобы сразу же увидеть как выглядит выбранная раскладка нажмите кнопку Предпросмотр.
После добавления новая раскладка сразу же появится с списке установленных и будет доступна к использованию. При желании вы можете перетасовать список, выстроив языки в удобном вам порядке. Это можно сделать при помощи кнопок со стрелочками, расположенных внизу окна. Там же есть и кнопка со знаком минус (—) — нажатие на неё убирает выделенную раскладку из перечня доступных.
В правой части окна Раскладки есть несколько дополнительных опций. Первая из них — Включить менее распространённые раскладки в список для выбора. Если вам нужна какая-то уж очень экзотическая и редко используемая раскладка, отметьте эту опцию флажком.
Если же вы работаете с двумя или тремя языками, поочерёдно переключаясь между окнами — например, пишете текст в редакторе на русском, переписываетесь в мессенджере на английском и что-то ищете в браузере на китайском, вам пригодится вторая опция — Разрешить отдельные раскладки для каждого окна. По умолчанию для всех окон используется одна раскладка. Далее мы более подробно разберемся как переключать раскладку в Linux Mint.
Переключение раскладки в Linux Mint
По умолчанию в Linux Mint Cinnamon не назначены горячие клавиши для переключения раскладок. Перейти от использования одного языка к использованию другого можно, кликнув на языковой значок (флаг или буквенное обозначение) на Панели задач. Однако, чтобы не совершать лишние действия, стоит всё же настроить комбинацию клавиш. Например, многие привыкли выполнять переключение раскладки клавиатуры в linux mint с помощью Alt + Shift или Ctrl+Shift.
На уже знакомой вам вкладке Раскладки внизу окна есть кнопка Параметры. При нажатии на неё открывается окно с дополнительными настройками. Выберите из списка пункт Переключение на другую раскладку и нажмите на него — появится перечень доступных для установки сочетаний клавиш.
Отметьте флажком подходящий вариант и нажмите Закрыть. Клавиши смены раскладки linux mint заработают сразу же после этого действия, нет необходимости в перезагрузке компьютера.
Впрочем, может случиться так, что при попытке открыть Параметры раскладки клавиатуры вы каждый раз будете сталкиваться с багом системы, когда окно настроек попросту закрывается. Вариантов решения проблемы два — либо заново переустановить ОС, либо найти в Менеджере программ утилиту keyboard-configuration и удалить её, а потом снова установить.
В процессе установки на экране появится окно с настройками, где есть возможность выбрать комбинацию клавиш для переключения раскладки.
Каждый раз, когда вы захотите изменить сочетание клавиш, удаление и установку утилиты придётся повторять.
Выводы
Настройка языков и раскладок в Linux Mint Cinnamon достаточно гибкая, не занимает много времени и не требует специальных знаний. Теперь вы точно знаете как настроить переключение раскладки Linux Mint. Если у вас остались вопросы по теме статьи, задавайте их в комментариях.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.