commit e12931613de93e84241bd3229b7e5df5abad84b6
Author: stojshic <[email protected]>
Date:   Fri Feb 9 21:47:11 2024 +0100

    Fixed a wrongly made patch for two monitor setup

diff --git 
a/dwm.suckless.org/patches/two_monitor_setup/dwm-twomonitorsetup-20240209-0b01a94.diff
 
b/dwm.suckless.org/patches/two_monitor_setup/dwm-twomonitorsetup-20240209-0b01a94.diff
new file mode 100644
index 00000000..3fb6297b
--- /dev/null
+++ 
b/dwm.suckless.org/patches/two_monitor_setup/dwm-twomonitorsetup-20240209-0b01a94.diff
@@ -0,0 +1,147 @@
+From 0b01a947eeb893b85576e0117e98e455ff770558 Mon Sep 17 00:00:00 2001
+From: stojshic <[email protected]>
+Date: Fri, 9 Feb 2024 20:56:34 +0100
+Subject: [PATCH] Two Monitor Setup
+
+---
+ dwm.c | 65 ++++++++++++++++++++++++++++++++++++++++++-----------------
+ 1 file changed, 46 insertions(+), 19 deletions(-)
+
+diff --git a/dwm.c b/dwm.c
+index f1d86b2..2234780 100644
+--- a/dwm.c
++++ b/dwm.c
+@@ -160,7 +160,7 @@ static Monitor *createmon(void);
+ static void destroynotify(XEvent *e);
+ static void detach(Client *c);
+ static void detachstack(Client *c);
+-static Monitor *dirtomon(int dir);
++// static Monitor *dirtomon(int dir);
+ static void drawbar(Monitor *m);
+ static void drawbars(void);
+ static void enternotify(XEvent *e);
+@@ -194,6 +194,7 @@ static void resizeclient(Client *c, int x, int y, int w, 
int h);
+ static void resizemouse(const Arg *arg);
+ static void restack(Monitor *m);
+ static void run(void);
++static void runAutostart(void);
+ static void scan(void);
+ static int sendevent(Client *c, Atom proto);
+ static void sendmon(Client *c, Monitor *m);
+@@ -680,6 +681,7 @@ detachstack(Client *c)
+       }
+ }
+ 
++/*
+ Monitor *
+ dirtomon(int dir)
+ {
+@@ -694,7 +696,7 @@ dirtomon(int dir)
+               for (m = mons; m->next != selmon; m = m->next);
+       return m;
+ }
+-
++*/
+ void
+ drawbar(Monitor *m)
+ {
+@@ -736,7 +738,8 @@ drawbar(Monitor *m)
+ 
+       if ((w = m->ww - tw - x) > bh) {
+               if (m->sel) {
+-                      drw_setscheme(drw, scheme[m == selmon ? SchemeSel : 
SchemeNorm]);
++                      drw_setscheme(drw, scheme[SchemeNorm]);
++                      // 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)
+                               drw_rect(drw, x + boxs, boxs, boxw, boxw, 
m->sel->isfixed, 0);
+@@ -822,17 +825,22 @@ focusin(XEvent *e)
+ }
+ 
+ void
+-focusmon(const Arg *arg)
+-{
+-      Monitor *m;
++focusmon(const Arg *arg) {
++    Monitor *m = NULL;
+ 
+-      if (!mons->next)
+-              return;
+-      if ((m = dirtomon(arg->i)) == selmon)
+-              return;
+-      unfocus(selmon->sel, 0);
+-      selmon = m;
+-      focus(NULL);
++    if (!mons->next)
++        return;
++
++    if (arg->i > 0) {
++        m = mons->next;
++    } else if (arg->i < 0 && mons->next) {
++        m = mons;
++    }
++
++    if (m) {
++        selmon = m;
++        focus(NULL);
++    }
+ }
+ 
+ void
+@@ -1390,6 +1398,12 @@ run(void)
+                       handler[ev.type](&ev); /* call handler */
+ }
+ 
++void
++runAutostart(void) {
++      system("cd ~/.dwm; ./autostart_blocking.sh");
++      system("cd ~/.dwm; ./autostart.sh &");
++}
++
+ void
+ scan(void)
+ {
+@@ -1676,14 +1690,26 @@ tag(const Arg *arg)
+       }
+ }
+ 
+-void
+-tagmon(const Arg *arg)
+-{
+-      if (!selmon->sel || !mons->next)
+-              return;
+-      sendmon(selmon->sel, dirtomon(arg->i));
++void tagmon(const Arg *arg) {
++    if (!selmon->sel || !mons->next)
++        return;
++
++    Monitor *m;
++
++    if (arg->i > 0) {
++        m = mons->next;  // Move to mon1
++    } else if (arg->i < 0 && mons->next) {
++        m = mons;  // Move to mon2
++    } else {
++        return; // Do nothing for arg->i == 0
++    }
++
++    sendmon(selmon->sel, m);
++    focus(NULL);
++    arrange(selmon);
+ }
+ 
++
+ void
+ tile(Monitor *m)
+ {
+@@ -2158,6 +2184,7 @@ main(int argc, char *argv[])
+               die("pledge");
+ #endif /* __OpenBSD__ */
+       scan();
++      runAutostart();
+       run();
+       cleanup();
+       XCloseDisplay(dpy);
+-- 
+2.43.0
+
diff --git 
a/dwm.suckless.org/patches/two_monitor_setup/dwm-twomonitorsetup-6.4.diff 
b/dwm.suckless.org/patches/two_monitor_setup/dwm-twomonitorsetup-6.4.diff
deleted file mode 100644
index 61600eb3..00000000
--- a/dwm.suckless.org/patches/two_monitor_setup/dwm-twomonitorsetup-6.4.diff
+++ /dev/null
@@ -1,242 +0,0 @@
-From 4928b5e9f4e5666ed35e3aa3f61df25c503e921e Mon Sep 17 00:00:00 2001
-From: stojshic <[email protected]>
-Date: Tue, 6 Feb 2024 19:54:47 +0100
-Subject: [PATCH] Modified to work with two monitors, 'ModKey + <' [or 'ModKey
- + Shift + <'] moves focus [or windows] to left monitor but doesn't bring it
- back to right monitor on another click
-
----
- dwm.c | 119 ++++++++++++++++++++++++++++++++++++++++------------------
- 1 file changed, 82 insertions(+), 37 deletions(-)
-
-diff --git a/dwm.c b/dwm.c
-index e5efb6a..2234780 100644
---- a/dwm.c
-+++ b/dwm.c
-@@ -160,7 +160,7 @@ static Monitor *createmon(void);
- static void destroynotify(XEvent *e);
- static void detach(Client *c);
- static void detachstack(Client *c);
--static Monitor *dirtomon(int dir);
-+// static Monitor *dirtomon(int dir);
- static void drawbar(Monitor *m);
- static void drawbars(void);
- static void enternotify(XEvent *e);
-@@ -194,6 +194,7 @@ static void resizeclient(Client *c, int x, int y, int w, 
int h);
- static void resizemouse(const Arg *arg);
- static void restack(Monitor *m);
- static void run(void);
-+static void runAutostart(void);
- static void scan(void);
- static int sendevent(Client *c, Atom proto);
- static void sendmon(Client *c, Monitor *m);
-@@ -205,7 +206,6 @@ static void setmfact(const Arg *arg);
- static void setup(void);
- static void seturgent(Client *c, int urg);
- static void showhide(Client *c);
--static void sigchld(int unused);
- static void spawn(const Arg *arg);
- static void tag(const Arg *arg);
- static void tagmon(const Arg *arg);
-@@ -681,6 +681,7 @@ detachstack(Client *c)
-       }
- }
- 
-+/* 
- Monitor *
- dirtomon(int dir)
- {
-@@ -695,7 +696,7 @@ dirtomon(int dir)
-               for (m = mons; m->next != selmon; m = m->next);
-       return m;
- }
--
-+*/
- void
- drawbar(Monitor *m)
- {
-@@ -737,7 +738,8 @@ drawbar(Monitor *m)
- 
-       if ((w = m->ww - tw - x) > bh) {
-               if (m->sel) {
--                      drw_setscheme(drw, scheme[m == selmon ? SchemeSel : 
SchemeNorm]);
-+                      drw_setscheme(drw, scheme[SchemeNorm]);
-+                      // 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)
-                               drw_rect(drw, x + boxs, boxs, boxw, boxw, 
m->sel->isfixed, 0);
-@@ -823,17 +825,22 @@ focusin(XEvent *e)
- }
- 
- void
--focusmon(const Arg *arg)
--{
--      Monitor *m;
-+focusmon(const Arg *arg) {
-+    Monitor *m = NULL;
- 
--      if (!mons->next)
--              return;
--      if ((m = dirtomon(arg->i)) == selmon)
--              return;
--      unfocus(selmon->sel, 0);
--      selmon = m;
--      focus(NULL);
-+    if (!mons->next)
-+        return;
-+
-+    if (arg->i > 0) {
-+        m = mons->next;
-+    } else if (arg->i < 0 && mons->next) {
-+        m = mons;
-+    }
-+
-+    if (m) {
-+        selmon = m;
-+        focus(NULL);
-+    }
- }
- 
- void
-@@ -955,16 +962,26 @@ grabkeys(void)
- {
-       updatenumlockmask();
-       {
--              unsigned int i, j;
-+              unsigned int i, j, k;
-               unsigned int modifiers[] = { 0, LockMask, numlockmask, 
numlockmask|LockMask };
--              KeyCode code;
-+              int start, end, skip;
-+              KeySym *syms;
- 
-               XUngrabKey(dpy, AnyKey, AnyModifier, root);
--              for (i = 0; i < LENGTH(keys); i++)
--                      if ((code = XKeysymToKeycode(dpy, keys[i].keysym)))
--                              for (j = 0; j < LENGTH(modifiers); j++)
--                                      XGrabKey(dpy, code, keys[i].mod | 
modifiers[j], root,
--                                              True, GrabModeAsync, 
GrabModeAsync);
-+              XDisplayKeycodes(dpy, &start, &end);
-+              syms = XGetKeyboardMapping(dpy, start, end - start + 1, &skip);
-+              if (!syms)
-+                      return;
-+              for (k = start; k <= end; k++)
-+                      for (i = 0; i < LENGTH(keys); i++)
-+                              /* skip modifier codes, we do that ourselves */
-+                              if (keys[i].keysym == syms[(k - start) * skip])
-+                                      for (j = 0; j < LENGTH(modifiers); j++)
-+                                              XGrabKey(dpy, k,
-+                                                       keys[i].mod | 
modifiers[j],
-+                                                       root, True,
-+                                                       GrabModeAsync, 
GrabModeAsync);
-+              XFree(syms);
-       }
- }
- 
-@@ -1381,6 +1398,12 @@ run(void)
-                       handler[ev.type](&ev); /* call handler */
- }
- 
-+void
-+runAutostart(void) {
-+      system("cd ~/.dwm; ./autostart_blocking.sh");
-+      system("cd ~/.dwm; ./autostart.sh &");
-+}
-+
- void
- scan(void)
- {
-@@ -1533,9 +1556,16 @@ setup(void)
-       int i;
-       XSetWindowAttributes wa;
-       Atom utf8string;
-+      struct sigaction sa;
-+
-+      /* do not transform children into zombies when they terminate */
-+      sigemptyset(&sa.sa_mask);
-+      sa.sa_flags = SA_NOCLDSTOP | SA_NOCLDWAIT | SA_RESTART;
-+      sa.sa_handler = SIG_IGN;
-+      sigaction(SIGCHLD, &sa, NULL);
- 
--      /* clean up any zombies immediately */
--      sigchld(0);
-+      /* clean up any zombies (inherited from .xinitrc etc) immediately */
-+      while (waitpid(-1, NULL, WNOHANG) > 0);
- 
-       /* init screen */
-       screen = DefaultScreen(dpy);
-@@ -1628,21 +1658,23 @@ showhide(Client *c)
-       }
- }
- 
--void
--sigchld(int unused)
--{
--      if (signal(SIGCHLD, sigchld) == SIG_ERR)
--              die("can't install SIGCHLD handler:");
--      while (0 < waitpid(-1, NULL, WNOHANG));
--}
--
- void
- spawn(const Arg *arg)
- {
-+      struct sigaction sa;
-+
-+      if (arg->v == dmenucmd)
-+              dmenumon[0] = '0' + selmon->num;
-       if (fork() == 0) {
-               if (dpy)
-                       close(ConnectionNumber(dpy));
-               setsid();
-+
-+              sigemptyset(&sa.sa_mask);
-+              sa.sa_flags = 0;
-+              sa.sa_handler = SIG_DFL;
-+              sigaction(SIGCHLD, &sa, NULL);
-+
-               execvp(((char **)arg->v)[0], (char **)arg->v);
-               die("dwm: execvp '%s' failed:", ((char **)arg->v)[0]);
-       }
-@@ -1658,14 +1690,26 @@ tag(const Arg *arg)
-       }
- }
- 
--void
--tagmon(const Arg *arg)
--{
--      if (!selmon->sel || !mons->next)
--              return;
--      sendmon(selmon->sel, dirtomon(arg->i));
-+void tagmon(const Arg *arg) {
-+    if (!selmon->sel || !mons->next)
-+        return;
-+
-+    Monitor *m;
-+
-+    if (arg->i > 0) {
-+        m = mons->next;  // Move to mon1
-+    } else if (arg->i < 0 && mons->next) {
-+        m = mons;  // Move to mon2
-+    } else {
-+        return; // Do nothing for arg->i == 0
-+    }
-+
-+    sendmon(selmon->sel, m);
-+    focus(NULL);
-+    arrange(selmon);
- }
- 
-+
- void
- tile(Monitor *m)
- {
-@@ -2140,6 +2184,7 @@ main(int argc, char *argv[])
-               die("pledge");
- #endif /* __OpenBSD__ */
-       scan();
-+      runAutostart();
-       run();
-       cleanup();
-       XCloseDisplay(dpy);
--- 
-2.43.0
-


Reply via email to