Skip to content

fix(freeze): add portable Wayland capture fallback - #325

Merged
devmobasa merged 2 commits into
mainfrom
fix/issue-156-freeze-capture
Aug 3, 2026
Merged

fix(freeze): add portable Wayland capture fallback#325
devmobasa merged 2 commits into
mainfrom
fix/issue-156-freeze-capture

Conversation

@devmobasa

Copy link
Copy Markdown
Owner

Closes #156.

Summary

Improve Freeze capture support across Wayland compositors, including COSMIC and compositors without
wlr-screencopy.

Freeze now tries capture backends in this order:

  1. wlr-screencopy
  2. ext-image-copy-capture-v1
  3. Screenshot portal

Changes

  • Add native ext-image-copy-capture-v1 support with SHM capture, output transforms, constraint replacement, bounded retries, and protocol cleanup.
  • Fall back across backends after startup errors, asynchronous failures, or three-second direct-capture timeouts.
  • Preserve the initiating output identity and discard results if the active output changes before capture or activation completes.
  • Fix the portal response race by subscribing before calling Screenshot.
  • Generate secure 128-bit portal request tokens and handle replacement request paths.
  • Detect portal availability through the Screenshot interface version.
  • Preserve portal response code 1 as quiet user cancellation.
  • Validate compositor-provided SHM dimensions, stride, formats, padding, and buffer lengths before allocation or protocol submission.
  • Remove screenshot URIs and temporary paths from logs and errors.
  • Update capability reporting and project documentation.

@devmobasa
devmobasa merged commit 39e9587 into main Aug 3, 2026
2 checks passed
@devmobasa
devmobasa deleted the fix/issue-156-freeze-capture branch August 4, 2026 06:47
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.

[BUG] Freeze unavailable when opened

1 participant