summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAbhinav Prasai <abhinav.prsai@gmail.com>2025-10-06 19:05:11 +0100
committerAbhinav Prasai <abhinav.prsai@gmail.com>2025-10-06 19:05:11 +0100
commit437226c4fd4c6b9b090add81fb18352808849e76 (patch)
tree9068e9158d951207bc9808e11cb607cfd9c257b7 /src
parent1e221771eaa18f31401a4fbe1781fbb4f78c2608 (diff)
add floating_on_top, floating windows stay above tiled windows
Diffstat (limited to 'src')
-rw-r--r--src/defs.h1
-rw-r--r--src/parser.c3
-rw-r--r--src/sxwm.c13
3 files changed, 16 insertions, 1 deletions
diff --git a/src/defs.h b/src/defs.h
index 0f4970a..b8dd19d 100644
--- a/src/defs.h
+++ b/src/defs.h
@@ -105,6 +105,7 @@ typedef struct {
int resize_window_amt;
Bool new_win_focus;
Bool warp_cursor;
+ Bool floating_on_top;
Bool new_win_master;
Binding binds[MAX_ITEMS];
char **should_float[MAX_ITEMS];
diff --git a/src/parser.c b/src/parser.c
index a479705..f1dd7c0 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -272,6 +272,9 @@ found:
else if (!strcmp(key, "resize_master_amount")) {
cfg->resize_master_amt = atoi(rest);
}
+ else if (!strcmp(key, "floating_on_top")) {
+ cfg->floating_on_top = !strcmp(rest, "true") ? True : False;
+ }
else if (!strcmp(key, "resize_stack_amount")) {
cfg->resize_stack_amt = atoi(rest);
}
diff --git a/src/sxwm.c b/src/sxwm.c
index f1b38bb..19f06ea 100644
--- a/src/sxwm.c
+++ b/src/sxwm.c
@@ -1574,6 +1574,7 @@ void init_defaults(void)
default_config.new_win_focus = True;
default_config.warp_cursor = True;
default_config.new_win_master = False;
+ default_config.floating_on_top = True;
user_config = default_config;
}
@@ -2363,7 +2364,7 @@ void set_input_focus(Client *c, Bool raise_win, Bool warp)
XSetInputFocus(dpy, w, RevertToPointerRoot, CurrentTime);
send_wm_take_focus(w);
- if (raise_win) {
+ if (raise_win && c->floating) {
XRaiseWindow(dpy, w);
}
@@ -2816,6 +2817,16 @@ void tile(void)
}
update_borders();
}
+
+ if (user_config.floating_on_top) {
+ for (Client *c = workspaces[current_ws]; c; c = c->next) {
+ if (c->mapped && c->floating && !c->fullscreen) {
+ XRaiseWindow(dpy, c->win);
+ }
+ }
+ }
+
+ update_borders();
}
void toggle_floating(void)