Repository navigation
feat(render): add a capture-visible liquid glass compatibility mode - #243
Merged
Merged
Conversation
Liquid glass keeps hiding the island from screen capture by default. The new "liquid_glass_compat_capture" option instead samples the desktop through a cloaked Magnification window that excludes WinIsland's own windows, so the island stays visible in screenshots, recordings, and remote desktop at the cost of about one frame of background latency and slightly more CPU. If the magnifier cannot start, capture falls back to the excluded monitor path. Capture restarts now continue from the shared fence's completed value, so switching modes at runtime no longer fails every copy with E_INVALIDARG. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…anges Moving the settings window between monitors with different scaling could leave its physical size at the old scale while the content kept the new logical size, so the panel was clipped, could not reach the screen edges, and the sidebar blur spilled past it. The window now retries the DPI resize once, adopts its real size on every redraw, and the sidebar blur is clamped to the drawn panel. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5 of 22 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pre-submission checklist
CONTRIBUTING.mdand completed the required checksChange type (select one)
featNew featurefixBug fixdocsDocumentation or templatesstyleFormatting with no behavior changerefactorCode change that neither fixes a bug nor adds a featureperfPerformance improvementtestTest-related changechoreBuild, CI, dependency, or tooling changerevertRevertsecuritySecurity fixScope (select all that apply)
Related issues
Description
Summary
Adds an opt-in liquid glass "compatibility mode" that keeps the island visible in screenshots, recordings, and remote desktop, and fixes the settings window clipping after moving between monitors with different scaling.
Motivation and context
Liquid glass sets
WDA_EXCLUDEFROMCAPTUREon the island so the monitor capture never samples the island itself. That makes the island disappear from screenshots, recordings, and remote desktop. Some users need the island to stay capturable, even at a small latency cost.Separately, moving the settings window from a 150 % monitor to a 100 % one could leave the window at its old physical size while the content kept the new logical size. The panel was clipped to part of the window, could not reach the screen edges, and the sidebar blur spilled below it.
Changes
Liquid glass compatibility mode (
liquid_glass_compat_capture, default off)WDA_EXCLUDEFROMCAPTURE.capture/magnifier.rsruns a Magnification control in a DWM-cloaked host window on its own thread. Its exclude filter list contains every top-level window of the WinIsland process. Windows.Graphics.Capture captures that host window (CreateForWindow) instead of the monitor, so the island needs no capture exclusion.WindowSystem::start_backdrop_capturetakes avisible_to_captureflag. The app restarts capture when the setting changes at runtime.Signalfailed withE_INVALIDARGand the glass fell back to a solid fill.Settings window DPI fix
handle_resizedretries a mismatched DPI resize once, then always adopts the real window size instead of returning early.logical size × scaleoutside the DPI callback if the size did not follow.Measurements (60 Hz, 15 s runs, same machine)
Verified: both modes and runtime switching (window display affinity and the cloaked host window follow the setting), and the island appears in a GDI screenshot with glass in compat mode. Not verified: Windows 10, HDR, and dragging the settings window across monitors after this fix.
cargo fmt --checkpasses. MSVC clippy reports only two existing lints in files this PR does not touch (timer_view.rsmanual_is_multiple_of,recorder.rschunks_exact_to_as_chunks).UI changes
Effects page, liquid glass options: new toggle "兼容模式(截图与录屏可见)" / "Compatibility mode (visible in captures)". Its hint reads "兼容模式下截图、录屏和远程桌面能灵动岛可见;但会增加背景延迟与CPU占用。" when on. The existing note that liquid glass hides the island from captures shows when it is off.
🤖 Generated with Claude Code