Skip to content

Add slideshow support to mpvpaper plugin and the new mpvpaper auto-pause flags - #42

Open
lawnninja wants to merge 2 commits into
noctalia-dev:mainfrom
lawnninja:mpvpaper-slideshow
Open

Add slideshow support to mpvpaper plugin and the new mpvpaper auto-pause flags#42
lawnninja wants to merge 2 commits into
noctalia-dev:mainfrom
lawnninja:mpvpaper-slideshow

Conversation

@lawnninja

Copy link
Copy Markdown

Summary

Add directory-based slideshow support to the mpvpaper video wallpaper plugin and wire up the new mpvpaper auto-pause flags in the headless service and picker UI.
Update README.md, plugin.toml, and translations/en.json to document and expose the new behavior.

Motivation

The existing plugin only supported a single video file per output, even though mpvpaper can drive slideshows across multiple files. This PR lets users treat a directory of videos as a rotating wallpaper, starting from the file they click in the picker.
It also aligns the plugin with the newer mpvpaper auto-pause modes (e.g. fullscreen/maximized) and improves UX by keeping static frame extraction and tile highlighting in sync with the currently displayed slideshow.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring
  • Build / packaging

Related Issue

None explicitly; this is a feature enhancement to the mpvpaper plugin and an integration of the new auto-pause flags.

Testing

Manual Coverage

  • Ran the plugin locally with the updated mpvpaper service and panel:

  • Verified that selecting a video from the picker on an output starts playback as before.

  • Enabled a slideshow interval via the new slider and confirmed that mpvpaper cycles through all supported files in that directory starting from the selected file.

  • Exercised pause/resume/toggle/clear/clear-all paths via:

  • Picker controls (Pause/Resume, Stop, All Outputs).

  • IPC commands using noctalia msg plugin noctalia/mpvpaper:service ... to ensure slideshow state does not break existing behavior.

  • Confirmed that static frame extraction still works when stopping a slideshow (where enabled).

  • Checked that translations/en.json strings render correctly for the slideshow label and “Off” state.

  • Tested on Niri

  • Tested on Hyprland

  • Tested on Sway

  • Tested on another compositor:

  • Tested with different bar positions and density settings

  • Tested at different interface scaling values

  • Tested with multiple monitors

Screenshots / Videos

screenshot_20260809_223954-region screenshot_20260809_223929-region screenshot_20260809_223909-region

Checklist

  • This PR is ready for review, or it is marked as Draft.
  • I self-reviewed the changes.
  • I added or updated translations/en.json, or this PR adds no new user-facing strings.
  • I did not edit non-English translation files unless this PR is explicitly for translation tooling, an import/export sync, or a maintainer-requested locale change.

Additional Notes

  • Slideshows are driven entirely by the picker’s interval slider; there is no manifest setting fallback. The service persists the interval and reapplies assignments so existing outputs pick up the new slideshow configuration.
  • The service now uses mpv JSON IPC (via socat) to track the currently displayed file when a slideshow is active, updating assignments and static wallpaper frames to match. If socat is not available, slideshows still play, but tile highlighting and static frame extraction may not perfectly follow the current file.
  • The plugin assumes a version of mpvpaper that supports the --slideshow flag and the newer auto-pause flags; older versions will not get the full benefit of these changes.

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.

1 participant