Hi, > My tendency is to launch a few "big" programs, most of which can't > easily run in a terminal (a browser, a terminal running tmux and/or an > image editor), and only launch new "temporary" terminals when I need > to run and see the output of a command. If I need an TUI volume mixer > or something, I'd launch it as a tmux window or in floating mode to > avoid disturbing my layout.
I do something pretty similar with dwm, under the (usually correct) assumptions that windows made earlier stick around for less time. I found I really like unilaterally opening windows floating and centered by default and then popping them into the tiled layout if I need them to stick around. It's a pretty simple modification, but I've attached the patch I use just in case you or anyone on this list would find it helpful! -- lincoln auster they/them
From 10f3e8380ee4d1c8acbf7f2da97a47dada93f03e Mon Sep 17 00:00:00 2001 From: elm auster <auster....@gmail.com> Date: Thu, 16 Sep 2021 21:51:40 -0600 Subject: [PATCH] center and float windows by default --- dwm.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/dwm.c b/dwm.c index 5e4d494..77dea02 100644 --- a/dwm.c +++ b/dwm.c @@ -286,7 +286,7 @@ applyrules(Client *c) XClassHint ch = { NULL, NULL }; /* rule matching */ - c->isfloating = 0; + c->isfloating = 1; c->tags = 0; XGetClassHint(dpy, c->win, &ch); class = ch.res_class ? ch.res_class : broken; @@ -1040,11 +1040,13 @@ manage(Window w, XWindowAttributes *wa) applyrules(c); } - if (c->x + WIDTH(c) > c->mon->mx + c->mon->mw) - c->x = c->mon->mx + c->mon->mw - WIDTH(c); - if (c->y + HEIGHT(c) > c->mon->my + c->mon->mh) - c->y = c->mon->my + c->mon->mh - HEIGHT(c); + /* center the window */ + c->x = c->mon->mx + c->mon->mw / 2 - c->w / 2; + c->y = c->mon->my + c->mon->mh / 2 - c->h / 2; + c->x = MAX(c->x, c->mon->mx); + c->y = MAX(c->y, c->mon->my); + /* only fix client y-offset, if the client center might cover the bar */ c->y = MAX(c->y, ((c->mon->by == c->mon->my) && (c->x + (c->w / 2) >= c->mon->wx) && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my); -- 2.31.1