Skip to content

[ryoku] lockscreen: keep the picked skin on the Fedora sign-in screen - #743

Merged
aethctl merged 1 commit into
Ryoku-dev:unstable-devfrom
itsKontra:fix/fedora-greeter-skin-overwrite
Nov 6, 2026
Merged

aethctl merged 1 commit into
Ryoku-dev:unstable-devfrom
itsKontra:fix/fedora-greeter-skin-overwrite

Conversation

@itsKontra

@itsKontra itsKontra commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

What changed

On Fedora, a lock skin picked in the Hub does not stay on the sign-in screen. sddm-theme-ryoku owned the skin files in /usr/share/sddm/themes/ryoku, the directory the picker writes to, so each package update put Orbital back. The Hub kept naming the pick. The Arch packaging has no owner for this path, so only Fedora is affected.

 sddm-theme-ryoku
-  owns themes/ryoku/{Main.qml,metadata.desktop,theme.conf,...}  # flat Orbital
+  owns themes/ryoku/ only

 ryoku-desktop %posttrans
+  if themes/ryoku/Main.qml is missing
+    re-host themes/ryoku/theme if it holds a skin, else seed Orbital

Area

ryoku

How it was tested

Real rpm -U upgrades of sddm-theme-ryoku, built from the old and new specs, in a throwaway RPM root. The new %posttrans block was extracted from the parsed ryoku-desktop spec and run against that root:

Scenario Root Main.qml theme/
Before: pick a skin, update the old package Orbital (overwritten) the pick, ignored
After: pick a skin, upgrade to the new package host the pick
After: update the new package again host the pick
After: never picked, upgrade host Orbital
After: already overwritten, no theme/ host, stale files cleared Orbital, until the skin is re-applied
  • The bug was seen on a Fedora 44 box: ~/.config/qylock/theme said last-of-us while the greeter's Main.qml matched the shipped Orbital byte for byte, and an earlier pick's bg.mp4 was still beside it.
  • SELinux is not the cause. The loaded policy allows xdm_t to read the data_home_t labels that cp -a carries over.

Not tested:

  • Building the full ryoku-desktop RPM. Its spec was parsed, and the scriptlet passes sh -n.
  • Booting into the fixed greeter after a real package update.

Merge danger

Door: two-way. Reverting restores the old package payload. The only skin data involved is the copy under /usr/share; the user's copy under ~/.local/share is never written.

Blast radius: Fedora login screen.

  • A box whose skin was already overwritten comes back on Orbital while the Hub still names the pick, and has to re-apply it once. The Hub ignores a click on the active skin, so that means picking another skin and switching back, or running ryoku-hub lock set <slug>.
  • The one-time upgrade erases the old package's files and rebuilds with a 12-hour clock until doctor next corrects it.
  • If the %posttrans block fails, the greeter directory has no Main.qml until a skin apply. The failure is logged under ryoku-greeter. Doctor treats a missing Main.qml as "not installed", so it will not repair this.

Checklist

  • One logical change, with a clear [area] scope: summary commit subject.
  • Matching CHANGELOG.md updated in the area I touched.
  • The git hooks pass locally; I did not use --no-verify.
  • Lua parses (luac -p), shell scripts pass bash -n, and QML passes
    qmllint where applicable. (No Lua or QML changed; the scriptlet passes sh -n.)
  • No duplicated config, no dead code, no commented-out code, no em-dash.
  • Docs updated if behavior or layout changed. (No docs describe this package's payload.)

sddm-theme-ryoku owned the skin files in /usr/share/sddm/themes/ryoku, the
fixed directory the Hub's picker writes to, so every package update laid the
shipped Orbital back over the shared host. The Hub kept naming the pick while
the sign-in screen wore Orbital.

The package now owns only the directory. ryoku-desktop's posttrans rebuilds the
host around a skin already there, or seeds the default when there is none.

Note: Fixed: your lock skin now stays on the Fedora sign-in screen after an update
@itsKontra
itsKontra force-pushed the fix/fedora-greeter-skin-overwrite branch from dab13ec to c302ec7 Compare November 5, 2026 21:14
@aethctl
aethctl merged commit 4542802 into Ryoku-dev:unstable-dev Nov 6, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants