You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Wrong language code for Norwegian keyboard layout #9489
Omarchy uses the wrong language code for Norwegian keyboard layout, so when installing Omarchy as a Norwegian user I end up with a US keyboard layout after installation.
In install/provisioning/setup-form.sh the Norwegian is listed as no-latin1 but it should simply be no
Your diagnosis is right, and I reproduced it on a worker VM built from the Omarchy ISO (systemd 261). The ISO installer and first-boot setup both persist the chosen keymap with systemd-firstboot --keymap=…, which derives XKBLAYOUT from systemd's /usr/share/systemd/kbd-model-map. That table has a row for no but none for no-latin1. With --keymap=no-latin1, /etc/vconsole.conf gets only KEYMAP=no-latin1, and default/hypr/input.lua:31 (and the SDDM greeter's default/sddm/hyprland.lua:34) fall back to us. With --keymap=no it also gets XKBLAYOUT=no, XKBMODEL=pc105, so the desktop and the login screen come up Norwegian.
Two open pull requests fix it with the same edit to install/provisioning/setup-form.sh, Norwegian|no-latin1 → Norwegian|no:
They conflict textually at the neighbouring Polish row, so only one can land as is. Each pull request is reviewed as its own item, and the maintainer will decide between them.
One trade-off for the maintainer: the no console keymap has no dead keys and no AltGr+E for é, which no-latin1 has. That only affects the text console, such as the installer and a TTY, and not the Hyprland desktop, which uses XKB's no layout. #7049 reports the same KEYMAP=no-latin1 symptom on a Norwegian install and also covers the fcitx5 profile, which neither pull request touches.
Codex Medium reviewed this as a second opinion. It agreed with the mechanism, which was already written down when it ran, so its independence isn't guaranteed. It contributed the console keymap difference and the conflict between the two pull requests, and I checked both. This is waiting on the maintainer.
Problem for me is that after install, changing keyboard layout through the ~/.config/hypr/input.lua file, setting it to just contain "no" does not work either. After omarchy-restart-shell it still stuck on "us". It is suddenly overridden by fcitx5 or something. At least it does NOT work.
@cseder I couldn't reproduce that on a stock install. On a worker VM built from the Omarchy ISO (omarchy 4.0.4, Hyprland 0.56.2, fcitx5 5.1.22, with the repository at a quattro revision whose keyboard and fcitx5 files are the same as today's), I added this line to ~/.config/hypr/input.lua:
hl.config({ input= { kb_layout="no" } })
Hyprland picked it up as soon as the file was saved. I then used a new virtual keyboard to press the three keys that are Ø, Æ and Å on a Norwegian keyboard, typing into a terminal, and they typed øæå. Without the line, the same keys typed ;'[. The result was the same with the omarchy-fcitx5 service running, stopped and restarted, and with fcitx5's own profile still set to keyboard-us. So fcitx5 does not override the layout set in input.lua. Omarchy ships nothing that does either: config/hypr/hyprland.lua:20 loads your input.lua after the defaults, and nothing later sets kb_layout.
Three things could explain what you saw:
omarchy-restart-shell only restarts the bar and shell, not Hyprland's config. If the change didn't take, run hyprctl reload and then hyprctl configerrors, which reports a Lua error in the file if there is one. A file that contains only no is not valid config. It needs the full hl.config line above.
hyprctl devices lists a keyboard named hl-virtual-keyboard… that belongs to fcitx5 and always reports us. It is not the keyboard you type on. Check the entry for your physical keyboard instead.
If none of that helps, please post your ~/.config/hypr/input.lua, the output of hyprctl configerrors, and hyprctl devices.
The installer bug this issue is about is unchanged. #9492 and #11056 both fix it, and choosing between them is up to the maintainer.
Codex Medium reviewed this as a second opinion. It agreed that nothing in the source overrides the layout, after the worker result above was already known, so its independence isn't guaranteed. It pointed out that omarchy-restart-shell doesn't reload Hyprland and that fcitx5's virtual keyboard reports us. I checked both in the source.
But was the reason for the bug chosen when the system was installed, choosing the wrongly named "no-latin1" keyboard layout at install time? Or could I have installed packages that interfere with the default way of setting up the keyboard-layout works, and maybe forces a refresh with the default values? I'll give it another go botty bot. I've heard that if I choose some similar layout (physically, like Danish 'dk') during install the normal way of editing the config isn't a problem...
@cseder Both, in a way, but they are separate problems. Choosing Norwegian at install time is why your desktop came up in us: that is this bug. It does not stop you changing the layout afterwards, though. Omarchy loads its own keyboard defaults first and your ~/.config/hypr/input.lua after them (config/hypr/hyprland.lua:14-20), so a valid kb_layout = "no" there wins whatever was chosen at install. Omarchy's fcitx5 config is set not to override the compositor's layout (config/fcitx5/conf/wayland.conf and xcb.conf: Allow Overriding System XKB Settings=False), and nothing else it ships writes kb_layout. The things that do replace input.lua are omarchy-refresh-hyprland and the upgrade to quattro, which both back it up and put the default back. A package that rewrote your fcitx5 config could change that setting, and I can't tell that from here.
Danish works for a different reason. systemd's keymap table, which the installer uses to turn the console keymap into a desktop layout, has a row for dk-latin1 and none for no-latin1. So installing as Danish writes XKBLAYOUT=dk, and installing as Norwegian writes no desktop layout at all, so the desktop falls back to us. Editing your config works the same either way.
The easiest fix on an installed system is Setup > Typing > Keyboard Layouts in the Omarchy menu (omarchy-setup-keyboard). It maps no-latin1 to no (default/input-methods/typing_setup.py:28-29), saves the choice, reloads Hyprland and checks the result. It changes the desktop only, not the console or the login screen.
There's also news for the installer bug. Since #14431 landed on quattro on 10 October, first-boot owner setup fills in the missing layout itself: if systemd-firstboot writes no XKBLAYOUT, it appends XKBLAYOUT=no for no-latin1 (bin/omarchy-provision-owner:644 and :684-689). The ISO's own installer lives in another repository, and I can't tell from here whether it does the same. #9492 and #11056 still fix the row in install/provisioning/setup-form.sh for every path, and choosing between them is up to the maintainer.
Everything above comes from reading the source at quattrod10031418. I didn't run anything new this time, because the worker test in my last comment already showed input.lua overriding the layout with fcitx5 running. Codex Medium reviewed it as a second opinion. My conclusions weren't in its prompt, though its independence isn't guaranteed. It found the first-boot fallback on its own and added the fcitx5 setting and the two reset paths, which I checked in the source. This is waiting on the maintainer.
Activity
omacom#9489 Use correct language code for Norwegian keyboard layout
omarchybot commentedon Oct 9, 2026
Your diagnosis is right, and I reproduced it on a worker VM built from the Omarchy ISO (systemd 261). The ISO installer and first-boot setup both persist the chosen keymap with
systemd-firstboot --keymap=…, which derivesXKBLAYOUTfrom systemd's/usr/share/systemd/kbd-model-map. That table has a row fornobut none forno-latin1. With--keymap=no-latin1,/etc/vconsole.confgets onlyKEYMAP=no-latin1, anddefault/hypr/input.lua:31(and the SDDM greeter'sdefault/sddm/hyprland.lua:34) fall back tous. With--keymap=noit also getsXKBLAYOUT=no,XKBMODEL=pc105, so the desktop and the login screen come up Norwegian.Two open pull requests fix it with the same edit to
install/provisioning/setup-form.sh,Norwegian|no-latin1→Norwegian|no:They conflict textually at the neighbouring Polish row, so only one can land as is. Each pull request is reviewed as its own item, and the maintainer will decide between them.
One trade-off for the maintainer: the
noconsole keymap has no dead keys and no AltGr+E foré, whichno-latin1has. That only affects the text console, such as the installer and a TTY, and not the Hyprland desktop, which uses XKB'snolayout. #7049 reports the sameKEYMAP=no-latin1symptom on a Norwegian install and also covers the fcitx5 profile, which neither pull request touches.Codex Medium reviewed this as a second opinion. It agreed with the mechanism, which was already written down when it ran, so its independence isn't guaranteed. It contributed the console keymap difference and the conflict between the two pull requests, and I checked both. This is waiting on the maintainer.
cseder commentedon Oct 10, 2026
Problem for me is that after install, changing keyboard layout through the
~/.config/hypr/input.lua file, setting it to just contain "no" does not work either. Afteromarchy-restart-shellit still stuck on "us". It is suddenly overridden by fcitx5 or something. At least it does NOT work.omarchybot commentedon Oct 10, 2026
@cseder I couldn't reproduce that on a stock install. On a worker VM built from the Omarchy ISO (omarchy 4.0.4, Hyprland 0.56.2, fcitx5 5.1.22, with the repository at a
quattrorevision whose keyboard and fcitx5 files are the same as today's), I added this line to~/.config/hypr/input.lua:Hyprland picked it up as soon as the file was saved. I then used a new virtual keyboard to press the three keys that are Ø, Æ and Å on a Norwegian keyboard, typing into a terminal, and they typed
øæå. Without the line, the same keys typed;'[. The result was the same with theomarchy-fcitx5service running, stopped and restarted, and with fcitx5's own profile still set tokeyboard-us. So fcitx5 does not override the layout set ininput.lua. Omarchy ships nothing that does either:config/hypr/hyprland.lua:20loads yourinput.luaafter the defaults, and nothing later setskb_layout.Three things could explain what you saw:
omarchy-restart-shellonly restarts the bar and shell, not Hyprland's config. If the change didn't take, runhyprctl reloadand thenhyprctl configerrors, which reports a Lua error in the file if there is one. A file that contains onlynois not valid config. It needs the fullhl.configline above.hyprctl deviceslists a keyboard namedhl-virtual-keyboard…that belongs to fcitx5 and always reportsus. It is not the keyboard you type on. Check the entry for your physical keyboard instead.~/.config/hypr/input.lua, the output ofhyprctl configerrors, andhyprctl devices.The installer bug this issue is about is unchanged. #9492 and #11056 both fix it, and choosing between them is up to the maintainer.
Codex Medium reviewed this as a second opinion. It agreed that nothing in the source overrides the layout, after the worker result above was already known, so its independence isn't guaranteed. It pointed out that
omarchy-restart-shelldoesn't reload Hyprland and that fcitx5's virtual keyboard reportsus. I checked both in the source.cseder commentedon Oct 12, 2026
But was the reason for the bug chosen when the system was installed, choosing the wrongly named "no-latin1" keyboard layout at install time? Or could I have installed packages that interfere with the default way of setting up the keyboard-layout works, and maybe forces a refresh with the default values? I'll give it another go botty bot. I've heard that if I choose some similar layout (physically, like Danish 'dk') during install the normal way of editing the config isn't a problem...
omarchybot commentedon Oct 13, 2026
@cseder Both, in a way, but they are separate problems. Choosing Norwegian at install time is why your desktop came up in
us: that is this bug. It does not stop you changing the layout afterwards, though. Omarchy loads its own keyboard defaults first and your~/.config/hypr/input.luaafter them (config/hypr/hyprland.lua:14-20), so a validkb_layout = "no"there wins whatever was chosen at install. Omarchy's fcitx5 config is set not to override the compositor's layout (config/fcitx5/conf/wayland.confandxcb.conf:Allow Overriding System XKB Settings=False), and nothing else it ships writeskb_layout. The things that do replaceinput.luaareomarchy-refresh-hyprlandand the upgrade to quattro, which both back it up and put the default back. A package that rewrote your fcitx5 config could change that setting, and I can't tell that from here.Danish works for a different reason. systemd's keymap table, which the installer uses to turn the console keymap into a desktop layout, has a row for
dk-latin1and none forno-latin1. So installing as Danish writesXKBLAYOUT=dk, and installing as Norwegian writes no desktop layout at all, so the desktop falls back tous. Editing your config works the same either way.The easiest fix on an installed system is Setup > Typing > Keyboard Layouts in the Omarchy menu (
omarchy-setup-keyboard). It mapsno-latin1tono(default/input-methods/typing_setup.py:28-29), saves the choice, reloads Hyprland and checks the result. It changes the desktop only, not the console or the login screen.There's also news for the installer bug. Since #14431 landed on
quattroon 10 October, first-boot owner setup fills in the missing layout itself: ifsystemd-firstbootwrites noXKBLAYOUT, it appendsXKBLAYOUT=noforno-latin1(bin/omarchy-provision-owner:644and:684-689). The ISO's own installer lives in another repository, and I can't tell from here whether it does the same. #9492 and #11056 still fix the row ininstall/provisioning/setup-form.shfor every path, and choosing between them is up to the maintainer.Everything above comes from reading the source at
quattrod10031418. I didn't run anything new this time, because the worker test in my last comment already showedinput.luaoverriding the layout with fcitx5 running. Codex Medium reviewed it as a second opinion. My conclusions weren't in its prompt, though its independence isn't guaranteed. It found the first-boot fallback on its own and added the fcitx5 setting and the two reset paths, which I checked in the source. This is waiting on the maintainer.