From 579f6b32c180d852d7a55587a687f1e2e220ba1f Mon Sep 17 00:00:00 2001 From: H Date: Thu, 25 Sep 2025 10:38:43 +0900 Subject: [PATCH 1/2] app: [Wayland] implement missing wayland decoration calls Signed-off-by: H --- app/os_wayland.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/os_wayland.go b/app/os_wayland.go index b020c6d17..7a0be933a 100644 --- a/app/os_wayland.go +++ b/app/os_wayland.go @@ -1061,7 +1061,13 @@ func (w *window) Configure(options []Option) { cnf := w.config cnf.apply(cfg, options) w.config.decoHeight = cnf.decoHeight - + if w.decor != nil && (prev.Decorated != cnf.Decorated || !w.configured) { + if cnf.Decorated { + C.zxdg_toplevel_decoration_v1_set_mode(w.decor, C.ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE) + } else { + C.zxdg_toplevel_decoration_v1_set_mode(w.decor, C.ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE) + } + } switch cnf.Mode { case Fullscreen: switch prev.Mode { From 1b9f3e33edc0a133cfcab80d4992b182b7892bc3 Mon Sep 17 00:00:00 2001 From: H Date: Sun, 12 Oct 2025 17:18:32 +0900 Subject: [PATCH 2/2] app: [Wayland] apply custom decoration on app start Signed-off-by: H --- app/os_wayland.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/os_wayland.go b/app/os_wayland.go index 7a0be933a..dfa5730d2 100644 --- a/app/os_wayland.go +++ b/app/os_wayland.go @@ -200,6 +200,7 @@ type window struct { dir f32.Point } + alreadyDecorated bool configured bool lastFrameCallback *C.struct_wl_callback @@ -1061,12 +1062,13 @@ func (w *window) Configure(options []Option) { cnf := w.config cnf.apply(cfg, options) w.config.decoHeight = cnf.decoHeight - if w.decor != nil && (prev.Decorated != cnf.Decorated || !w.configured) { + if w.decor != nil && (prev.Decorated != cnf.Decorated || !w.alreadyDecorated) { if cnf.Decorated { C.zxdg_toplevel_decoration_v1_set_mode(w.decor, C.ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE) } else { C.zxdg_toplevel_decoration_v1_set_mode(w.decor, C.ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE) } + w.alreadyDecorated = true } switch cnf.Mode { case Fullscreen: