Skip to content

Port Hyprchroma to Hyprland v0.54.2 with adaptive per-surface tinting#4

Open
RomeoCavazza wants to merge 15 commits intoalexhulbert:mainfrom
RomeoCavazza:main
Open

Port Hyprchroma to Hyprland v0.54.2 with adaptive per-surface tinting#4
RomeoCavazza wants to merge 15 commits intoalexhulbert:mainfrom
RomeoCavazza:main

Conversation

@RomeoCavazza
Copy link
Copy Markdown

This branch ports Hyprchroma to Hyprland v0.54.2 and replaces the legacy renderer-hook approach with a plugin-compatible render-pass implementation.

Summary:

  • rewrites the plugin for the current Hyprland 0.54.2 API
  • replaces shader hook assumptions tied to older renderer internals
  • adds an adaptive per-surface tint path
  • preserves bright and saturated pixels better than a uniform overlay
  • keeps fallback behavior for unsupported surface cases
  • keeps configuration under plugin:darkwindow:*

Notes:

  • this is not a minimal patch; it is effectively a modernized continuation of the plugin for recent Hyprland
  • tested on Hyprland v0.54.2 (59f9f268) on NixOS 26.05
  • the current fork release is v3.2.0-v054

If this direction is not a fit for upstream, that is completely fine. I am mainly opening this so the port is visible and reviewable in one place.

BREAKING CHANGE: This is a complete architectural rewrite.

## What changed
- Replaced 6-file shader-based architecture with single-file CRectPassElement overlay
- Migrated from deprecated registerCallbackDynamic to Event::bus() API
- Added workspace animation sync (m_renderOffset) — fixes ghost layers
- Added alpha sync (m_alpha + m_activeInactiveAlpha) — smooth focus transitions
- Added render-local guard to prevent double-exposure
- Added configurable fullscreen tint control
- Updated Makefile for single-file build
- Updated flake.nix targeting Hyprland v0.54.2
- Added CI workflow (nix build on push/PR)

## Target
- Hyprland v0.54.2 (commit 59f9f268)
- Hyprutils 0.11.0 / Hyprlang 0.6.8 / Aquamarine 0.10.0
- NixOS 26.05 (Yarara)

Fixes: ghost layers, animation desync, deprecated API usage
Closes upstream compatibility with v0.54.2+
Keep original screenshot, description and install structure.
Add v0.54.2 configuration, changes table, and target environment.
Removed duplicate image from README and added a new one.
@micha4w
Copy link
Copy Markdown

micha4w commented Apr 3, 2026

see #5

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