Keyboard Layout
Keyboard Layout¶
sysc-greet runs inside a compositor, so keyboard layout is set there.
niri¶
Edit /etc/greetd/niri-greeter-config.kdl:
input {
keyboard {
xkb {
layout "de"
}
}
}
sway¶
Edit /etc/greetd/sway-greeter-config:
input * {
xkb_layout "de"
}
hyprland¶
Edit /etc/greetd/hyprland-greeter-config.conf:
input {
kb_layout = de
}
Replace de with your layout (us, fr, es, uk, etc). Full list in /usr/share/X11/xkb/rules/base.lst.
Non-US Layouts with Kitty¶
If your layout doesn't work correctly in Kitty (e.g., Shift key reverts to QWERTY), set XKB environment variables in the compositor config's Kitty exec line.
Thanks to @morganorix for discovering this solution!
niri (/etc/greetd/niri-greeter-config.kdl):
spawn-sh-at-startup "XDG_CACHE_HOME=/tmp/greeter-cache HOME=/var/lib/greeter XKB_DEFAULT_LAYOUT=fr XKB_DEFAULT_VARIANT=oss kitty --start-as=fullscreen --config=/etc/greetd/kitty.conf /usr/local/bin/sysc-greet; niri msg action quit --skip-confirmation"
sway (/etc/greetd/sway-greeter-config):
exec "XDG_CACHE_HOME=/tmp/greeter-cache HOME=/var/lib/greeter XKB_DEFAULT_LAYOUT=fr XKB_DEFAULT_VARIANT=oss kitty --start-as=fullscreen --config=/etc/greetd/kitty.conf /usr/local/bin/sysc-greet; swaymsg exit"
hyprland (/etc/greetd/hyprland-greeter-config.conf):
exec-once = XDG_CACHE_HOME=/tmp/greeter-cache HOME=/var/lib/greeter XKB_DEFAULT_LAYOUT=fr XKB_DEFAULT_VARIANT=oss kitty --start-as=fullscreen --config=/etc/greetd/kitty.conf /usr/local/bin/sysc-greet && hyprctl dispatch exit
Replace fr with your layout and oss with your variant (or omit XKB_DEFAULT_VARIANT if not needed).
Restart greetd after changes: sudo systemctl restart greetd