neiam
/neiam-devices
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Badges · Packages
Log in to mark this repository.
Add Plasma wallpaper and login splash packages
0d30999 · Gabriel Morell · 2026-09-29 20:16
Message
{commit_body(@commit)}
Files changed
modified
.github/workflows/package.yml
+6
−2
| 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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
| 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
| 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