neiam
/neiam-devices
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Badges · Packages
Log in to mark this repository.
Add animated moire/halftone Plasma wallpaper with waxx themes
f629a67 · Gabriel Morell · 2026-09-29 20:43
Message
{commit_body(@commit)}
Files changed
modified
.github/workflows/package.yml
+2
−0
| 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 | 73 | cargo deb -p plasma-wallpaper-neiam --no-build --no-strip |
| 74 | + cargo deb -p plasma-wallpaper-neiam-moire --no-build --no-strip | |
| 74 | 75 | cargo deb -p plasma-splash-neiam --no-build --no-strip |
| 75 | 76 | cargo deb -p neiam-branding --no-build --no-strip |
| 76 | 77 | tools/deb-fixup.sh target/debian/*.deb |
| 81 | 82 | cargo generate-rpm -p plymouth -a noarch |
| 82 | 83 | cargo generate-rpm -p sddm -a noarch |
| 83 | 84 | cargo generate-rpm -p wallpaper -a noarch |
| 85 | + cargo generate-rpm -p moire -a noarch | |
| 84 | 86 | cargo generate-rpm -p splash -a noarch |
| 85 | 87 | cargo generate-rpm -p branding -a noarch |
| 86 | 88 |
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", "wallpaper", "splash", "branding"] | |
| 6 | +members = ["plymouth", "sddm", "wallpaper", "moire", "splash", "branding"] | |
| 7 | 7 | |
| 8 | 8 | # CI stamps this line (the first `version = ` in the file) per build. |
| 9 | 9 | [workspace.package] |
modified
README.md
+35
−1
| 9 | 9 | | `plymouth-theme-neiam` | `/usr/share/plymouth/themes/neiam/` | |
| 10 | 10 | | `sddm-theme-neiam` | `/usr/share/sddm/themes/neiam/` | |
| 11 | 11 | | `plasma-wallpaper-neiam` | `/usr/share/wallpapers/neiam/` (desktop and lock screen) | |
| 12 | +| `plasma-wallpaper-neiam-moire` | `/usr/share/plasma/wallpapers/org.neiam.moire/` (animated; desktop and lock screen) | | |
| 12 | 13 | | `plasma-splash-neiam` | `/usr/share/plasma/look-and-feel/org.neiam.desktop/` (splash after login) | |
| 13 | 14 | |
| 14 | 15 | Both are architecture-independent (`all` / `noarch`). |
| 48 | 49 | The Plymouth theme is copied into the initramfs, so every render there |
| 49 | 50 | adds to its size. |
| 50 | 51 | |
| 52 | +## Animated wallpaper | |
| 53 | + | |
| 54 | +`plasma-wallpaper-neiam-moire` is a Plasma wallpaper plugin ("neiam | |
| 55 | +moire" under *Wallpaper type*, for the desktop or the lock screen) | |
| 56 | +that draws the moire live, with a halftone field, both, or fading | |
| 57 | +between the two. Everything drifts slowly and never visibly repeats. | |
| 58 | + | |
| 59 | +Its colours come from the waxx themes (dark, light, her, afterdark, | |
| 60 | +forest, sky, clays, stones, blueprint): the ground is `base-100` | |
| 61 | +fading to `base-300`, the moire `accent`, the halftone `primary`. It | |
| 62 | +can hold one theme, or follow the time of day through night, sunrise, | |
| 63 | +day and sunset themes, either by clock times or by the real sun at a | |
| 64 | +latitude and longitude. Between phases it blends by the sun's | |
| 65 | +elevation, turning the hue so the transitions pass through the purples | |
| 66 | +of a real twilight rather than grey. | |
| 67 | + | |
| 68 | +Settings trade smoothness for power: frame rate (30 by default) and | |
| 69 | +speed, where 0 holds a still frame and costs nothing after drawing it. | |
| 70 | + | |
| 71 | + moire/shaders/field.frag shader source | |
| 72 | + moire/theme/contents/ui/field.frag.qsb compiled; run tools/shaders.sh after editing | |
| 73 | + moire/theme/contents/ui/themes.js generated; tools/themes.py ../waxx/assets/css/app.css | |
| 74 | + moire/theme/contents/ui/schedule.js sun position and theme blending | |
| 75 | + moire/theme/contents/ui/Field.qml the picture, without Plasma | |
| 76 | + | |
| 77 | +`Field.qml` is plain QtQuick, so it can be rendered outside Plasma. | |
| 78 | +Offscreen rendering needs the GPU path, or the shader is skipped: | |
| 79 | + | |
| 80 | + QT_QUICK_BACKEND=rhi QSG_RHI_BACKEND=opengl QT_QPA_PLATFORM=offscreen qml6 ... | |
| 81 | + | |
| 51 | 82 | ## Enabling |
| 52 | 83 | |
| 53 | 84 | Installing a package does not switch to its theme: |
| 62 | 93 | printf '[Theme]\nCurrent=neiam\n' | sudo tee /etc/sddm.conf.d/neiam.conf |
| 63 | 94 | |
| 64 | 95 | Per user, in System Settings: the wallpaper under *Wallpaper* and |
| 65 | −*Screen Locking → Appearance*, the splash under *Splash Screen* | |
| 96 | +*Screen Locking → Appearance* (as the "Image" type for the stills, or | |
| 97 | +"neiam moire" for the animated one), the splash under *Splash Screen* | |
| 66 | 98 | (or `plasma-apply-wallpaperimage /usr/share/wallpapers/neiam` and |
| 67 | 99 | `kwriteconfig6 --file ksplashrc --group KSplash --key Theme org.neiam.desktop`). |
| 68 | 100 |
| 86 | 118 | cargo deb -p plymouth-theme-neiam --no-build --no-strip |
| 87 | 119 | cargo deb -p sddm-theme-neiam --no-build --no-strip |
| 88 | 120 | cargo deb -p plasma-wallpaper-neiam --no-build --no-strip |
| 121 | + cargo deb -p plasma-wallpaper-neiam-moire --no-build --no-strip | |
| 89 | 122 | cargo deb -p plasma-splash-neiam --no-build --no-strip |
| 90 | 123 | cargo deb -p neiam-branding --no-build --no-strip |
| 91 | 124 | tools/deb-fixup.sh target/debian/*.deb |
| 92 | 125 | cargo generate-rpm -p plymouth -a noarch |
| 93 | 126 | cargo generate-rpm -p sddm -a noarch |
| 94 | 127 | cargo generate-rpm -p wallpaper -a noarch |
| 128 | + cargo generate-rpm -p moire -a noarch | |
| 95 | 129 | cargo generate-rpm -p splash -a noarch |
| 96 | 130 | cargo generate-rpm -p branding -a noarch |
| 97 | 131 |
modified
branding/Cargo.toml
+3
−2
| 1 | 1 | [package] |
| 2 | 2 | name = "neiam-branding" |
| 3 | −description = "neiam device branding: boot splash, login screen, wallpaper and login splash" | |
| 3 | +description = "neiam device branding: boot splash, login screen, wallpapers and login splash" | |
| 4 | 4 | version.workspace = true |
| 5 | 5 | edition.workspace = true |
| 6 | 6 | authors.workspace = true |
| 14 | 14 | # every branding package. |
| 15 | 15 | [package.metadata.deb] |
| 16 | 16 | section = "metapackages" |
| 17 | −depends = "plymouth-theme-neiam, sddm-theme-neiam, plasma-wallpaper-neiam, plasma-splash-neiam" | |
| 17 | +depends = "plymouth-theme-neiam, sddm-theme-neiam, plasma-wallpaper-neiam, plasma-wallpaper-neiam-moire, plasma-splash-neiam" | |
| 18 | 18 | assets = [ |
| 19 | 19 | ["../README.md", "usr/share/doc/neiam-branding/README.md", "644"], |
| 20 | 20 | ] |
| 28 | 28 | plymouth-theme-neiam = "*" |
| 29 | 29 | sddm-theme-neiam = "*" |
| 30 | 30 | plasma-wallpaper-neiam = "*" |
| 31 | +plasma-wallpaper-neiam-moire = "*" | |
| 31 | 32 | plasma-splash-neiam = "*" |
added
moire/Cargo.toml
+30
−0
| 1 | +[package] | |
| 2 | +name = "plasma-wallpaper-neiam-moire" | |
| 3 | +description = "Animated neiam moire and halftone wallpaper for Plasma, optionally following the sun" | |
| 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 Plasma wallpaper plugin. shaders/ holds the shader's source; the | |
| 14 | +# package ships only the compiled .qsb (see tools/shaders.sh). | |
| 15 | +[package.metadata.deb] | |
| 16 | +section = "misc" | |
| 17 | +assets = [ | |
| 18 | + ["theme/metadata.json", "usr/share/plasma/wallpapers/org.neiam.moire/", "644"], | |
| 19 | + ["theme/contents/config/*", "usr/share/plasma/wallpapers/org.neiam.moire/contents/config/", "644"], | |
| 20 | + ["theme/contents/ui/*", "usr/share/plasma/wallpapers/org.neiam.moire/contents/ui/", "644"], | |
| 21 | + ["../README.md", "usr/share/doc/plasma-wallpaper-neiam-moire/README.md", "644"], | |
| 22 | +] | |
| 23 | + | |
| 24 | +[package.metadata.generate-rpm] | |
| 25 | +assets = [ | |
| 26 | + { source = "theme/metadata.json", dest = "/usr/share/plasma/wallpapers/org.neiam.moire/metadata.json", mode = "0644" }, | |
| 27 | + { source = "theme/contents/config/*", dest = "/usr/share/plasma/wallpapers/org.neiam.moire/contents/config/", mode = "0644" }, | |
| 28 | + { source = "theme/contents/ui/*", dest = "/usr/share/plasma/wallpapers/org.neiam.moire/contents/ui/", mode = "0644" }, | |
| 29 | + { source = "../README.md", dest = "/usr/share/doc/plasma-wallpaper-neiam-moire/README.md", doc = true, mode = "0644" }, | |
| 30 | +] |
added
moire/shaders/field.frag
+90
−0
Click to load diff…
added
moire/src/lib.rs
+1
−0
Click to load diff…
added
moire/theme/contents/config/main.xml
+60
−0
Click to load diff…
added
moire/theme/contents/ui/Field.qml
+86
−0
Click to load diff…
added
moire/theme/contents/ui/config.qml
+202
−0
Click to load diff…
modified
?
+0
−0
Click to load diff…
added
moire/theme/contents/ui/main.qml
+42
−0
Click to load diff…
added
moire/theme/contents/ui/schedule.js
+159
−0
Click to load diff…
added
moire/theme/contents/ui/themes.js
+62
−0
Click to load diff…
added
moire/theme/metadata.json
+17
−0
Click to load diff…
added
tools/shaders.sh
+21
−0
Click to load diff…
added
tools/themes.py
+98
−0
Click to load diff…
Parents: 26c46bb