Desktop: mini-player — a small always-on-top window with basic controls #12

Open
opened 2026-08-18 05:53:05 +00:00 by logan · 0 comments
Collaborator

Report

Feature request: a very small always-on-top window with basic transport controls and now-playing metadata, as an alternative to keeping the whole app window up.

Findings

  • Wails v3 supports multiple windows: app.Window.NewWithOptions(...) in main.go creates the main one, and AlwaysOnTop is a window option.
  • The frontend is one bundle; a second window would load the same assets with a query/hash selecting a mini-player root, so frontend/index.ts would need an entry branch that mounts only that component.
  • The stores are singletons per window; state comes from backend events, which are broadcast, so both windows stay in sync for free. Anything read once at startup needs checking.

Direction

Scope for a first cut: art, title/artist, play-pause, prev/next, seek bar, close-to-tray-ish behaviour. Open questions: does closing the main window keep the app alive (interacts with ShouldQuit's async veto), and does the mini window get its own MPRIS/media-controls handling (it should not — that is process-level).

Related: the "small window sizes" issue floats switching to a mini-player mode when the main window is shrunk far enough.

**Report** Feature request: a very small always-on-top window with basic transport controls and now-playing metadata, as an alternative to keeping the whole app window up. **Findings** - Wails v3 supports multiple windows: `app.Window.NewWithOptions(...)` in `main.go` creates the main one, and `AlwaysOnTop` is a window option. - The frontend is one bundle; a second window would load the same assets with a query/hash selecting a mini-player root, so `frontend/index.ts` would need an entry branch that mounts only that component. - The stores are singletons *per window*; state comes from backend events, which are broadcast, so both windows stay in sync for free. Anything read once at startup needs checking. **Direction** Scope for a first cut: art, title/artist, play-pause, prev/next, seek bar, close-to-tray-ish behaviour. Open questions: does closing the main window keep the app alive (interacts with `ShouldQuit`'s async veto), and does the mini window get its own MPRIS/media-controls handling (it should not — that is process-level). Related: the "small window sizes" issue floats switching to a mini-player mode when the main window is shrunk far enough.
logan added the Area/PlayerKind/FeaturePlatform/Desktop
Priority
Low
4
labels 2026-08-18 14:36:05 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yonlu/yellowjacket#12