Skip to content

feat(thumbnailer): provide opt-in ujust toggle for ffmpeg thumbnailer daemon #1229

Closed

Description

@castrojo

Summary

The rootless ffmpeg thumbnailer introduced in PR #1226 ships enabled by default for graphical user sessions via systemd user presets.

For users on constrained systems, low-bandwidth metered connections (where downloading a 111 MB Alpine image is undesirable), or systems with dedicated hardware thumbnailers, provide a clean ujust toggle.

Proposed Solution

Add recipes to system_files/shared/usr/share/ublue-os/just/shared.just:

  • ujust toggle-ffmpeg-thumbnailer: enable or disable the user quadlet and daemon service via systemctl --user mask/unmask.
  • ujust status-ffmpeg-thumbnailer: inspect container status, daemon socket, and recent thumbnailing activity.

Activity

  1. sramkrishna commented on Sep 25, 2026

    @sramkrishna
    Contributor

    Implemented in #1234 — ujust toggle-ffmpeg-thumbnailer and ujust status-ffmpeg-thumbnailer in system_files/shared/usr/share/ublue-os/just/shared.just.

    Design decisions worth a reviewer's attention:

    • Disable masks, it does not disable. The daemon is also pulled in by the static graphical-session.target.wants/ffmpeg-thumbnailer-daemon.service symlink shipped in /usr/lib, which systemctl --user disable cannot remove, and the two container units are quadlet-generated so they carry no install state for systemctl to edit. systemctl --user mask (per-user, no sudo) outranks both, and it blocks the container quadlets so the image is never pulled again while the toggle is off.
    • Stop runs before mask, so the daemon unlinks its socket on SIGTERM instead of leaving a stale path.
    • Both recipes probe for the daemon unit first, so images that do not ship the thumbnailer (Aurora) report "not installed" and exit 0.
    • status-ffmpeg-thumbnailer is strictly read-only: unit state, container state, daemon socket, recent journal lines.

    Merge order: #1226 is still open, so on main today both recipes are no-ops that report "not installed". #1234 is safe to land before or after #1226.

    Covered by 28 new bats cases in tests/test_shared_just.bats, which is now wired into unit-tests.yml (it was in the Justfile runner but no CI step ran it).

    — hive: backend=litellm model=deepseek/deepseek-v4.1-flash
    🤖 Generated with Claude Code

    🐝 Hive Agent: contributor | SHA: 66b9089

  2. added
    🐝 covered by PRHive verified that an open PR references or claims this issue; still actionable until confirmed
    on Sep 25, 2026
  3. added
    blockedWaiting on something outside this repository. Use `/label blocked` or `/remove-label blocked`.
    needs-decisionWaiting on a maintainer decision; not contributor work until a human clears the label
    and removed
    blockedWaiting on something outside this repository. Use `/label blocked` or `/remove-label blocked`.
    needs-decisionWaiting on a maintainer decision; not contributor work until a human clears the label
    on Sep 29, 2026
  4. added
    needs-decisionWaiting on a maintainer decision; not contributor work until a human clears the label
    and removed
    🐝 covered by PRHive verified that an open PR references or claims this issue; still actionable until confirmed
    on Oct 2, 2026
  5. hivecommons-hive commented on Oct 2, 2026

    @hivecommons-hive
    Contributor

    What to reply

    • /hive approve: go with the recommendation
    • /hive decision <your instructions>: go ahead, following your instructions
    • /hive help: show these again

    If this issue is waiting only for reporter confirmation after a merged fix, the reporter or a maintainer can reply /fixed instead.

    Only a maintainer with write access can un-park; everything else is ignored. Full command reference: https://github.com/hivecommons/hive/blob/v5/src/docs/maintainer-commands.md.

  6. added
    needs-humanHuman input is required before Hive may start new implementation work.
    needs-kindA maintainer must classify this issue; the intake source did not establish its kind.
    and removed on Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-decisionWaiting on a maintainer decision; not contributor work until a human clears the labelneeds-humanHuman input is required before Hive may start new implementation work.needs-kindA maintainer must classify this issue; the intake source did not establish its kind.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions