Add Plasma wallpaper and login splash packages

0d30999 · Gabriel Morell · 2026-09-29 20:16

37 files +288 -46
Message
{commit_body(@commit)}

Files changed

modified .github/workflows/package.yml
+6 −2
@@ -70,13 +70,17 @@ jobs:
70 70 set -euo pipefail
71 71 cargo deb -p plymouth-theme-neiam --no-build --no-strip
72 72 cargo deb -p sddm-theme-neiam --no-build --no-strip
73 − tools/deb-arch-all.sh target/debian/*.deb
73 + cargo deb -p plasma-wallpaper-neiam --no-build --no-strip
74 + cargo deb -p plasma-splash-neiam --no-build --no-strip
75 + tools/deb-fixup.sh target/debian/*.deb
74 76
75 77 - name: Build RPM packages
76 78 run: |
77 79 set -euo pipefail
78 80 cargo generate-rpm -p plymouth -a noarch
79 81 cargo generate-rpm -p sddm -a noarch
82 + cargo generate-rpm -p wallpaper -a noarch
83 + cargo generate-rpm -p splash -a noarch
80 84
81 85 - name: Resolve the forge URL
82 86 env:
@@ -138,7 +142,7 @@ jobs:
138 142 # Debian / Ubuntu
139 143 curl -fsSL $FORGE_URL/pkg/_keys/deb/$OWNER | sudo tee /etc/apt/keyrings/$OWNER.asc >/dev/null
140 144 echo "deb [signed-by=/etc/apt/keyrings/$OWNER.asc] $FORGE_URL/pkg/deb/$OWNER/_all stable main" | sudo tee /etc/apt/sources.list.d/$OWNER.list
141 − sudo apt update && sudo apt install plymouth-theme-neiam sddm-theme-neiam
145 + sudo apt update && sudo apt install plymouth-theme-neiam sddm-theme-neiam plasma-wallpaper-neiam plasma-splash-neiam
142 146
143 147 # Fedora / RHEL / openSUSE — /etc/yum.repos.d/$OWNER.repo
144 148 [$OWNER]
modified Cargo.toml
+1 −1
@@ -3,7 +3,7 @@
3 3 # ppl and publish to the same registries.
4 4 [workspace]
5 5 resolver = "2"
6 −members = ["plymouth", "sddm"]
6 +members = ["plymouth", "sddm", "wallpaper", "splash"]
7 7
8 8 # CI stamps this line (the first `version = ` in the file) per build.
9 9 [workspace.package]
modified README.md
+31 −9
@@ -7,6 +7,8 @@ through the same pipeline as ppl.
7 7 |------------------------|--------------------------------------|
8 8 | `plymouth-theme-neiam` | `/usr/share/plymouth/themes/neiam/` |
9 9 | `sddm-theme-neiam` | `/usr/share/sddm/themes/neiam/` |
10 +| `plasma-wallpaper-neiam` | `/usr/share/wallpapers/neiam/` (desktop and lock screen) |
11 +| `plasma-splash-neiam` | `/usr/share/plasma/look-and-feel/org.neiam.desktop/` (splash after login) |
10 12
11 13 Both are architecture-independent (`all` / `noarch`).
12 14
@@ -18,6 +20,7 @@ one master, and each theme picks the render that best fits the screen
18 20
19 21 plymouth/theme/background-<W>x<H>.png
20 22 sddm/theme/backgrounds/<W>x<H>.png
23 + wallpaper/theme/contents/images/<W>x<H>.png
21 24
22 25 at 1280x800, 1366x768, 1920x1080, 1920x1200, 2560x1440, 2560x1600 and
23 26 3840x2160.
@@ -30,10 +33,16 @@ the file at the same path; nothing else needs to change.
30 33 tools/standins.py --force # rewrite them all
31 34 tools/standins.py --check # every image present at its size? (CI runs this)
32 35
33 −Adding or dropping a resolution means editing three lists together:
36 +The Plasma splash has no images of its own: it shows the installed
37 +wallpaper package's, so login hands off to a desktop using that
38 +wallpaper without a visible change.
39 +
40 +Adding or dropping a resolution means editing four lists together:
34 41 `RESOLUTIONS` in `tools/standins.py`, the `bg_*` table in
35 −`plymouth/theme/neiam.script`, and `backgrounds` in
36 −`sddm/theme/theme.conf`.
42 +`plymouth/theme/neiam.script`, `backgrounds` in
43 +`sddm/theme/theme.conf`, and `backgrounds` in
44 +`splash/theme/contents/splash/Splash.qml`. Plasma finds the
45 +wallpaper's sizes by itself.
37 46
38 47 The Plymouth theme is copied into the initramfs, so every render there
39 48 adds to its size.
@@ -51,14 +60,22 @@ Installing a package does not switch to its theme:
51 60 # SDDM
52 61 printf '[Theme]\nCurrent=neiam\n' | sudo tee /etc/sddm.conf.d/neiam.conf
53 62
54 −KDE's login screen settings show `sddm/theme/preview.png`; re-render it
55 −after changing the theme or its art:
63 +Per user, in System Settings: the wallpaper under *Wallpaper* and
64 +*Screen Locking → Appearance*, the splash under *Splash Screen*
65 +(or `plasma-apply-wallpaperimage /usr/share/wallpapers/neiam` and
66 +`kwriteconfig6 --file ksplashrc --group KSplash --key Theme org.neiam.desktop`).
67 +
68 +KDE's settings show `sddm/theme/preview.png` and
69 +`splash/theme/contents/previews/*.png`; re-render them after changing
70 +the themes or their art:
56 71
57 72 QT_QPA_PLATFORM=offscreen qml6 tools/sddm-preview.qml
73 + QT_QPA_PLATFORM=offscreen qml6 tools/splash-preview.qml
58 74
59 −Try the login screen without switching to it:
75 +Try the login screen and splash without switching to them:
60 76
61 77 sddm-greeter-qt6 --test-mode --theme sddm/theme
78 + ksplashqml --test --window splash/theme
62 79
63 80 ## Building
64 81
@@ -67,12 +84,17 @@ The packages are data-only cargo crates so that `cargo-deb` and
67 84
68 85 cargo deb -p plymouth-theme-neiam --no-build --no-strip
69 86 cargo deb -p sddm-theme-neiam --no-build --no-strip
70 − tools/deb-arch-all.sh target/debian/*.deb
87 + cargo deb -p plasma-wallpaper-neiam --no-build --no-strip
88 + cargo deb -p plasma-splash-neiam --no-build --no-strip
89 + tools/deb-fixup.sh target/debian/*.deb
71 90 cargo generate-rpm -p plymouth -a noarch
72 91 cargo generate-rpm -p sddm -a noarch
92 + cargo generate-rpm -p wallpaper -a noarch
93 + cargo generate-rpm -p splash -a noarch
73 94
74 −`cargo-deb` can't mark a package `Architecture: all`, so
75 −`tools/deb-arch-all.sh` rewrites that one control field afterwards.
95 +`cargo-deb` can't mark a package `Architecture: all` and writes an
96 +empty `Depends:` for packages with nothing to link, so
97 +`tools/deb-fixup.sh` corrects the control file afterwards.
76 98
77 99 CI (`.github/workflows/package.yml`) does the above on every push,
78 100 stamping `+dev.<timestamp>` onto branch builds and publishing to the
added splash/Cargo.toml
+34 −0
@@ -0,0 +1,34 @@
1 +[package]
2 +name = "plasma-splash-neiam"
3 +description = "neiam device Plasma login splash"
4 +version.workspace = true
5 +edition.workspace = true
6 +authors.workspace = true
7 +license.workspace = true
8 +publish = false
9 +
10 +[lib]
11 +path = "src/lib.rs"
12 +
13 +# A global theme package holding only a splash, which is how Plasma
14 +# ships splash screens. Its background comes from the wallpaper package.
15 +[package.metadata.deb]
16 +section = "misc"
17 +depends = "plasma-wallpaper-neiam"
18 +assets = [
19 + ["theme/metadata.json", "usr/share/plasma/look-and-feel/org.neiam.desktop/", "644"],
20 + ["theme/contents/splash/*", "usr/share/plasma/look-and-feel/org.neiam.desktop/contents/splash/", "644"],
21 + ["theme/contents/previews/*", "usr/share/plasma/look-and-feel/org.neiam.desktop/contents/previews/", "644"],
22 + ["../README.md", "usr/share/doc/plasma-splash-neiam/README.md", "644"],
23 +]
24 +
25 +[package.metadata.generate-rpm]
26 +assets = [
27 + { source = "theme/metadata.json", dest = "/usr/share/plasma/look-and-feel/org.neiam.desktop/metadata.json", mode = "0644" },
28 + { source = "theme/contents/splash/*", dest = "/usr/share/plasma/look-and-feel/org.neiam.desktop/contents/splash/", mode = "0644" },
29 + { source = "theme/contents/previews/*", dest = "/usr/share/plasma/look-and-feel/org.neiam.desktop/contents/previews/", mode = "0644" },
30 + { source = "../README.md", dest = "/usr/share/doc/plasma-splash-neiam/README.md", doc = true, mode = "0644" },
31 +]
32 +
33 +[package.metadata.generate-rpm.requires]
34 +plasma-wallpaper-neiam = "*"
added splash/src/lib.rs
+1 −0
@@ -0,0 +1 @@
1 +//! Placeholder: cargo needs a target to accept the manifest. The package is the theme/ directory.
modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

added splash/theme/contents/splash/Splash.qml
+75 −0

Click to load diff…

added splash/theme/metadata.json
+18 −0

Click to load diff…

deleted tools/deb-arch-all.sh
+0 −32

Click to load diff…

added tools/deb-fixup.sh
+39 −0

Click to load diff…

added tools/splash-preview.qml
+35 −0

Click to load diff…

modified tools/standins.py
+7 −2

Click to load diff…

added wallpaper/Cargo.toml
+27 −0

Click to load diff…

added wallpaper/src/lib.rs
+1 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

added wallpaper/theme/metadata.json
+13 −0

Click to load diff…

Parents: 414ff8c