An SDDM login theme in the style of k4, a Dynamic Island-style bar for Hyprland.
Pure black, a large light-weight clock, the user's initial in a circle, and a pill-shaped password field that shivers when the password is wrong. It is a port of k4's own lock screen, so locking and logging in look like the same machine talking to you.
- SDDM 0.21 or newer, built against Qt 6.
qt6-declarative.- Two fonts, installed system-wide — the greeter runs as the
sddmuser and cannot read anything in your home directory:- Adwaita Sans for the UI.
- A Nerd Font with Material Design glyphs, for the icons. The theme asks for MesloLGS Nerd Font.
Both are configurable in theme.conf, so any other pair will do.
git clone https://github.com/k4ditano/k4-sddm
cd k4-sddm
./instalarIt copies the theme to /usr/share/sddm/themes/k4 and writes
/etc/sddm.conf.d/10-k4.conf to select it. That is a separate file on purpose:
it will not touch whatever you already keep in /etc/sddm.conf, and
uninstalling is deleting it.
To see it without rebooting — and without touching anything at all:
./instalar --probarThis opens the real greeter in a window, using SDDM's own test mode.
Everything lives in theme.conf.
| Key | What it does |
|---|---|
fondo, tinta, apagado, tenue |
Background, text, muted text, faint text |
superficie, superficieAlta, carril |
Card, hovered card, track |
verde, rojo, azul, amarillo |
The colors that mean something |
fuente, fuenteUi |
Icon font and UI font |
imagen |
Wallpaper, relative to the theme directory. Empty means plain black |
velo |
How much black is laid over the wallpaper, 0–1 |
The bundled fondo.png is a set of blurred rounded-rectangle shapes in the
corners with a thin blue rim light — the island's own shape. Its center is
deliberately empty, because that is where the clock and the login form go. Set
imagen= to nothing for the plain black the lock screen uses.
At runtime, not at all. The theme imports QtQuick and nothing else: no
Quickshell, no k4 services. It has to be that way, because it runs as the
sddm user before any session exists.
The one live link is the palette. instalar reads
~/.local/state/k4/tema.json — the theme k4 publishes for its terminal — and
bakes those colors into theme.conf, because a greeter running as sddm
cannot read a 700 home directory. Re-run instalar after changing k4's
colors and the login screen follows. If that file is missing, the palette in
the repo is used and nothing breaks.
Plugin tints are not copied. A game can wash the whole bar in its own color while you play it, but the login screen belongs to the house.
Tema.qml and Baldosa.qml are deliberate copies of k4's core/Theme.qml
and api/K4/Baldosa.qml. The duplication is forced — there is no way to
import them here — so if you add a design token to k4, it will not appear on
this side by itself.
Black, entirely and on purpose: it is what costs least on OLED, what disturbs least at night, and what shows least of your machine to whoever walks past.
There is no user picker. The model underneath handles several users, but nothing is drawn for it — a list with one entry is noise. Adding the pill is the only thing missing on the day it matters.
The failure message and the Caps Lock warning share one line that always reserves its height, so the password field never jumps while you are typing in it. When PAM says something specific — the account expired, the password must be changed — that wins over the generic "wrong password", because it is often the difference between retrying and not being able to get in at all.
After three failed attempts the screen tells you that Ctrl+Alt+F2 opens a
text console. It stops being "I mistyped it" at some point, and a login screen
should say where the way out is before panic sets in.
MIT.
