Watching live TV on a second monitor while you work
Two ways to do it, and one detail about HDR on a mixed-monitor desk that explains a picture nobody could otherwise account for.
A channel on the second screen while you work is one of the two things a desktop does that a television cannot. There are 2 ways to arrange it, and they suit different desks.
Picture-in-picture, or a second window
Ctrl+P opens picture-in-picture. It is a real second window rather than an overlay painted on the first: the video surface is migrated across, which is more work than it sounds and is the reason it keeps playing while you drag it between displays.
Use it when the channel is genuinely secondary. Small, always on top, out of the way in a corner.
Ctrl+P picture-in-picture, a second window that follows you between displays
F fullscreen on whichever display the window is on
M mute, but only while the player owns fullscreen on live TV
The alternative is to put the main window on the second monitor and leave it there. Use that when the second screen is a television or a spare panel with nothing else on it, because a full window gives you the channel list, the guide and the transport controls without a trip back.
One behaviour here catches people, and it is deliberate. The transport shortcuts do not act on live TV unless the player owns fullscreen. So a channel running in a background window will not respond to M or the space bar while you are typing in another application. That is the correct answer: your keystrokes belong to the thing you are looking at.
The mixed-monitor detail
This one accounts for a picture that otherwise makes no sense.
HDR is decided per window and per monitor, not once for the application. The app looks up which display the window is actually on and reads that display's colour space before deciding whether to ask for a 10-bit surface. It is done that way precisely because of the two-screen desk: an HDR monitor next to an SDR one should not cause the SDR one to inherit HDR handling.
So dragging the player from an HDR panel to an SDR panel changes what it asks for. That is right, not a glitch.
We got this wrong the first time, in a way that only shows up in a running app. The first implementation asked for 10 bits unconditionally, on the reasoning that it costs the same 4 bytes per pixel. No test caught the problem: a 10-bit swapchain changes how the compositor treats the video plane, the translucent player chrome composited lighter, and the transport controls started ghosting through the video underneath. Auto now asks for 10 bits only where the display reports HDR, and any probe failure answers SDR, because SDR is the answer that cannot regress anything.
If you force HDR to Always on an SDR panel, the output goes PQ and looks washed out. That escape hatch exists for displays that under-report, not as a quality setting.
Making a background channel cheap
Three things help, and none of them is obvious.
Mute it. Not for politeness: the audio path is what pins a device and, with passthrough on, opens it in exclusive mode.
Consider a multiview tile instead of the full player. A muted tile is capped at 640 by 360 and runs 350 and 200 milliseconds of buffer against the live path's 1200 and 800. Lower resolution, smaller buffers, less work, and for a channel in the corner of a second screen you will not see the difference. Multiview covers the layouts.
Set the sleep timer if this is an evening habit. Off, 15, 30, 60 or 90 minutes with a countdown. It is session state and never persisted, so it cannot survive a restart and stop a stream nobody armed. On live it clears playback when it expires, because there is no position worth keeping and the provider connection should not run all night. On a film it pauses instead and keeps your place.
What this costs your provider line
Every stream is a connection. A channel on the second monitor while somebody else watches in the living room is 2 connections, and most lines allow 1 or 2. This is the most common cause of "it worked this morning and now it does not". Max connections covers the counting, including why a connection can stay spent after you have stopped watching.
For the full key map, including which keys are on-demand only, keyboard shortcuts worth knowing.
What this article measured21 claims, each with the evidence behind it
| Claim | Evidence | Counted |
|---|---|---|
| Picture-in-picture is a separate window that the video surface is migrated into, not an overlay drawn on the main one, and it survives being moved between displays. | n = 1 | Aug 23, 2026 |
| HDR is decided per window and per monitor. The app matches the window to the display it is on before deciding whether to ask for a 10-bit surface, specifically so a two-screen desk does not inherit the other panel's state. | n = 1 | Aug 23, 2026 |
| Requesting 10 bits unconditionally was tried and reverted. It changes how the compositor treats the video plane, and the translucent player chrome composited lighter, so the transport controls ghosted through. | n = 1 | Aug 23, 2026 |
| The transport keys do not act on live TV unless the player owns fullscreen, so a channel running in a background window is not driven by the keyboard while you type in another app. | n = 1 | Aug 31, 2026 |
| The live path applies 1200 ms of network caching and 800 ms of live caching, against 350 and 200 on a muted multiview tile. | n = 1 | Aug 23, 2026 |
| Entering picture-in-picture opens a floating always-on-top window and reparents the video canvas into it without stopping playback, rather than starting a second stream. | n = 1 | Sep 1, 2026 |
| The engine remembers which element the video came from so it can be docked back, and remembers whether that slot used the live aspect and whether an on-demand underlay was showing. | n = 3 | Sep 1, 2026 |
| If the page that owned the video is navigated away while the floating window is up, restoring it plainly would dock the video against a disconnected element and strand it in the corner of the shell, so dismissal forces navigation back to the owning page instead. | n = 1 | Sep 1, 2026 |
| Entering is a multi-stage operation that shows the floating window before the active flag flips, so each stage carries the generation it started under and aborts if a force-close has happened since. That is what stops an in-flight entry re-opening the window behind an authentication gate. | n = 1 | Sep 1, 2026 |
| The console compiles a stub instead, whose active state is permanently false and whose toggle does nothing, because a console has one screen. | n = 1 | Sep 1, 2026 |
| The controls that would open a second window are hidden rather than disabled when the head reports multi-window unsupported, so the difference is invisible rather than greyed out. | n = 1 | Sep 1, 2026 |
| Every primary player is constructed with a 400 millisecond network cache before any per-path value is layered on top. | n = 1 | Sep 1, 2026 |
| A multiview tile is built from a different base option set than the main player: it drops snapshot and on-screen-display suppression it does not need, and adds a title-overlay suppression it does, or every tile prints the stream name over the video. | n = 2 | Sep 1, 2026 |
| Three player roles exist and not all of them may claim the audio device: the primary the viewer watches, a failover standby, and mosaic tiles of which several run at once. | n = 3 | Sep 1, 2026 |
| Four conditions must hold before HDR is requested at all: the desktop head, a non-mosaic role, a surface that actually came up 10-bit, and a runtime-probed library version at or above 3.0.21. | n = 4 | Aug 23, 2026 |
| The video surface tries three configurations in order, and its last rung is byte-identical to the previously shipped one, so a display chain that cannot compose 10-bit behaves exactly as it did before. | n = 3 | Aug 23, 2026 |
| Fullscreen and picture-in-picture were both exercised against real 4K sources, resizing and migrating across windows while continuing to play, with zero errors logged across the pass. | n = 1 | Aug 23, 2026 |
| Leaving a channel running is not free: a 12 minute browse session ended at 918 MB of working set against a 400 MB budget, with the growth in native rather than managed memory. | n = 3 | Aug 30, 2026 |
| Asking for 10 bits unconditionally was tried on the reasoning that it costs the same 4 bytes per pixel, and reverted: the compositor treats the video plane differently and the translucent chrome above it composited lighter. | n = 1 | Aug 23, 2026 |
| Forcing HDR on a display that is genuinely SDR makes the player output PQ, which looks washed out. The setting exists for panels that under-report rather than as a quality control. | n = 1 | Aug 23, 2026 |
| The sleep timer offers Off, 15, 30, 60 and 90 minutes with a live countdown, is session state that is never persisted, and clears live TV on expiry while pausing on-demand playback. | n = 1 | Aug 31, 2026 |