You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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
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.
Default config breaks mpvpaper ≤ 1.8. auto_pause = "full" emits --auto-mode FULL, which exists only in mpvpaper 1.9+ (verified against 1.8/1.9 man pages). Older binaries reject the unknown flag and exit → wallpaper never starts. Fix: runtime probe (mpvpaper --help grep auto-mode) with fallback to plain --auto-pause, or hard-document the 1.9 floor.
Keyboard auto-repeat on the interval slider → one full mpvpaper restart per keypress (arrows/Page/Home/End fire onDragEnd; wheel is inert by default, so no scroll storm). Bounded, user-initiated, final state correct — acceptable as-is. If it ever annoys: coalesce in the service (applyPending flag, apply in the existing 1 s update() tick, checked before the interval gate so interval→0 commits apply
too).
Panel label staleness (slideshowMinutes seeded only in onOpen), minutes-vs-seconds units across IPC/slider, wildcard "*" + slideshow untested, auto_pause description mentions "stop" with no stop option, EOF newlines stripped, spam comment on the PR.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add directory-based slideshow support to the
mpvpapervideo wallpaper plugin and wire up the newmpvpaperauto-pause flags in the headless service and picker UI.Update
README.md,plugin.toml, andtranslations/en.jsonto document and expose the new behavior.Motivation
The existing plugin only supported a single video file per output, even though
mpvpapercan 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
mpvpaperauto-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
Related Issue
None explicitly; this is a feature enhancement to the
mpvpaperplugin and an integration of the new auto-pause flags.Testing
Manual Coverage
Ran the plugin locally with the updated
mpvpaperservice 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
mpvpapercycles 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.jsonstrings 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
Checklist
translations/en.json, or this PR adds no new user-facing strings.Additional Notes
mpvJSON IPC (viasocat) to track the currently displayed file when a slideshow is active, updatingassignmentsand static wallpaper frames to match. Ifsocatis not available, slideshows still play, but tile highlighting and static frame extraction may not perfectly follow the current file.mpvpaperthat supports the--slideshowflag and the newer auto-pause flags; older versions will not get the full benefit of these changes.