GTK 3, which the Linux builds link, announces server-side decorations
over org_kde_kwin_server_decoration for every window that isn't
client-decorated, an undecorated (frameless) one too (gtkwindow.c
realize: announce_ssd), and KWin then draws its title bar on it. The main
window escapes it through plainTitlebar's hidden titlebar widget. The
panel now announces client-side decorations after each realize
(ownFrame: gdk_wayland_window_announce_csd), at start and when
lightweight mode makes it again. GTK 4 already asks for none, X11 and
compositors without the protocol never see it.
Run: on real KWin 6.3.6 Wayland (kwin_wayland --virtual with Breeze,
Debian trixie arm64 container, -tags gtk3 test binary): WAYLAND_DEBUG
shows request_mode(1) and KWin answers mode(1); a KWin script reads the
panel's frame 440x520 = its client 440x520. With ownFrame skipped:
request_mode(2), frame 442x557 over client 440x520 (KWin's title bar
and borders, the reporter's picture). go vet -tags gtk3 ./internal/gui
ok there; macOS go vet/go build ok; GOOS=linux/windows go vet -tags nogui
./internal/gui ok. Not tried: the reporter's Manjaro Plasma session, a
GTK 4 build, GNOME/Hyprland (no KDE protocol there, so unchanged).