A little annoyance I always run into when configuring a new laptop is getting Gnome Display Manager to use Colemak on the login screen. For some reason, it’s impossible to configure the GDM keyboard layout unless there’s at least 2 users on the system. Otherwise Gnome Settings refuses to show the UI for it. I’m not sure why this weirdly hostile feature towards folks with alternative keyboard layouts on a single-user system exists in Gnome, but here we are. It’s also not something you can configure through the otherwise excellent Login Manager Settings.

Fortunately, it’s fixable with localectl, by setting the keymap and the X11 keymap (because for some reason GDM looks at the latter). However, when you set the X11 keymap, it’ll by default wipe the VC keymap which is not what we want.

The trick is to pass --no-convert when invoking localectl. So what you want is this:

$ sudo localectl set-keymap colemak
$ sudo localectl --no-convert set-x11-keymap us "" colemak

Now, when you call localectl, you should see the following output:

System Locale: LANG=en_GB.UTF-8
    VC Keymap: colemak
   X11 Layout: us
  X11 Variant: colemak

As always, if you want Colemak in early boot so you can type in your disk decryption password, remember to configure it in /etc/vconsole.conf and regenerate your initramfs afterwards. After the above localectl invocations, your /etc/vconsole.conf should look like:

KEYMAP=colemak
XKBLAYOUT=us
XKBVARIANT=colemak

That’s all.