Skip to content

Feature Request: Support for ext_background_effect_v1 protocol (native background blur) #40

Description

@chmodchill

Feature Description

I would like to request native support for the new ext_background_effect_v1 staging protocol in the spell-framework.

While spell-framework already does a fantastic job of managing wlr_layer_shell for declarative Wayland widgets, adding support for the standardized background effect protocol would allow developers to easily implement hardware-accelerated background blur for panels, launchers, and notification surfaces.

Use Case

With modern Wayland compositors (like Hyprland, Niri, cosmic-comp, and Mutter) increasingly adopting the upstream ext_background_effect_v1 protocol to replace legacy, compositor-specific blur implementations, having native integration within Spell would make it the premier choice for modern, aesthetically polished Wayland shell components in Rust.

Currently, achieving this requires developers to manually pull raw pointers and stitch bindings using external crates like wayrs-protocols, which breaks the clean abstraction that Spell provides.

Proposed API / Implementation Idea

Ideally, this could be exposed as a declarative property or a configuration flag on the window/surface wrapper, similar to how layer-shell anchoring is handled.

For example (conceptual):

// In the spell window initialization / builder pattern
let window = SpellWindow::new()
    .with_layer_shell(Layer::Top)
    .with_background_blur(true) // Triggers ext_background_effect_v1 under the hood
    .build();

Alternatively, it could be exposed as a helper method that attaches an ext_background_effect_manager_v1 to the underlying Slint surface region.

Additional Context

  • The upstream protocol specification: ext-background-effect-v1.xml
  • The protocol bindings are already available in the Rust ecosystem via the wayrs-protocols crate, which might simplify implementation.

Thank you for your hard work on this framework! I would love to hear your thoughts on whether this fits into the project's roadmap.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions