1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# 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.30 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.
|