Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-1858GitHub issuePublicReceived

SDDM greeter always uses US keyboard layout, ignoring the system layout

Reported by g-desoutter · filed Aug 14, 2026Closed upstream on 2026-10-04 by the merge of PR #6896 (closed by dhh). GitHub close reason: completed.

Received and recorded verbatim. Nothing has been checked yet.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
Not yet mapped to any requirement or component.
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.

Original report

SDDM greeter always uses US keyboard layout, ignoring the system layoutrevision 1 · captured 2026-09-28 21:29 UTC via poll

System details

Omarchy 4.0.0-1, i5-12600K, RTX 5070,Keyboard layout: fr

What's wrong?

Describe the issue

The SDDM greeter always uses the US/QWERTY layout, regardless of the system keyboard layout. On a FR/AZERTY system, the login password field is QWERTY, so any password containing layout-sensitive characters cannot be typed. There is no layout indicator or switcher on the greeter.

Note: the system XKB configuration is already correct, so localectl set-x11-keymap is not the fix. Hyprland ignores /etc/X11/xorg.conf.d/00-keyboard.conf entirely — it only honours input { kb_layout } in its own config — which is why the greeter is wrong while the rest of the system is right:

$ localectl status
  VC Keymap: fr
  X11 Layout: fr
  X11 Model: pc105

$ cat /etc/X11/xorg.conf.d/00-keyboard.conf
  Option "XkbLayout" "fr"
  Option "XkbModel" "pc105"

$ hyprctl getoption input:kb_layout
  str: fr

Cause: the greeter runs inside its own Hyprland instance.

# /etc/sddm.conf.d/10-wayland.conf
[Wayland]
CompositorCommand=start-hyprland -- --config /usr/share/sddm/hyprland.conf

Neither /usr/share/sddm/hyprland.conf nor the newer /usr/share/sddm/hyprland.lua declares an input block — both only set misc{} and animations{}. With no kb_layout, Hyprland falls back to its built-in default, us.

Confirmed: pointing CompositorCommand at a config that sources the shipped one and adds input { kb_layout = fr } makes the greeter AZERTY. The fix therefore belongs in the greeter's compositor config.

Steps to recreate

  1. Install with a non-US layout (FR here) and full-disk encryption.
  2. Disable autologin by moving /etc/sddm.conf.d/autologin.conf out of the directory. SDDM reads every file in conf.d regardless of extension, so renaming it to .disabled in place is not enough — it is still parsed.
  3. Reboot.
  4. The LUKS decryption prompt is correctly AZERTY (vconsole KEYMAP=fr).
  5. Seconds later, on the same physical keyboard, the SDDM greeter is US/QWERTY.

Both prompts appear during a single boot, so this is not a logout or session-restart problem: the greeter is always US. With autologin enabled (the default) the greeter is skipped at boot and only appears after a logout, which is why the issue is easy to miss.

Expected

The greeter's Hyprland config should carry the system keyboard layout (kb_layout, kb_variant, kb_options), so the greeter matches both the LUKS prompt and the user session.

Workaround

Verified working — the greeter is AZERTY after a logout with this in place. The layout is hardcoded here; a proper fix would detect the system layout, as is already done for ~/.config/hypr/input.conf.

# /etc/sddm/hyprland-kbd.conf
source = /usr/share/sddm/hyprland.conf

input {
    kb_layout = fr
    kb_model = pc105
}
# /etc/sddm.conf.d/99-keyboard.conf
[Wayland]
CompositorCommand=start-hyprland -- --config /etc/sddm/hyprland-kbd.conf

Side notes from the 4.0.0 update path

Updated 3.8.2 to 4.0.0 with omarchy update, not a fresh ISO install. Neither of these causes the layout bug, but both surfaced while investigating.

  • 4.0.0 ships /usr/share/sddm/hyprland.lua and a 10-wayland.conf.pacnew pointing at it, while the active 10-wayland.conf still points at hyprland.conf. Since SDDM's conf.d reader does not filter on the .conf extension, the .pacnew is parsed alongside the real file and both set CompositorCommand with different values.
  • /usr/share/sddm/hyprland.conf is not owned by any package (pacman -Qo returns "No package owns"), so it lingers after the update.

Related

#5754 — same class of problem on hyprlock after the 3.8.0 update: auth surfaces do not inherit the system keyboard layout.

#6878 — Quattro upgrade drops non-US layout in the Hyprland session when vconsole.conf has only KEYMAP (falls back to us via vconsole.XKBLAYOUT or "us"). Different component and different cause: my session is correct and my vconsole.conf does contain XKBLAYOUT=fr. The greeter's compositor config doesn't read vconsole at all — it simply has no input block.

omarchy-debug

omarchy-debug
Date: Fri Aug 14 08:45:00 PM CEST 2026
Hostname: HOST
Omarchy Package: omarchy 4.0.0-1
=========================================
SYSTEM INFORMATION
=========================================
System:
  Kernel: 7.1.8-arch1-3 arch: x86_64 bits: 64 compiler: gcc v: 16.2.1
    parameters: resume=/dev/mapper/root quiet splash loglevel=0
    systemd.show_status=false rd.udev.log_level=0 vt.global_cursor_default=0
    cryptdevice=PARTUUID=<redacted>:root root=/dev/mapper/root
    zswap.enabled=0 rootflags=subvol=@ rw rootfstype=btrfs
  Desktop: Hyprland v: 0.56.2 vt: 3 dm: SDDM Distro: Omarchy
Machine:
  Type: Desktop Mobo: Micro-Star model: PRO B760-P WIFI DDR4 (MS-7D98) v: 1.0
    Firmware: UEFI vendor: American Megatrends LLC. v: 1.F0 date: 08/07/2025
CPU:
  Info: model: 12th Gen Intel Core i5-12600K arch: Alder Lake
    cores: 10 threads: 16
Graphics:
  Device-1: Intel Alder Lake-S GT1 [UHD Graphics 770] driver: i915
  Device-2: NVIDIA GB205 [GeForce RTX 5070] driver: nvidia v: 610.57.04
  Display: wayland server: X.org v: 1.21.1.24 with: Xwayland v: 24.1.13
    compositor: Hyprland v: 0.56.2
  Monitor-1: HDMI-A-1 model: Dell U2424H res: 1920x1080 dpi: 93
Drives:
  ID-1: /dev/nvme0n1 vendor: Samsung model: SSD 990 PRO 1TB
    size: 931.51 GiB tech: SSD scheme: GPT
Partition:
  ID-1: / fs: btrfs dev: /dev/dm-0 mapped: root
  ID-2: /boot fs: vfat dev: /dev/nvme0n1p1
Repos:
  Packages: pm: pacman pkgs: 1174 tools: yay
  Active pacman repo servers in: /etc/pacman.conf
    1: https://pkgs.omarchy.org/stable/$arch
Info:
  Memory: total: 64 GiB Init: systemd v: 261 default: graphical
  inxi: 3.3.41

=========================================
RELEVANT PACKAGES
=========================================
omarchy 4.0.0-1 (omarchy)
omarchy-settings 4.0.0-1 (omarchy)
sddm 0.21.0-7 (extra)
hyprland 0.56.2-1 (extra)
linux 7.1.8.arch1-3 (core)
nvidia-open-dkms 610.57.04-1 (extra)
fcitx5 5.1.21-1 (extra)
plymouth 26.134.222-2 (extra)
uwsm 0.26.6-1 (extra)

=========================================
JOURNALCTL (greeter-related, current boot)
=========================================
sddm-helper[1148]: pam_unix(sddm-autologin:session): session opened for user USER (boot: greeter skipped)
sddm-helper-start-wayland[1168]: xkbcomp warnings (non-fatal)
sddm-greeter-qt6[1203]: /usr/share/sddm/themes/omarchy/Main.qml:104:11 Parameter "event" is not declared (deprecation warning)
sddm[1133]: Greeter starting...          (only after logout)
sddm-helper[1239]: [PAM] authenticate: Authentication failure   (password typed in AZERTY, greeter is QWERTY)
sddm[1133]: Authentication error: SDDM::Auth::ERROR_AUTHENTICATION
View raw text
### System details

Omarchy 4.0.0-1, i5-12600K, RTX 5070,Keyboard layout: fr 

### What's wrong?

## Describe the issue

The SDDM greeter always uses the US/QWERTY layout, regardless of the system keyboard layout. On a FR/AZERTY system, the login password field is QWERTY, so any password containing layout-sensitive characters cannot be typed. There is no layout indicator or switcher on the greeter.

Note: the system XKB configuration is already correct, so `localectl set-x11-keymap` is not the fix. Hyprland ignores `/etc/X11/xorg.conf.d/00-keyboard.conf` entirely — it only honours `input { kb_layout }` in its own config — which is why the greeter is wrong while the rest of the system is right:

```
$ localectl status
  VC Keymap: fr
  X11 Layout: fr
  X11 Model: pc105

$ cat /etc/X11/xorg.conf.d/00-keyboard.conf
  Option "XkbLayout" "fr"
  Option "XkbModel" "pc105"

$ hyprctl getoption input:kb_layout
  str: fr
```

Cause: the greeter runs inside its own Hyprland instance.

```ini
# /etc/sddm.conf.d/10-wayland.conf
[Wayland]
CompositorCommand=start-hyprland -- --config /usr/share/sddm/hyprland.conf
```

Neither `/usr/share/sddm/hyprland.conf` nor the newer `/usr/share/sddm/hyprland.lua` declares an input block — both only set `misc{}` and `animations{}`. With no `kb_layout`, Hyprland falls back to its built-in default, `us`.

Confirmed: pointing `CompositorCommand` at a config that sources the shipped one and adds `input { kb_layout = fr }` makes the greeter AZERTY. The fix therefore belongs in the greeter's compositor config.

## Steps to recreate

1. Install with a non-US layout (FR here) and full-disk encryption.
2. Disable autologin by moving `/etc/sddm.conf.d/autologin.conf` out of the directory. SDDM reads every file in `conf.d` regardless of extension, so renaming it to `.disabled` in place is not enough — it is still parsed.
3. Reboot.
4. The LUKS decryption prompt is correctly AZERTY (vconsole `KEYMAP=fr`).
5. Seconds later, on the same physical keyboard, the SDDM greeter is US/QWERTY.

Both prompts appear during a single boot, so this is not a logout or session-restart problem: the greeter is always US. With autologin enabled (the default) the greeter is skipped at boot and only appears after a logout, which is why the issue is easy to miss.

## Expected

The greeter's Hyprland config should carry the system keyboard layout (`kb_layout`, `kb_variant`, `kb_options`), so the greeter matches both the LUKS prompt and the user session.

## Workaround

Verified working — the greeter is AZERTY after a logout with this in place. The layout is hardcoded here; a proper fix would detect the system layout, as is already done for `~/.config/hypr/input.conf`.

```
# /etc/sddm/hyprland-kbd.conf
source = /usr/share/sddm/hyprland.conf

input {
    kb_layout = fr
    kb_model = pc105
}
```

```ini
# /etc/sddm.conf.d/99-keyboard.conf
[Wayland]
CompositorCommand=start-hyprland -- --config /etc/sddm/hyprland-kbd.conf
```

## Side notes from the 4.0.0 update path

Updated 3.8.2 to 4.0.0 with `omarchy update`, not a fresh ISO install. Neither of these causes the layout bug, but both surfaced while investigating.

- 4.0.0 ships `/usr/share/sddm/hyprland.lua` and a `10-wayland.conf.pacnew` pointing at it, while the active `10-wayland.conf` still points at `hyprland.conf`. Since SDDM's `conf.d` reader does not filter on the `.conf` extension, the `.pacnew` is parsed alongside the real file and both set `CompositorCommand` with different values.
- `/usr/share/sddm/hyprland.conf` is not owned by any package (`pacman -Qo` returns "No package owns"), so it lingers after the update.

## Related

#5754 — same class of problem on hyprlock after the 3.8.0 update: auth surfaces do not inherit the system keyboard layout.

#6878 — Quattro upgrade drops non-US layout in the Hyprland *session* when vconsole.conf has only KEYMAP (falls back to `us` via `vconsole.XKBLAYOUT or "us"`). Different component and different cause: my session is correct and my vconsole.conf does contain XKBLAYOUT=fr. The greeter's compositor config doesn't read vconsole at all — it simply has no input block.

## omarchy-debug

<details>
<summary>omarchy-debug</summary>

```
Date: Fri Aug 14 08:45:00 PM CEST 2026
Hostname: HOST
Omarchy Package: omarchy 4.0.0-1
=========================================
SYSTEM INFORMATION
=========================================
System:
  Kernel: 7.1.8-arch1-3 arch: x86_64 bits: 64 compiler: gcc v: 16.2.1
    parameters: resume=/dev/mapper/root quiet splash loglevel=0
    systemd.show_status=false rd.udev.log_level=0 vt.global_cursor_default=0
    cryptdevice=PARTUUID=<redacted>:root root=/dev/mapper/root
    zswap.enabled=0 rootflags=subvol=@ rw rootfstype=btrfs
  Desktop: Hyprland v: 0.56.2 vt: 3 dm: SDDM Distro: Omarchy
Machine:
  Type: Desktop Mobo: Micro-Star model: PRO B760-P WIFI DDR4 (MS-7D98) v: 1.0
    Firmware: UEFI vendor: American Megatrends LLC. v: 1.F0 date: 08/07/2025
CPU:
  Info: model: 12th Gen Intel Core i5-12600K arch: Alder Lake
    cores: 10 threads: 16
Graphics:
  Device-1: Intel Alder Lake-S GT1 [UHD Graphics 770] driver: i915
  Device-2: NVIDIA GB205 [GeForce RTX 5070] driver: nvidia v: 610.57.04
  Display: wayland server: X.org v: 1.21.1.24 with: Xwayland v: 24.1.13
    compositor: Hyprland v: 0.56.2
  Monitor-1: HDMI-A-1 model: Dell U2424H res: 1920x1080 dpi: 93
Drives:
  ID-1: /dev/nvme0n1 vendor: Samsung model: SSD 990 PRO 1TB
    size: 931.51 GiB tech: SSD scheme: GPT
Partition:
  ID-1: / fs: btrfs dev: /dev/dm-0 mapped: root
  ID-2: /boot fs: vfat dev: /dev/nvme0n1p1
Repos:
  Packages: pm: pacman pkgs: 1174 tools: yay
  Active pacman repo servers in: /etc/pacman.conf
    1: https://pkgs.omarchy.org/stable/$arch
Info:
  Memory: total: 64 GiB Init: systemd v: 261 default: graphical
  inxi: 3.3.41

=========================================
RELEVANT PACKAGES
=========================================
omarchy 4.0.0-1 (omarchy)
omarchy-settings 4.0.0-1 (omarchy)
sddm 0.21.0-7 (extra)
hyprland 0.56.2-1 (extra)
linux 7.1.8.arch1-3 (core)
nvidia-open-dkms 610.57.04-1 (extra)
fcitx5 5.1.21-1 (extra)
plymouth 26.134.222-2 (extra)
uwsm 0.26.6-1 (extra)

=========================================
JOURNALCTL (greeter-related, current boot)
=========================================
sddm-helper[1148]: pam_unix(sddm-autologin:session): session opened for user USER (boot: greeter skipped)
sddm-helper-start-wayland[1168]: xkbcomp warnings (non-fatal)
sddm-greeter-qt6[1203]: /usr/share/sddm/themes/omarchy/Main.qml:104:11 Parameter "event" is not declared (deprecation warning)
sddm[1133]: Greeter starting...          (only after logout)
sddm-helper[1239]: [PAM] authenticate: Authentication failure   (password typed in AZERTY, greeter is QWERTY)
sddm[1133]: Authentication error: SDDM::Auth::ERROR_AUTHENTICATION
```

</details>

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

No decision has been recorded yet.