sddm-theme-udt
An SDDM login theme for the unified-desktop-theme (UDT) family. It draws the current wallpaper on every screen, pins the login panel to one screen, and takes its colours from the UDT palette, including the wallpaper-snapped accent.
How it is wired
udt-accent, in the UDT repo, writes the live palette to
~/.local/share/udt/sddm-theme.conf on every wallpaper change. Root installs
/usr/share/sddm/themes/udt/theme.conf.user as a symlink to that file, which
SDDM merges into the theme config at every greeter start. Wallpaper and accent
need no root re-run; only theme code changes do.
Set uiScreen in the root-owned theme/theme.conf to pin the login panel to a
named screen; leave it empty for the primary screen. It does not belong in the
generated theme.conf.user, which is overwritten on every wallpaper change.
Panel
The greeter draws a full-height panel on the left edge, panelWidth of the
screen wide (0.20 by default), frosted over the wallpaper with square corners.
From top to bottom it shows the clock (timeFormat) and date (dateFormat),
the greeting, the avatar, one credential slot, the power row, and the session
selector at the bottom.
If you override dateFormat, quote any value containing a comma (for example
dateFormat="dddd, d MMMM"): SDDM reads the config through QSettings, which
treats an unquoted comma as a list, and the date then comes out empty.
The credential slot is staged: type the username, confirm, and it slides out to reveal the password; confirm again to log in. Esc or the back chevron returns to the username.
Power icons come from the icon theme the appearance drawer selected. udt-accent
resolves them and writes absolute paths into the generated theme.conf.user, and
they keep the colours the theme ships; when a theme has no match, the bundled
theme/icons/*.svg draw, tinted to the palette.
Install
The theme code is copied by root, then SDDM is pointed at it. Both are one-time root edits; run them in a root shell:
install -d /usr/share/sddm/themes/udt
cp -r <this repo>/theme/. /usr/share/sddm/themes/udt/
rm -f /usr/share/sddm/themes/udt/components/LoginCard.qml
ln -sfn /home/you/.local/share/udt/sddm-theme.conf /usr/share/sddm/themes/udt/theme.conf.user
Replace /home/you with the login user's home. In a root shell $HOME is
root's, so the symlink must be the literal path; if it points at /root, the
greeter finds no live config and silently falls back to the static theme.conf
palette and the bundled power icons.
Select the theme by setting Current=udt under [Theme] in /etc/sddm.conf.
That file has the highest precedence in SDDM's config order
(/usr/lib/sddm/sddm.conf.d, then /etc/sddm.conf.d, then /etc/sddm.conf,
last wins), so a drop-in under /etc/sddm.conf.d does not work here: the stock
Current=breeze in /etc/sddm.conf overrides it.
The same file carries [General] InputMethod. SDDM ships with
InputMethod=qtvirtualkeyboard, which pops the on-screen keyboard over the
greeter, and the theme cannot switch that off. Blank it in /etc/sddm.conf to
disable the keyboard:
InputMethod=
Test
sddm-greeter-qt6 --test-mode --theme "$PWD/theme"
License
GPLv2 only. See LICENSE.
Development Approach
This project is developed using AI-assisted tools. Code is generated with the help of AI based on human-provided specifications, design decisions, and iterative feedback.
All contributions are reviewed, tested, and curated by the maintainer before being included in the codebase. AI is used as a productivity and exploration tool, while human oversight remains central to all decisions.
The goal is to combine the flexibility of AI-assisted development with standard open-source practices such as transparency, review, and accountability.
