diff options
| author | Adam Malczewski <[email protected]> | 2026-06-14 19:07:20 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-06-14 19:07:20 +0900 |
| commit | e008b9a078c91b07947fba7748aae7fab8758a2f (patch) | |
| tree | bca95f794c8f5f8485fd783bb71cd102507d83f6 /packages/kernel/tests/test_kernel.cpp | |
| parent | 7b1f149717116d7290ec76ae808a4d076af856d2 (diff) | |
| download | unbox-e008b9a078c91b07947fba7748aae7fab8758a2f.tar.gz unbox-e008b9a078c91b07947fba7748aae7fab8758a2f.zip | |
ext-layer-shell: fix configure feedback loop; default Super toggles fuzzel
The intermittent "Super needs several presses to open fuzzel" bug was a
layer-shell configure storm, not a keybinding issue. The per-surface commit
handler called arrange() on EVERY wl_surface commit, and arrange()
unconditionally calls wlr_scene_layer_surface_v1_configure, which in wlroots
0.20 emits a fresh configure each call. A client acking + applying its configure
re-entered the commit handler, producing an unbounded
configure -> ack_configure -> commit -> configure loop that overflowed the
client's 4 KiB connection buffer ("Data too big for buffer") and got it killed
mid-handshake. fuzzel therefore only displayed when the burst happened to flush
in time.
Fix: only re-arrange on the initial commit or a commit that changes a
layout-relevant field (current.committed != 0); a plain buffer/frame commit no
longer triggers a configure.
Also:
- ext-keybindings: tap-Super now defaults to a launcher TOGGLE
("pkill -x fuzzel || fuzzel") in both default_bindings() and the sample
unbox.toml — pressing Super while fuzzel is open closes it.
- ext-keybindings: a genuine Super press always re-arms a clean tap, so a
dropped Super release can no longer eat the next tap (robustness).
- tests: update default-command assertions; add a bounded-configure invariant
guard to the layer-shell client test.
Diffstat (limited to 'packages/kernel/tests/test_kernel.cpp')
0 files changed, 0 insertions, 0 deletions
