Skip to content

feat(privacy): exclude chosen applications from captures - #11

Merged
howar31 merged 2 commits into
mainfrom
feat/excluded-apps
Oct 5, 2026
Merged

howar31 merged 2 commits into
mainfrom
feat/excluded-apps

Conversation

@howar31

@howar31 howar31 commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Cause

There was no way to keep a particular application out of a screenshot or recording: a floating widget, or an application whose content should not be captured by accident.

Change

  • Settings gains a Privacy pane (after Output): a master switch, a switch for Glimpr's own windows, a name filter with refresh, the excluded applications (each with a mode control and a remove button) and the running applications that own a window (each with an add button). Strings in both ARB files.
  • lib/capture/excluded_app.dart, lib/settings/excluded_apps.dart, lib/settings/settings.dart: the stored list (excluded_apps, entries joined by | with an optional ?mode suffix), the master switch (excluded_apps_enabled) and the own-windows switch (exclude_own_windows).
  • macOS (OverlayKit.swift, RecordingKit.swift, ElementSnap.swift, CaptureChannel.swift): one display-filter builder used by the screenshot paths, the recording and the record-select loupe. Listed applications are removed with excludingApplications; where Glimpr windows must also be hidden (recording chrome, the own-windows switch), Glimpr joins the excluded applications and the windows it keeps come back as exceptions. Per-application scope: all, screenshots, recordings. Window snap, element snap and the focused-window lookup skip processes that are absent from the surface being captured. The cached shareable content is refetched once when a listed application started after it was taken.
  • Windows (capture_mask.h, excluded_apps.{h,cpp}, overlay_manager.cpp, capture_channel.cpp, window_enum.cpp, snap_filter.h, prefs_probe.h): the visible area of each listed application's windows (its bounds minus opaque windows in front) is covered in the captured frame, black or blurred per application, on both the SDR and the HDR buffer. Windows are sampled before and after the capture and each distinct area is covered once. Listed applications are not snap or focused-window targets for screenshots. The own-windows switch sets the capture-exclusion display affinity on the Settings, Image Editor and pin windows.
  • README (both languages): feature entry.
  • Version 1.26.0+43.

Platform differences: macOS removes the windows and shows what is behind them, in screenshots and recordings. Windows covers them in screenshots only; recordings are not affected there. On Windows the own-windows switch removes those windows from every screen capture on the machine, and an Image Editor window that is already open picks the setting up the next time it opens.

Known limits: notifications and taskbar / Dock surfaces are drawn by the system and are not covered. Covered areas on Windows are rectangular. On macOS, with a non-empty list, a Glimpr window opened after a recording started does not appear in that recording.

Verification

  • flutter analyze and the full flutter test suite pass on macOS and on Windows.
  • The macOS native test target and the Windows native test target pass. flutter build macos --debug and flutter build windows --release succeed.
  • Checked on screen in development builds: the Privacy pane and exclusion on macOS; the pane, the cover, and occlusion by a window in front on Windows.
  • Not confirmed on screen item by item on Windows: the blur style, the HDR output file, a packaged (UWP) application, and the own-windows switch.

Add a Privacy pane to Settings with a list of applications to keep out
of captures, a name filter over the running applications, a master
switch, and a switch for Glimpr's own windows.

macOS removes the listed applications from screenshots and recordings
through the display content filter, with a per-application scope
(all, screenshots, recordings). Windows covers their visible areas in
screenshots, black or blurred per application; recordings are not
affected there. Excluded applications are not offered as window or
element snap targets on the surfaces they are excluded from.
@howar31
howar31 merged commit 94e895c into main Oct 5, 2026
4 checks passed

This branch was successfully deployed

1 active deployment
github-pages — 94e895c2 Deployed Oct 5, 2026 by howar31 via deploy #68
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant