From 9300266f5c66c6621db9bb0f782e0cae3b5da341 Mon Sep 17 00:00:00 2001 From: Levi Woodard Date: Wed, 1 Jul 2026 19:54:33 -0500 Subject: [PATCH] Fit any-aspect camera into its tile without cropping Add --keepaspect-window=no so mpv stops reshaping its window to the video aspect (which pushed a 4:3 camera below its tile and hid the bottom behind the neighbour). Combined with keepaspect=yes the video is letterboxed to fit the tile for any camera type. Co-Authored-By: Claude Opus 4.8 (1M context) --- internal/player/player.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/internal/player/player.go b/internal/player/player.go index 6368325..17a85f7 100644 --- a/internal/player/player.go +++ b/internal/player/player.go @@ -67,11 +67,17 @@ func (p *Player) args() []string { "--cursor-autohide=always", "--no-border", "--fullscreen=no", // we tile via the compositor, not fullscreen - // Keep aspect (letterbox) inside the tile; the compositor owns the - // window size, not the video. mpv still resizes its window to the - // video resolution on load (and mpv 0.35 lacks the flag to disable - // that), so the daemon re-asserts each tile's geometry on a timer. + // Fit any camera into its tile regardless of the camera's aspect: + // * keepaspect=yes → letterbox the video, never crop/stretch + // * keepaspect-window=no → do NOT reshape the window to the video's + // aspect; accept the tile size the compositor assigns. Without this + // mpv grows the window to e.g. 4:3 and the overflow is hidden under + // the neighbouring tile ("bottom cut off"). + // mpv still resizes the window to the video's pixel size on load (mpv + // 0.35 lacks --auto-window-resize), so the daemon re-asserts each + // tile's geometry on a timer. "--keepaspect=yes", + "--keepaspect-window=no", "--title=" + p.Title(), "--input-ipc-server=" + p.ipcPath, "--hwdec=" + p.cfg.HWDec,