Skip to content

feat(linux/wlr): Implement ext-image-copy-capture#4788

Draft
Dregu wants to merge 1 commit intoLizardByte:masterfrom
Dregu:icc
Draft

feat(linux/wlr): Implement ext-image-copy-capture#4788
Dregu wants to merge 1 commit intoLizardByte:masterfrom
Dregu:icc

Conversation

@Dregu
Copy link
Contributor

@Dregu Dregu commented Feb 27, 2026

I'm putting this draft up simply because these linux prs keep popping up every day and by monday three more people will have implemented this probably, so it would be silly to keep it to myself when it's already pretty much done.

Description

Adds the ext-image-copy-capture protocol as primary backend for the wayland capture method, but keeps wlr-screencopy as a fallback, as it is still slightly better supported. Also supports actual output names in output_name, like that other pr.

There's really no hurry to switch to icc from screencopy, but it is an unstable deprecated proto and will be gone next year. I just decided to do this one night since hyprland got icc support now and it seemed neat. My thoughts on this are not very collected, but it probably works.

I don't know jack about drm modifiers or frankly these protocols, so I've pretty much winged it to work on my machine.

  • Implements ext-image-copy-capture-v1 protocol, I hope
  • Some fixes to wlr-screencopy, like picking the wrong drm device on multi gpu
  • Adds support for connector names in output_name

Screenshot

Issues Fixed or Closed

Roadmap Issues

Type of Change

  • feat: New feature (non-breaking change which adds functionality)
  • fix: Bug fix (non-breaking change which fixes an issue)
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semicolons, etc.)
  • refactor: Code change that neither fixes a bug nor adds a feature
  • perf: Code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files
  • revert: Reverts a previous commit
  • BREAKING CHANGE: Introduces a breaking change (can be combined with any type above)

Checklist

  • Code follows the style guidelines of this project
  • Code has been self-reviewed
  • Code has been commented, particularly in hard-to-understand areas
  • Code docstring/documentation-blocks for new or existing methods/components have been added or updated
  • Unit tests have been added or updated for any new or modified functionality

AI Usage

  • None: No AI tools were used in creating this PR
  • Light: AI provided minor assistance (formatting, simple suggestions)
  • Moderate: AI helped with code generation or debugging specific parts
  • Heavy: AI generated most or all of the code changes

@ReenigneArcher
Copy link
Member

Thanks! It seems the PR was not based on an updated version of master. Could you rebase it?

@Dregu
Copy link
Contributor Author

Dregu commented Feb 27, 2026

Yeah sure next week, I just pushed it as a placeholder.

@Dregu Dregu force-pushed the icc branch 2 times, most recently from 9c69036 to a531c36 Compare March 1, 2026 15:32
Adds the new image-copy-capture protocol in staging as primary backend for
the wayland capture method, but keeps wlr-screencopy as a fallback
Also supports actual output names in output_name
@Dregu
Copy link
Contributor Author

Dregu commented Mar 1, 2026

I hate submodules.

@sonarqubecloud
Copy link

sonarqubecloud bot commented Mar 1, 2026

Quality Gate Failed Quality Gate failed

Failed conditions
16 New issues
16 New Code Smells (required ≤ 0)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

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.

2 participants