A Summer of Rebuilding Remote Control, Monitor by Monitor

Multi-monitor switching, true full screen, a DXGI capture fix, and the ghost-monitor races we finally closed — everything that changed in remote sessions this cycle.

T
The Plenix Team·18 September 2026·3 min read

Remote control is the feature technicians live in all day, every day. It's also, unglamorously, one of the hardest things to get right — screen capture APIs, monitor topology, codec negotiation, and every Windows/macOS/Linux quirk in between. This summer we rebuilt a big chunk of it.

The bug that started it all

Screen capture on Windows relies on the DXGI Desktop Duplication API — and for a long time, ours was calling DuplicateOutput at the wrong point in the vtable. It half-worked often enough that it took real digging to nail down, and completely explained a string of "capture just doesn't start" reports that had been filed as one-off flakiness. Fixed in agent v3.34.0, it turned an intermittent annoyance into a solved problem.

Multi-monitor, done properly

The next chunk of work was topology: technicians increasingly connect to machines with two, three, or more displays, and the old flow forced you to pick one monitor for the whole session. Remote sessions now carry a monitor picker in the session toolbar — switch which display you're viewing mid-session, no reconnect required, no interruption to whatever else is running on the device.

Getting there meant closing two real races that had been quietly leaving ghost VNC monitors behind after RDP sessions ended — a leftover virtual display that the next technician's session would pick up by mistake. Both races are closed now; a stale monitor from a previous session can no longer bleed into the next one.

True full screen

The other visible change: full screen used to mean "the remote desktop, squeezed into whatever space was left after the toolbar." Now the toolbar — disconnect, monitor picker, terminal, file transfer — overlays on top of the remote screen instead of shrinking it. You get the device's actual native resolution in full screen, with every control still one click away instead of buried in a menu.

Cross-platform, for real

None of this is Windows-only anymore. The Go-based agent (apps/agent-go) now runs remote control across Windows, macOS, and Linux, including WebRTC-based screen sharing on Windows and cross-platform scaffolding for the rest. Terminal access and file transfer already worked everywhere; live screen capture catching up across platforms has been this cycle's real headline, alongside continued investigation into a still-outstanding Linux/Wayland edge case — screen-sharing over a Wayland compositor hits a D-Bus permission wall unrelated to the DXGI/VNC work above, and that one remains open.

Why it matters

None of this shows up as a big banner feature. It shows up as remote sessions that just work — the right monitor, the full resolution, no ghost sessions clogging up a device the next time someone connects. That's the bar for infrastructure your team relies on every single day: it should be reliable enough that nobody has to think about it.