From 78d135a05d3a5ab69b6c2087074e86d43632d571 Mon Sep 17 00:00:00 2001 From: L0Wigh Date: Wed, 6 Aug 2025 17:42:31 +0200 Subject: add: the window opacity is set to 100 when fullscreen and then reset when fullscreen is disabled --- src/sxwm.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/sxwm.c b/src/sxwm.c index 843b133..1b3902b 100644 --- a/src/sxwm.c +++ b/src/sxwm.c @@ -2630,6 +2630,22 @@ void toggle_floating_global(void) update_borders(); } +void set_opacity(Window w, double opacity) +{ + unsigned long op = (unsigned long)(opacity * 0xFFFFFFFF); + Atom atom = XInternAtom(dpy, "_NET_WM_WINDOW_OPACITY", False); + + if (opacity < 0.0) opacity = 0.0; + if (opacity > 1.0) opacity = 1.0; + XChangeProperty(dpy, w, atom, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&op, 1); +} + +void reset_opacity(Window w) +{ + Atom atom = XInternAtom(dpy, "_NET_WM_WINDOW_OPACITY", False); + XDeleteProperty(dpy, w, atom); +} + void toggle_fullscreen(void) { if (!focused) { @@ -2659,10 +2675,12 @@ void toggle_fullscreen(void) XSetWindowBorderWidth(dpy, focused->win, 0); XMoveResizeWindow(dpy, focused->win, fs_x, fs_y, fs_w, fs_h); XRaiseWindow(dpy, focused->win); + set_opacity(focused->win, 100); } else { XMoveResizeWindow(dpy, focused->win, focused->orig_x, focused->orig_y, focused->orig_w, focused->orig_h); XSetWindowBorderWidth(dpy, focused->win, user_config.border_width); + reset_opacity(focused->win); if (!focused->floating) { focused->mon = get_monitor_for(focused); -- cgit v1.2.3