Skip to content

(Potential fix for Niri WM) Use wlr-layer-shell for the screenshot overlay window on Wayland #4948

Description

@SuperUserA

Related bug: #4895 (tile reflow on Niri when Flameshot opens)

On Wayland, the Flameshot screenshot overlay currently opens as a fullscreen
xdg_toplevel. This causes visible tile reflow on tiling window managers
(Niri, Hyprland, Sway, etc.) because the compositor recalculates the layout
when the window is mapped and unmapped.

The proper Wayland approach for overlay-type windows (screenshot tools,
notification daemons, launchers) is to use wlr-layer-shell. This is already
the standard used by:

  • dunst (notifications)
  • rofi (launcher)
  • waybar (status bar)

Using layer-shell would make the Flameshot overlay:

  • Floating above all windows (no tiling, no reflow)
  • Not requesting fullscreen (no layout disruption)
  • Working identically across all compositors without per-WM config

Currently, users on tiling WMs (Niri on my case) must manually add a window rule:

window-rule {
    match app-id="flameshot"
    open-floating true
    open-fullscreen false
}

This is a workaround, not a fix. With layer-shell, no user-side config would
be needed and the overlay would behave correctly from first use.

Scope:

  • Replace the fullscreen xdg_toplevel with a layer-shell surface (overlay layer) on Wayland
  • Keep the existing X11 behavior unchanged
  • The overlay should still cover the full output (or selected output)

This is a medium-scope change (requires adding a wlr-layer-shell client
implementation to the Wayland backend) but could resolve #4895 and
similar reports on all tiling compositors permanently.

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

    EnhancementFeature requests and code enhancements

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions