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,