----
- config.def.h | 1 +
- dwm.c | 45 +++++++++++++++++++++++++++++++++++++++++++--
- 2 files changed, 44 insertions(+), 2 deletions(-)
-
-diff --git a/config.def.h b/config.def.h
-index 1c0b587..c3c7edd 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -78,6 +78,7 @@ static Key keys[] = {
- { MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
- { MODKEY, XK_space, setlayout, {0} },
- { MODKEY|ShiftMask, XK_space, togglefloating, {0} },
-+ { MODKEY|ShiftMask, XK_space, togglealwaysontop, {0} },
- { MODKEY, XK_0, view, {.ui = ~0 } },
- { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
- { MODKEY, XK_comma, focusmon, {.i = -1 } },
-diff --git a/dwm.c b/dwm.c
-index 4465af1..8d54b26 100644
---- a/dwm.c
-+++ b/dwm.c
-_AT_@ -92,7 +92,7 @@ struct Client {
- int basew, baseh, incw, inch, maxw, maxh, minw, minh;
- int bw, oldbw;
- unsigned int tags;
-- int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
-+ int isfixed, iscentered, isfloating, isalwaysontop, isurgent, neverfocus, oldstate, isfullscreen;
- Client *next;
- Client *snext;
- Monitor *mon;
-_AT_@ -211,6 +211,7 @@ static void tagmon(const Arg *arg);
- static void tile(Monitor *);
- static void togglebar(const Arg *arg);
- static void togglefloating(const Arg *arg);
-+static void togglealwaysontop(const Arg *arg);
- static void toggletag(const Arg *arg);
- static void toggleview(const Arg *arg);
- static void unfocus(Client *c, int setfocus);
-_AT_@ -732,8 +733,11 @@ drawbar(Monitor *m)
- if (m->sel) {
- drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]);
- drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
-- if (m->sel->isfloating)
-+ if (m->sel->isfloating) {
- drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
-+ if (m->sel->isalwaysontop)
-+ drw_rect(drw, x + boxs, bh - boxw, boxw, boxw, 0, 0);
-+ }
- } else {
- drw_setscheme(drw, scheme[SchemeNorm]);
- drw_rect(drw, x, 0, w, bh, 1, 1);
-_AT_@ -1356,6 +1360,17 @@ restack(Monitor *m)
- return;
- if (m->sel->isfloating || !m->lt[m->sellt]->arrange)
- XRaiseWindow(dpy, m->sel->win);
-+
-+ /* raise the aot window */
-+ for(Monitor *m_search = mons; m_search; m_search = m_search->next){
-+ for(c = m_search->clients; c; c = c->next){
-+ if(c->isalwaysontop){
-+ XRaiseWindow(dpy, c->win);
-+ break;
-+ }
-+ }
-+ }
-+
- if (m->lt[m->sellt]->arrange) {
- wc.stack_mode = Below;
- wc.sibling = m->barwin;
-_AT_@ -1716,6 +1731,32 @@ togglefloating(const Arg *arg)
- if (selmon->sel->isfloating)
- resize(selmon->sel, selmon->sel->x, selmon->sel->y,
- selmon->sel->w, selmon->sel->h, 0);
-+ else
-+ selmon->sel->isalwaysontop = 0; /* disabled, turn this off too */
-+ arrange(selmon);
-+}
-+
-+void
-+togglealwaysontop(const Arg *arg)
-+{
-+ if (!selmon->sel)
-+ return;
-+ if (selmon->sel->isfullscreen)
-+ return;
-+
-+ if(selmon->sel->isalwaysontop){
-+ selmon->sel->isalwaysontop = 0;
-+ }else{
-+ /* disable others */
-+ for(Monitor *m = mons; m; m = m->next)
-+ for(Client *c = m->clients; c; c = c->next)
-+ c->isalwaysontop = 0;
-+
-+ /* turn on, make it float too */
-+ selmon->sel->isfloating = 1;
-+ selmon->sel->isalwaysontop = 1;
-+ }
-+
- arrange(selmon);
- }
-
---
-2.31.1
-
Received on Mon Jul 18 2022 - 13:16:51 CEST
This archive was generated by hypermail 2.3.0 : Mon Jul 18 2022 - 13:24:39 CEST