What happened?
The hot corner hint badge ("Overview Super+Space") stays on screen on top of the Overview it just opened, covering the top-left of the app chooser.
Screenshot to follow in a comment below.
Why it happens
The hint is on a strictly higher layer than the thing it covers:
// hot_corner_manager.vala — HotCornerHintWindow
set_layer(this, GtkLayerShell.Layer.OVERLAY);
// overview.vala — the app chooser
set_layer(this, GtkLayerShell.Layer.TOP);
zwlr_layer_shell_v1 orders layers background < bottom < top < overlay, so an OVERLAY surface is always composited above a TOP one. No compositor, GPU or resolution changes that.
The second half is the lifetime: the badge is only cleared by on_leave(). Triggering a hot corner means the pointer is in the corner, and it usually stays there while the user looks at what just opened — so the hint has no reason to disappear and sits over the chooser.
Why you may never have seen it
Hot corners are on by default (hot-corner-top-left defaults to 'workspaces'), so the configuration is not unusual. But the badge only appears on the pointer path. The hint itself advertises Super+Space, and anyone who knows the shortcut opens the Overview from the keyboard with the pointer nowhere near the corner — in which case the hint never shows at all and the overlap cannot occur.
So it is specific to: open the Overview by throwing the pointer into the corner, then leave the pointer there.
Steps to reproduce
- Leave
hot-corner-top-left at its default.
- Move the pointer into the top-left corner until the hint appears and the corner fires.
- Do not move the pointer.
- The Overview opens underneath the still-visible hint badge.
Not environment-specific
Reproduced identically on two very different displays on the same machine — a ten-year-old 1080p panel and a new 4K ViewSonic. That rules out a scaling/DPI quirk and matches the analysis above: it is deterministic layer ordering, not a race. (If it were timing-dependent, a slow panel and a fast one would not behave the same.)
Environment: labwc 0.9.5 / wlroots 0.20.2, GTK 4.22.4, gtk4-layer-shell 1.3.0, aarch64. Nothing in this path is platform-specific, so x86 under any wlroots compositor should behave the same.
Suggested fix
Hide the hint when its action fires, rather than waiting for pointer-leave. A hint whose entire purpose is "here is how to open the Overview" has no reason to remain once the Overview is open, and its layer guarantees it covers it.
I have not sent a patch because there is a design choice in it that is yours: whether the badge should also be suppressed for the other corner actions once they fire, or only for the one that opens a full-screen surface. Happy to write it whichever way you prefer.
Disclosure
We suppress this badge entirely in our downstream build as an aesthetic choice, so we are not blocked. Reporting because the overlap looks unintended rather than designed, and it affects anyone driving the Overview with the mouse.
What happened?
The hot corner hint badge ("Overview Super+Space") stays on screen on top of the Overview it just opened, covering the top-left of the app chooser.
Screenshot to follow in a comment below.
Why it happens
The hint is on a strictly higher layer than the thing it covers:
zwlr_layer_shell_v1orders layersbackground < bottom < top < overlay, so an OVERLAY surface is always composited above a TOP one. No compositor, GPU or resolution changes that.The second half is the lifetime: the badge is only cleared by
on_leave(). Triggering a hot corner means the pointer is in the corner, and it usually stays there while the user looks at what just opened — so the hint has no reason to disappear and sits over the chooser.Why you may never have seen it
Hot corners are on by default (
hot-corner-top-leftdefaults to'workspaces'), so the configuration is not unusual. But the badge only appears on the pointer path. The hint itself advertisesSuper+Space, and anyone who knows the shortcut opens the Overview from the keyboard with the pointer nowhere near the corner — in which case the hint never shows at all and the overlap cannot occur.So it is specific to: open the Overview by throwing the pointer into the corner, then leave the pointer there.
Steps to reproduce
hot-corner-top-leftat its default.Not environment-specific
Reproduced identically on two very different displays on the same machine — a ten-year-old 1080p panel and a new 4K ViewSonic. That rules out a scaling/DPI quirk and matches the analysis above: it is deterministic layer ordering, not a race. (If it were timing-dependent, a slow panel and a fast one would not behave the same.)
Environment: labwc 0.9.5 / wlroots 0.20.2, GTK 4.22.4, gtk4-layer-shell 1.3.0, aarch64. Nothing in this path is platform-specific, so x86 under any wlroots compositor should behave the same.
Suggested fix
Hide the hint when its action fires, rather than waiting for pointer-leave. A hint whose entire purpose is "here is how to open the Overview" has no reason to remain once the Overview is open, and its layer guarantees it covers it.
I have not sent a patch because there is a design choice in it that is yours: whether the badge should also be suppressed for the other corner actions once they fire, or only for the one that opens a full-screen surface. Happy to write it whichever way you prefer.
Disclosure
We suppress this badge entirely in our downstream build as an aesthetic choice, so we are not blocked. Reporting because the overlap looks unintended rather than designed, and it affects anyone driving the Overview with the mouse.