AprilNEA / AprilNEA/OpenLogi

[Bug]: Actions Ring opens under panels/docks on Linux Wayland, and off-cursor on multi-monitor

Open
#1,210 2 comments 0 reactions 0 assignees View on GitHub
area: gui platform: linux type: bug
Dominant language
Rust
Stars
21k
Forks
675
Avg merge
2d 5h
Merged PRs (30d)
172

Description

## Summary

On Linux under a Wayland compositor (reproduced on KDE Plasma/KWin), the Actions Ring can open hidden behind a desktop panel or dock, and its position is unreliable on a multi-monitor setup — it can open on the wrong monitor entirely, or offset from the actual cursor position.

## Root cause

- **Panel occlusion**: the overlay opens the ring as a plain `WindowKind::PopUp`, which on Wayland is just another `xdg_toplevel` surface. Nothing about that guarantees it draws above a panel/dock's own always-on-top surface (typically a `zwlr_layer_shell_v1` overlay-layer surface, which genuinely is guaranteed to be on top). A panel can legitimately draw over the ring.
- **Wrong/stale position**: `openlogi_hook::cursor_position()` on Linux queries X11's `query_pointer` via XWayland. Under a native Wayland session this isn't a real Wayland pointer query and doesn't track the actual pointer — it reports a stale, display-ambiguous coordinate (confirmed live: identical coordinates returned across multiple cursor moves and clicks on different monitors).

## Steps to reproduce

1. Run OpenLogi on Linux under a Wayland session (e.g. KDE Plasma/KWin) with a visible panel/dock.
2. Bind a button to `ShowActionsRing`.
3. Press it while the cursor is under/near the panel, or on a secondary monitor.
4. Observe: the ring can render behind the panel, and/or appear on the wrong monitor or away from the actual cursor position.

## Environment

- KDE Plasma (KWin), Wayland session, multi-monitor (primary + secondary at a nonzero global X offset).

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating the Actions Ring code that uses WindowKind::PopUp and the Linux implementation of openlogi_hook::cursor_position(). Reproduce under KDE Plasma/KWin on Wayland with a panel and multiple monitors, then verify that the ring stays above the panel and opens at the actual cursor on the correct monitor.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.