Quellcode durchsuchen

add gaps for monocle layout

siduck76 vor 3 Jahren
Ursprung
Commit
e069586426
1 geänderte Dateien mit 32 neuen und 5 gelöschten Zeilen
  1. 32 5
      chadwm/dwm.c

+ 32 - 5
chadwm/dwm.c

@@ -1868,17 +1868,44 @@ void maprequest(XEvent *e) {
     manage(ev->window, &wa);
 }
 
-void monocle(Monitor *m) {
+void
+monocle(Monitor *m)
+{
   unsigned int n = 0;
+
   Client *c;
 
   for (c = m->clients; c; c = c->next)
-    if (ISVISIBLE(c))
-      n++;
+    if (ISVISIBLE(c)) n++;
+
   if (n > 0) /* override layout symbol */
     snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n);
-  for (c = nexttiled(m->clients); c; c = nexttiled(c->next))
-    resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, 0);
+
+  int newx, newy, neww, newh;
+
+  for (c = nexttiled(m->clients); c; c = nexttiled(c->next)) {
+    if (m->gappoh == 0) {
+      newx = m->wx - c->bw;
+      newy = m->wy - c->bw;
+      neww = m->ww;
+      newh = m->wh;
+    } else {
+      newx = m->wx + m->gappoh - c->bw;
+      newy = m->wy + m->gappoh - c->bw;
+      neww = m->ww - 2 * (m->gappoh + c->bw);
+      newh = m->wh - 2 * (m->gappoh + c->bw);
+    }
+
+    applysizehints(c, &newx, &newy, &neww, &newh, 0);
+
+    if (neww < m->ww)
+      newx = m->wx + (m->ww - (neww + 2 * c->bw)) / 2;
+
+    if (newh < m->wh)
+      newy = m->wy + (m->wh - (newh + 2 * c->bw)) / 2;
+
+    resize(c, newx, newy, neww, newh, 0);
+  }
 }
 
 void motionnotify(XEvent *e) {