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-4438GitHub issuePublicReceived

SDDM greeter defaults to us keymap instead of the one selected on install

Reported by hugochinchilla · filed May 27, 2026Closed upstream on 2026-07-18 by dhh. GitHub close reason: completed. No closing PR or commit is recorded — "completed" alone is not evidence of a fix.

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 defaults to us keymap instead of the one selected on installrevision 1 · captured 2026-10-04 11:56 UTC via poll

System details

  • Omarchy 3.8.2 (updated 2026-05-27)
  • ThinkPad
  • Hyprland 0.55.2 (was 0.54.3)
  • hyprlock 0.9.5-4 (was 0.9.5-2)
  • SDDM 0.21.0-7 (was 0.21.0-6)

What's wrong?

SDDM greeter rejects correct password after 3.8.x update — greeter falls back to us keymap because installer only patches ~/.config/hypr/input.conf

System details

  • Omarchy 3.8.2 (updated 2026-05-27)
  • ThinkPad
  • Hyprland 0.55.2 (was 0.54.3)
  • hyprlock 0.9.5-4 (was 0.9.5-2)
  • SDDM 0.21.0-7 (was 0.21.0-6)
  • util-linux 2.42.1
  • System keyboard layout: es (Spanish, Spain) — set via localectl
  • /etc/vconsole.conf: XKBLAYOUT=es
  • /etc/X11/xorg.conf.d/00-keyboard.conf: XkbLayout "es"
  • ~/.config/hypr/input.conf: kb_layout = es (correctly written by installer)

What's wrong?

After today's omarchy-update (the 3.8.x family bump that included Hyprland 0.54.3 → 0.55.2 and SDDM 0.21.0-6 → 0.21.0-7), the SDDM greeter (omarchy theme) rejected my correct password on two consecutive hyprland crashes (unrelated).

Symptoms:

  • SDDM autologin into Hyprland succeeded at boot.
  • After the session ended (compositor crashed / I logged out), SDDM showed the omarchy greeter and refused my password.
  • Resetting faillock from a TTY did not help — the rejection is not faillock-related.
  • The greeter UI is the themed omarchy SDDM screen (looks similar to the LUKS unlock screen: omarchy logo + password input).

Root cause appears to be that the SDDM greeter runs its own embedded Hyprland as the display server:

sddm-helper-start-wayland: Starting Wayland process "start-hyprland -- --config /usr/share/sddm/hyprland.conf"

and /usr/share/sddm/hyprland.conf is shipped without any input { kb_layout = ... }. The installer's ~/.local/share/omarchy/install/config/detect-keyboard-layout.sh only patches ~/.config/hypr/input.conf, never /usr/share/sddm/hyprland.conf. So the greeter defaults to us, and any password containing characters that differ between us and the user's actual layout (@, /, :, _, accented chars, dead keys, etc.) is silently translated to the wrong string before reaching PAM.

PAM logs match: every failure is a plain pam_unix Authentication failure from sddm-helper, with no pam_faillock / "account locked" messages anywhere — i.e. PAM is being told the wrong password, not refusing a locked account.

Steps to reproduce

  1. Install Omarchy with a non-us keyboard layout (e.g. es) — installer correctly writes kb_layout = es into ~/.config/hypr/input.conf.
  2. Use a password containing at least one character whose position differs between us and the chosen layout (e.g. /, @, :, _, -).
  3. Lock the screen / log out / let Hyprland crash so SDDM falls back to manual auth.
  4. Type the correct password at the SDDM greeter.
  5. PAM rejects with Authentication failure.

Relevant logs

May 27 18:02:39 thinkpad sddm-helper-start-wayland[10406]: Starting Wayland process "start-hyprland -- --config /usr/share/sddm/hyprland.conf"
May 27 18:02:42 thinkpad sddm-helper-start-wayland[10406]: "Warning: Virtual modifier Hyper multiply defined / Using 0, ignoring 0"
May 27 18:02:42 thinkpad sddm-helper-start-wayland[10406]: "Warning: Multiple symbols for level 1/group 1 on key <FK23>"
May 27 18:02:50 thinkpad sddm-helper[10526]: [PAM] authenticate: Authentication failure
May 27 18:02:50 thinkpad sddm[1223]: Authentication error: SDDM::Auth::ERROR_AUTHENTICATION "Authentication failure"
May 27 18:03:00 thinkpad sddm-helper[10545]: [PAM] authenticate: Authentication failure
May 27 18:03:08 thinkpad sddm-helper[10549]: [PAM] authenticate: Authentication failure
May 27 18:03:22 thinkpad sddm-helper[10620]: [PAM] authenticate: Authentication failure
May 27 18:05:45 thinkpad sddm-helper[11399]: [PAM] authenticate: Authentication failure

Boot before this one — autologin succeeded, confirming the on-disk password hash is correct:

May 27 17:49:18 thinkpad sddm-helper[1239]: pam_unix(sddm-autologin:session): session opened for user hchinchilla(uid=1000) by hchinchilla(uid=0)

Notably, no pam_faillock messages exist at any point in either boot — so faillock --reset doesn't help and is the wrong lever.

Local workaround that fixes it

Added the following to /usr/share/sddm/hyprland.conf:

input {
  kb_layout = es
}

Suggested fix

Either:

  1. Extend ~/.local/share/omarchy/install/config/detect-keyboard-layout.sh (and any post-update migration) to also inject input { kb_layout = ... } into /usr/share/sddm/hyprland.conf whenever it updates ~/.config/hypr/input.conf. Ship a pacman hook to re-apply on sddm upgrades.
  2. Or have the omarchy SDDM theme/greeter wrapper read XKBLAYOUT from /etc/vconsole.conf (or localectl --no-pager status) at start and pass --kb-layout accordingly, so the greeter always tracks the system layout.

Related issues

  • #4238 — Setting keyboard input to polish on setup doesn't correctly apply it to config (same install-time-propagation gap, but for the main session). Same workaround pattern.
  • #5754 — Hyprlock uses QWERTY layout after update to 3.8.0 despite system layout being AZERTY (same family, in hyprlock).
  • #4583 — Weird behaviour with multiple keyboard layouts.
  • #2454 — Keyboard shortcuts are messed up after installation on dual-language system.
  • #2148 (closed) — locale key mapping gone post install (Norwegian; same workaround).
View raw text
### System details

- Omarchy 3.8.2 (updated 2026-05-27)
-  ThinkPad
-  Hyprland 0.55.2 (was 0.54.3)
- hyprlock 0.9.5-4 (was 0.9.5-2)
- SDDM 0.21.0-7 (was 0.21.0-6)

### What's wrong?

SDDM greeter rejects correct password after 3.8.x update — greeter falls back to `us` keymap because installer only patches `~/.config/hypr/input.conf`

## System details

- Omarchy 3.8.2 (updated 2026-05-27)
- ThinkPad
- Hyprland 0.55.2 (was 0.54.3)
- hyprlock 0.9.5-4 (was 0.9.5-2)
- SDDM 0.21.0-7 (was 0.21.0-6)
- util-linux 2.42.1
- System keyboard layout: `es` (Spanish, Spain) — set via `localectl`
  - `/etc/vconsole.conf`: `XKBLAYOUT=es`
  - `/etc/X11/xorg.conf.d/00-keyboard.conf`: `XkbLayout "es"`
  - `~/.config/hypr/input.conf`: `kb_layout = es` (correctly written by installer)

## What's wrong?

After today's `omarchy-update` (the 3.8.x family bump that included Hyprland 0.54.3 → 0.55.2 and SDDM 0.21.0-6 → 0.21.0-7), the SDDM greeter (omarchy theme) rejected my correct password on two consecutive hyprland crashes (unrelated).

Symptoms:

- SDDM autologin into Hyprland **succeeded** at boot.
- After the session ended (compositor crashed / I logged out), SDDM showed the omarchy greeter and refused my password.
- Resetting `faillock` from a TTY did **not** help — the rejection is not faillock-related.
- The greeter UI is the themed omarchy SDDM screen (looks similar to the LUKS unlock screen: omarchy logo + password input).

Root cause appears to be that the SDDM greeter runs its own **embedded Hyprland** as the display server:

```
sddm-helper-start-wayland: Starting Wayland process "start-hyprland -- --config /usr/share/sddm/hyprland.conf"
```

and `/usr/share/sddm/hyprland.conf` is shipped without any `input { kb_layout = ... }`. The installer's `~/.local/share/omarchy/install/config/detect-keyboard-layout.sh` only patches `~/.config/hypr/input.conf`, never `/usr/share/sddm/hyprland.conf`. So the greeter defaults to `us`, and any password containing characters that differ between `us` and the user's actual layout (`@`, `/`, `:`, `_`, accented chars, dead keys, etc.) is silently translated to the wrong string before reaching PAM.

PAM logs match: every failure is a plain `pam_unix` `Authentication failure` from `sddm-helper`, with **no** `pam_faillock` / "account locked" messages anywhere — i.e. PAM is being told the wrong password, not refusing a locked account.

## Steps to reproduce

1. Install Omarchy with a non-`us` keyboard layout (e.g. `es`) — installer correctly writes `kb_layout = es` into `~/.config/hypr/input.conf`.
2. Use a password containing at least one character whose position differs between `us` and the chosen layout (e.g. `/`, `@`, `:`, `_`, `-`).
3. Lock the screen / log out / let Hyprland crash so SDDM falls back to manual auth.
4. Type the correct password at the SDDM greeter.
5. PAM rejects with `Authentication failure`.

## Relevant logs

```text
May 27 18:02:39 thinkpad sddm-helper-start-wayland[10406]: Starting Wayland process "start-hyprland -- --config /usr/share/sddm/hyprland.conf"
May 27 18:02:42 thinkpad sddm-helper-start-wayland[10406]: "Warning: Virtual modifier Hyper multiply defined / Using 0, ignoring 0"
May 27 18:02:42 thinkpad sddm-helper-start-wayland[10406]: "Warning: Multiple symbols for level 1/group 1 on key <FK23>"
May 27 18:02:50 thinkpad sddm-helper[10526]: [PAM] authenticate: Authentication failure
May 27 18:02:50 thinkpad sddm[1223]: Authentication error: SDDM::Auth::ERROR_AUTHENTICATION "Authentication failure"
May 27 18:03:00 thinkpad sddm-helper[10545]: [PAM] authenticate: Authentication failure
May 27 18:03:08 thinkpad sddm-helper[10549]: [PAM] authenticate: Authentication failure
May 27 18:03:22 thinkpad sddm-helper[10620]: [PAM] authenticate: Authentication failure
May 27 18:05:45 thinkpad sddm-helper[11399]: [PAM] authenticate: Authentication failure
```

Boot before this one — autologin succeeded, confirming the on-disk password hash is correct:

```text
May 27 17:49:18 thinkpad sddm-helper[1239]: pam_unix(sddm-autologin:session): session opened for user hchinchilla(uid=1000) by hchinchilla(uid=0)
```

Notably, no `pam_faillock` messages exist at any point in either boot — so `faillock --reset` doesn't help and is the wrong lever.


## Local workaround that fixes it

Added the following to `/usr/share/sddm/hyprland.conf`:

```hyprland
input {
  kb_layout = es
}
```

## Suggested fix

Either:

1. Extend `~/.local/share/omarchy/install/config/detect-keyboard-layout.sh` (and any post-update migration) to also inject `input { kb_layout = ... }` into `/usr/share/sddm/hyprland.conf` whenever it updates `~/.config/hypr/input.conf`. Ship a pacman hook to re-apply on `sddm` upgrades.
2. Or have the omarchy SDDM theme/greeter wrapper read `XKBLAYOUT` from `/etc/vconsole.conf` (or `localectl --no-pager status`) at start and pass `--kb-layout` accordingly, so the greeter always tracks the system layout.

## Related issues

- #4238 — Setting keyboard input to polish on setup doesn't correctly apply it to config (same install-time-propagation gap, but for the main session). Same workaround pattern.
- #5754 — Hyprlock uses QWERTY layout after update to 3.8.0 despite system layout being AZERTY (same family, in hyprlock).
- #4583 — Weird behaviour with multiple keyboard layouts.
- #2454 — Keyboard shortcuts are messed up after installation on dual-language system.
- #2148 (closed) — locale key mapping gone post install (Norwegian; same workaround).

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.