Skip to content

Support flutter-based screensavers (webOS 10+), add remove/restore - #15

Open
seth586 wants to merge 1 commit into
webosbrew:mainfrom
seth586:webos10-flutter-screensaver
Open

seth586 wants to merge 1 commit into
webosbrew:mainfrom
seth586:webos10-flutter-screensaver

Conversation

@seth586

@seth586 seth586 commented Oct 19, 2026

Copy link
Copy Markdown

Fixes #14, helps #13.

Problem

On webOS 10+ firmware (verified on an OLED77B2PUA, webOS 10.3.1 / 33.31.61) the
stock screensaver app is a flutter bundle: type: flutter, main pointing
at the app directory, and no qml/ at all. The historical
bind-over-qml/main.qml has no target, so apply exits with
Could not detect screensaver QML target (#14), and the same gap breaks every
workaround built on top of it.

Change

assets/apply.sh now detects both generations:

  • legacy qml — unchanged behavior (bind over qml/main.qml)
  • flutter (webOS 10+) — stage a full qml app in
    /var/lib/webosbrew/custom-screensaver/: the stock appinfo retyped to
    qml with main: qml/main.qml, plus this app's screensaver-main.qml,
    then bind-mount the whole staged directory over
    /usr/palm/applications/com.webos.app.screensaver. sam accepts the
    qml-typed copy of the flutter appinfo on 10.3.1.

Also:

  • apply.sh remove (+ a Restore stock screensaver button) unmounts the
    overlay immediately — no reboot needed (Cannot restore original screen saver! #13)
  • idempotent apply, and a best-effort sam block/release after staging
  • staging survives reboots via the existing autostart hook

Validation

  • OLED77B2PUA, webOS 10.3.1 (33.31.61), rooted via slopbro
  • apply/remove round-trip clean; staged overlay accepted by sam
    (getAppInfo reports type: qml after a sam reload)
  • known caveat, documented in the README: on webOS 10 sam only sometimes picks
    the type change up from block/release alone — a systemctl restart sam.service (or reboot) settles it if the screensaver misbehaves after
    toggling. Happy to iterate on making the transition smoother if you'd
    prefer the restart be automatic.

The screensaver QML itself is unchanged; this only fixes the apply/remove
machinery so the existing aerial qml runs on new firmware.

webOS 10 and later ship a flutter-type screensaver app with no qml/ dir, so
the historical bind-over-qml/main.qml has no target and apply.sh exits with
'Could not detect screensaver QML target' (webosbrew#14).

- detect both generations: legacy qml keeps the old bind, flutter firmware
  get a staged qml app (stock appinfo retyped to qml + screensaver-main.qml)
  bind-mounted over the app directory
- add 'apply.sh remove' plus a Restore-stock button so the overlay can be
  undone without a reboot (webosbrew#13)
- best-effort sam block/release after staging

Verified on OLED77B2PUA, webOS 10.3.1 (fw 33.31.61): apply/remove round-trip
clean, sam accepts the staged qml appinfo after a sam reload.

Fixes webosbrew#14, helps webosbrew#13.
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.

Not working on WebOS 25, When support for Flutter?

1 participant