Below is some up-to-date info for the Unix page.


sudo keyboardctl -l us colemak

(Skip down to the steps the GNOME section below if you use GNOME)

localectl (for Fedora or other distro that has localectl)
To enable Colemak at the system level such as for the login screen and text mode, run the following command (note that the "us" setting will only work properly with U.S. keyboards, and that for others you may have to change pc104 to pc105 [or to pc101 for old us keyboards without super keys]):

sudo localectl set-x11-keymap us pc104 colemak

If the command was successful, /etc/X11/xorg.conf.d/00-keyboard.conf should now look something like:

# Written by systemd-localed(8), read by systemd-localed and Xorg. It's
# probably wise not to edit this file manually. Use localectl(1) to
# instruct systemd-localed to update it.
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us"
        Option "XkbModel" "pc104"
        Option "XkbVariant" "colemak"

The above may only affect the Login screen (display manager) and alternate (text mode) local TTYs. Proceed to the steps the GNOME section below if you use GNOME. Otherwise, if the above does not cause your desktop to continue using Colemak after login, you may have to run the following command at startup using your desktop environment's recommended method for running scripts at login (make sure it is executable):

setxkbmap us -variant colemak

GNOME may reset the keyboard layout to its own setting when switching between screen modes, including to/from the lock screen and Ctrl + F-key TTYs. The first line below forces GNOME to change the selected layout to Colemak, by temporarily limiting the list of input sources to only Colemak. The second line is optional, and re-adds the Qwerty layout as a secondary input so it is selectable from the language menu in the GNOME top bar. Do not use these commands if your keyboard is not a U.S. Keyboard (see also "GNOME GUI Method 1 or 2" below for others).

gsettings set org.gnome.desktop.input-sources sources "[('xkb','us+colemak')]"
gsettings set org.gnome.desktop.input-sources sources "[('xkb','us+colemak'),('xkb','us')]"

GUI method 1 (for GNOME only):
This method retains the ability to later toggle between layouts using the top bar's language icon (by affecting the same settings as the gsettings method above).

  • Settings, Region & Language

  • Under "Input Sources," click '+'

  • Click the "..." (more) button.

  • Choose "English (United States)," then from the resulting list choose "English (Colemak)"

  • Select the Colemak layout from the language menu ("'en" menu if English) that appears near the right side of the GNOME top bar.

GUI method 2 via ibus (for GNOME or other ibus-compatible window manager):
After using the command in the localectl section if it works on your distro after reboot, open the


application (such as by typing the command into a terminal window or the Alt F2 window in GNOME), go to "Advanced," "Use system keyboard layout" to cause GNOME and other ibus-compatible window managers to use the localectl setting.

Last edited by Poikilos (01-May-2019 02:35:55)