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(+) (limited to 'src') 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 From e0639be15e8dac5e7837f68401bb325411aabedb Mon Sep 17 00:00:00 2001 From: L0Wigh Date: Thu, 7 Aug 2025 09:34:35 +0200 Subject: clean for pull request --- src/sxwm.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/sxwm.c b/src/sxwm.c index 1b3902b..881cce6 100644 --- a/src/sxwm.c +++ b/src/sxwm.c @@ -89,6 +89,7 @@ void remove_scratchpad(int n); /* void resize_stack_add(void); */ /* void resize_stack_sub(void); */ void run(void); +void reset_opacity(Window w); void scan_existing_windows(void); void select_input(Window w, Mask masks); void send_wm_take_focus(Window w); @@ -96,6 +97,7 @@ void setup(void); void setup_atoms(void); void set_frame_extents(Window w); void set_input_focus(Client *c, Bool raise_win, Bool warp); +void set_opacity(Window w, double opacity); void set_win_scratchpad(int n); int snap_coordinate(int pos, int size, int screen_size, int snap_dist); void spawn(const char * const *argv); @@ -2174,6 +2176,50 @@ void set_win_scratchpad(int n) scratchpads[n].enabled = False; } +Bool window_should_float(Window w) +{ + XClassHint ch; + if (XGetClassHint(dpy, w, &ch)) { + for (int i = 0; i < 256; i++) { + if (!user_config.should_float[i] || !user_config.should_float[i][0]) { + break; + } + + if ((ch.res_class && !strcmp(ch.res_class, user_config.should_float[i][0])) || + (ch.res_name && !strcmp(ch.res_name, user_config.should_float[i][0]))) { + XFree(ch.res_class); + XFree(ch.res_name); + return True; + } + } + XFree(ch.res_class); + XFree(ch.res_name); + } + + return False; +} + +void reset_opacity(Window w) +{ + Atom atom = XInternAtom(dpy, "_NET_WM_WINDOW_OPACITY", False); + XDeleteProperty(dpy, w, atom); +} + + +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); +} + int snap_coordinate(int pos, int size, int screen_size, int snap_dist) { if (UDIST(pos, 0) <= snap_dist) { @@ -2630,22 +2676,6 @@ 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) { -- cgit v1.2.3 From c4de221356ebee849b7000bc1ba1f19be1c9ec1f Mon Sep 17 00:00:00 2001 From: L0Wigh Date: Tue, 2 Sep 2025 19:03:49 +0200 Subject: (fix): Mistake when doing "rebase" --- src/sxwm.c | 23 ----------------------- 1 file changed, 23 deletions(-) (limited to 'src') diff --git a/src/sxwm.c b/src/sxwm.c index 881cce6..fb13f55 100644 --- a/src/sxwm.c +++ b/src/sxwm.c @@ -2176,29 +2176,6 @@ void set_win_scratchpad(int n) scratchpads[n].enabled = False; } -Bool window_should_float(Window w) -{ - XClassHint ch; - if (XGetClassHint(dpy, w, &ch)) { - for (int i = 0; i < 256; i++) { - if (!user_config.should_float[i] || !user_config.should_float[i][0]) { - break; - } - - if ((ch.res_class && !strcmp(ch.res_class, user_config.should_float[i][0])) || - (ch.res_name && !strcmp(ch.res_name, user_config.should_float[i][0]))) { - XFree(ch.res_class); - XFree(ch.res_name); - return True; - } - } - XFree(ch.res_class); - XFree(ch.res_name); - } - - return False; -} - void reset_opacity(Window w) { Atom atom = XInternAtom(dpy, "_NET_WM_WINDOW_OPACITY", False); -- cgit v1.2.3