Skip to content

wayland: implement session management#17732

Open
mahkoh wants to merge 1 commit intompv-player:masterfrom
mahkoh:jorth/session-management
Open

wayland: implement session management#17732
mahkoh wants to merge 1 commit intompv-player:masterfrom
mahkoh:jorth/session-management

Conversation

@mahkoh
Copy link
Copy Markdown
Contributor

@mahkoh mahkoh commented Apr 10, 2026

If the compositor supports session management, the mpv window is always added to a session. The user can manage multiple sessions my using --wayland-session=<human-readable-name>. Human-readable names are mapped to session ids via files under ~/.local/state/mpv/sessions. The file name is computed as a hash of XDG_CURRENT_DESKTOP and the human-readable name.

If multiple mpv instances are started with the same session name, the latter mpv instance takes over the session.

Upon session restoration, the mpv window is restored by the compositor according to its state from the previous session. What that entails is compositor policy.

Copilot AI review requested due to automatic review settings April 10, 2026 10:52
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Implements Wayland session management support (xdg-session-management-v1) so mpv’s Wayland window can participate in compositor-managed sessions, with a new --wayland-session option to select a human-readable session name persisted under the user state directory.

Changes:

  • Add xdg-session-management-v1 integration to the Wayland VO (create/restore session + persist session id to disk).
  • Introduce --wayland-session VO option and plumb it into option structs/defaults.
  • Extend Meson Wayland-protocol generation to include wayland-protocols 1.48 and document the new option/change.

Reviewed changes

Copilot reviewed 4 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
video/out/wayland_common.h Store xdg session objects in Wayland VO state (guarded by HAVE_WAYLAND_PROTOCOLS_1_48).
video/out/wayland_common.c Bind xdg-session-manager, create/restore sessions, and persist session ids under the state dir.
video/out/meson.build Add wayland-protocols 1.48 feature detection and generate xdg-session-management protocol code.
options/options.h Add wayland_session field to VO options struct.
options/options.c Register --wayland-session and set default to empty string.
DOCS/man/options.rst Document new --wayland-session option.
DOCS/interface-changes/wayland-session.txt Record interface change for the new option/behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

This only has an effect if ``--video-sync=display-...`` is being used.

``--wayland-session=<string>``
Set the wayland session name for window restoration (default: ``).
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default value in the option documentation is missing closing quotes/backticks (it currently renders as default: ``)). This should document the empty-string default correctly (e.g. default: "").

Suggested change
Set the wayland session name for window restoration (default: ``).
Set the wayland session name for window restoration (default: ``""``).

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

@mahkoh mahkoh Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rst devs when it comes to handling empty strings

image

@mahkoh mahkoh force-pushed the jorth/session-management branch 2 times, most recently from daf7f16 to 0552713 Compare April 10, 2026 11:04
If the compositor supports session management, the mpv window is always
added to a session. The user can manage multiple sessions my using
`--wayland-session=<human-readable-name>`. Human-readable names are
mapped to session ids via files under `~/.local/state/mpv/sessions`. The
file name is computed as a hash of XDG_CURRENT_DESKTOP and the
human-readable name.

If multiple mpv instances are started with the same session name, the
latter mpv instance takes over the session.

Upon session restoration, the mpv window is restored by the compositor
according to its state from the previous session. What that entails is
compositor policy.
@mahkoh mahkoh force-pushed the jorth/session-management branch from 0552713 to 8b1d0c6 Compare April 11, 2026 13:47
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.

2 participants