sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit e12931613de93e84241bd3229b7e5df5abad84b6
parent 7e17314e4b25b84b83b0712bc6dae30c59bc6977
Author: stojshic <stojshic@arch.pc>
Date:   Fri,  9 Feb 2024 21:47:11 +0100

Fixed a wrongly made patch for two monitor setup

Diffstat:
Adwm.suckless.org/patches/two_monitor_setup/dwm-twomonitorsetup-20240209-0b01a94.diff | 147+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ddwm.suckless.org/patches/two_monitor_setup/dwm-twomonitorsetup-6.4.diff | 242-------------------------------------------------------------------------------
2 files changed, 147 insertions(+), 242 deletions(-)

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 @@ -0,0 +1,147 @@ +From 0b01a947eeb893b85576e0117e98e455ff770558 Mon Sep 17 00:00:00 2001 +From: stojshic <stojshic@arch.pc> +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 @@ -1,242 +0,0 @@ -From 4928b5e9f4e5666ed35e3aa3f61df25c503e921e Mon Sep 17 00:00:00 2001 -From: stojshic <stojshic@arch.pc> -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 -