aboutsummaryrefslogtreecommitdiffstats

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.