Ungoogleable fullfocus context switching issues on an external monitor

The solution given by this user works, but when mpv cycles to another media in the playlist - the behavior comes back. Being an mpv power user, i’m struggling to understand why that’ happens, and what’s even happening to begin with. I do understand what the content rules are, i don’t get what specific options are applied to an mpv instance when it goes fullscreen.

``
# for easy fullscreen switching
windowrule = content none, class:mpv
```

maybe an HDR modeset? try disabling hdr

render {
  direct_scanout = 0
  cm_fs_passthrough = 0
  cm_auto_hdr = 0

  }
misc {
 vrr = 0

}

Anything else i should change? I’m forcing srgb as well:

monitor = HDMI-A-1,[email protected],auto,1,cm,srgb

Running mpv with –no-config and –vo=gpu-next and –gpu-context=x11vk fixes the issue. I’m very confused.

partial mpv log

       vd: Pixel formats supported by decoder: vdpau vulkan cuda vaapi yuv420p
                     vd: Codec profile: High (0x64)
                     vd: Requesting pixfmt 'vaapi' from decoder.
                     vd: Using hardware decoding (vaapi).
                     vd: Decoder format: 1280x720 vaapi[nv12] auto/auto/auto/limited/auto CL=mpeg2/4/h264 crop=1280x720+0+0 A=none
                     vd: Using container aspect ratio.
                     vf: [in] 1280x720 vaapi[nv12] bt.709/bt.709/bt.1886/limited/display CL=mpeg2/4/h264 crop=1280x720+0+0 A=none
                     vf: [userdeint] 1280x720 vaapi[nv12] bt.709/bt.709/bt.1886/limited/display CL=mpeg2/4/h264 crop=1280x720+0+0 A=none
                     vf: [userdeint] (disabled)
                     vf: [autovflip] 1280x720 vaapi[nv12] bt.709/bt.709/bt.1886/limited/display CL=mpeg2/4/h264 crop=1280x720+0+0 A=none
                     vf: [autovflip] (disabled)
                     vf: [autorotate] 1280x720 vaapi[nv12] bt.709/bt.709/bt.1886/limited/display CL=mpeg2/4/h264 crop=1280x720+0+0 A=none
                     vf: [autorotate] (disabled)
                     vf: [convert] 1280x720 vaapi[nv12] bt.709/bt.709/bt.1886/limited/display CL=mpeg2/4/h264 crop=1280x720+0+0 A=none
            vo/gpu-next: Loading hwdec drivers for format: 'vaapi'
                     vf: [out] 1280x720 vaapi[nv12] bt.709/bt.709/bt.1886/limited/display CL=mpeg2/4/h264 crop=1280x720+0+0 A=none
                cplayer: VO: [gpu-next] 1280x720 vaapi[nv12]
                cplayer: VO: Description: Video output based on libplacebo
            vo/gpu-next: reconfig to 1280x720 vaapi[nv12] bt.709/bt.709/bt.1886/limited/display CL=mpeg2/4/h264 crop=1280x720+0+0 A=none
    vo/gpu-next/wayland: Reconfiguring!
            vo/gpu-next: Window size: 1280x720 (Borders: l=0 t=0 r=0 b=0)
            vo/gpu-next: Video source: 1280x720 (1:1)
            vo/gpu-next: Video display: (0, 0) 1280x720 -> (0, 0) 1280x720
            vo/gpu-next: Video scale: 1.000000/1.000000
            vo/gpu-next: OSD borders: l=0 t=0 r=0 b=0
            vo/gpu-next: Video borders: l=0 t=0 r=0 b=0
    vo/gpu-next/wayland: Handling resize on the vk side
            vo/gpu-next: Window size: 1920x1080 (Borders: l=0 t=0 r=0 b=0)
            vo/gpu-next: Video source: 1280x720 (1:1)
            vo/gpu-next: Video display: (0, 0) 1280x720 -> (0, 0) 1920x1080
            vo/gpu-next: Video scale: 1.500000/1.500000
            vo/gpu-next: OSD borders: l=0 t=0 r=0 b=0
            vo/gpu-next: Video borders: l=0 t=0 r=0 b=0
            vo/gpu-next: Forcing queue refill, PTS(0.000000 + 0.000000 | 0.008333) < VPTS(21.121000)
                cplayer: first video frame after restart shown
                cplayer: playback restart complete @ 0.000000, audio=eof, video=playing
    vo/gpu-next/wayland: Enabling idle inhibitor
                cplayer: Set property: user-data/osc/margins={"t":0,"b":0,"r":0,"l":0} -> 1
 vo/gpu-next/libplacebo: Detected fps ratio 0.0000 below threshold 0.0100, disabling interpolation
                cplayer: Set property: user-data/osc/margins={"t":0,"b":0,"r":0,"l":0} -> 1
 vo/gpu-next/libplacebo: Estimated source FPS: 30.000, display FPS: 30.000
                cplayer: Set property: user-data/osc/margins={"t":0,"b":0,"r":0,"l":0} -> 1
                cplayer: Saving state.
                cplayer: EOF code: 5
             statusline: V: 00:00:02 / 00:01:47 (2%) DS: 4.0000/0
                cplayer: finished playback, success (reason 3)
                cplayer: Running hook: ytdl_hook/on_after_end_file
    vo/gpu-next/wayland: Disabling the idle inhibitor
                cplayer: Exiting... (Quit)
                cplayer: Set property: user-data/osc/margins={"t":0,"b":0,"r":0,"l":0} -> 1
                cplayer: Can't find script 'thumbfast' to send message to.
    vo/gpu-next/wayland: Deregistering output LG Electronics LG FHD (HDMI-A-1) (0x40)
    vo/gpu-next/wayland: Deregistering seat 0x1
      clipboard/wayland: Deregistering seat 0x1

Sorry for being spammy. I’m trying to document this issue for others.

Here’s a good clue.

I’ve fixed this hyprland quirk in mpv with this:

--wayland-content-type=<auto|none|photo|video|game>
If supported by the compositor, mpv will send a hint using the content-type protocol telling the compositor what type of content is being displayed. auto (default) will automatically switch between telling the compositor the content is a photo, video or possibly none depending on internal heuristics.

This should be documented.