diff options
author | Philip Wittamore <philip@wittamore.com> | 2025-05-28 11:00:35 +0200 |
---|---|---|
committer | Philip Wittamore <philip@wittamore.com> | 2025-05-28 11:00:35 +0200 |
commit | fb95766a2341900af399a6ea5ff37cefe03a7dc6 (patch) | |
tree | 54ec6926b7aa1b7b718dde74dd1aca49a61ec325 | |
parent | 27718449bd607a84b60e545d6ce0085c6298f105 (diff) | |
download | dwm-fb95766a2341900af399a6ea5ff37cefe03a7dc6.tar.gz dwm-fb95766a2341900af399a6ea5ff37cefe03a7dc6.tar.bz2 dwm-fb95766a2341900af399a6ea5ff37cefe03a7dc6.zip |
update
-rwxr-xr-x | dwm | bin | 73624 -> 73736 bytes | |||
-rw-r--r-- | patches/dwm-preserveonrestart-6.3.diff | 118 |
2 files changed, 0 insertions, 118 deletions
Binary files differ diff --git a/patches/dwm-preserveonrestart-6.3.diff b/patches/dwm-preserveonrestart-6.3.diff deleted file mode 100644 index 079cf05..0000000 --- a/patches/dwm-preserveonrestart-6.3.diff +++ /dev/null @@ -1,118 +0,0 @@ -From 713fa8650f5a20006451ebcccf57a4512e83bae8 Mon Sep 17 00:00:00 2001 -From: Arda Atci <arda@phytech.io> -Date: Wed, 18 May 2022 17:23:16 +0300 -Subject: [PATCH] preserve clients on old tags when renewing dwm - -By default, when dwm is recompiled-restarted all clients will -lose it's current tag and collapse to first tag. This patch preserves -clients on old tags, however note that layout order is not preserved. - ---- - dwm.c | 38 +++++++++++++++++++++++++++++++++++++- - 1 file changed, 37 insertions(+), 1 deletion(-) - -diff --git a/dwm.c b/dwm.c -index a96f33c..a12e0bd 100644 ---- a/dwm.c -+++ b/dwm.c -@@ -62,7 +62,7 @@ enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ - enum { SchemeNorm, SchemeSel }; /* color schemes */ - enum { NetSupported, NetWMName, NetWMState, NetWMCheck, - NetWMFullscreen, NetActiveWindow, NetWMWindowType, -- NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ -+ NetWMWindowTypeDialog, NetClientList, NetClientInfo, NetLast }; /* EWMH atoms */ - enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */ - enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, - ClkClientWin, ClkRootWin, ClkLast }; /* clicks */ -@@ -198,6 +198,7 @@ static void scan(void); - static int sendevent(Client *c, Atom proto); - static void sendmon(Client *c, Monitor *m); - static void setclientstate(Client *c, long state); -+static void setclienttagprop(Client *c); - static void setfocus(Client *c); - static void setfullscreen(Client *c, int fullscreen); - static void setlayout(const Arg *arg); -@@ -1060,6 +1061,26 @@ manage(Window w, XWindowAttributes *wa) - updatewindowtype(c); - updatesizehints(c); - updatewmhints(c); -+ { -+ int format; -+ unsigned long *data, n, extra; -+ Monitor *m; -+ Atom atom; -+ if (XGetWindowProperty(dpy, c->win, netatom[NetClientInfo], 0L, 2L, False, XA_CARDINAL, -+ &atom, &format, &n, &extra, (unsigned char **)&data) == Success && n == 2) { -+ c->tags = *data; -+ for (m = mons; m; m = m->next) { -+ if (m->num == *(data+1)) { -+ c->mon = m; -+ break; -+ } -+ } -+ } -+ if (n > 0) -+ XFree(data); -+ } -+ setclienttagprop(c); -+ - XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask); - grabbuttons(c, 0); - if (!c->isfloating) -@@ -1423,6 +1444,7 @@ sendmon(Client *c, Monitor *m) - c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */ - attach(c); - attachstack(c); -+ setclienttagprop(c); - focus(NULL); - arrange(NULL); - } -@@ -1566,6 +1588,7 @@ setup(void) - netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False); - netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False); - netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False); -+ netatom[NetClientInfo] = XInternAtom(dpy, "_NET_CLIENT_INFO", False); - /* init cursors */ - cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr); - cursor[CurResize] = drw_cur_create(drw, XC_sizing); -@@ -1589,6 +1612,7 @@ setup(void) - XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, - PropModeReplace, (unsigned char *) netatom, NetLast); - XDeleteProperty(dpy, root, netatom[NetClientList]); -+ XDeleteProperty(dpy, root, netatom[NetClientInfo]); - /* select events */ - wa.cursor = cursor[CurNormal]->cursor; - wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask -@@ -1656,11 +1680,22 @@ spawn(const Arg *arg) - } - } - -+void -+setclienttagprop(Client *c) -+{ -+ long data[] = { (long) c->tags, (long) c->mon->num }; -+ XChangeProperty(dpy, c->win, netatom[NetClientInfo], XA_CARDINAL, 32, -+ PropModeReplace, (unsigned char *) data, 2); -+} -+ - void - tag(const Arg *arg) - { -+ Client *c; - if (selmon->sel && arg->ui & TAGMASK) { -+ c = selmon->sel; - selmon->sel->tags = arg->ui & TAGMASK; -+ setclienttagprop(c); - focus(NULL); - arrange(selmon); - } -@@ -1735,6 +1770,7 @@ toggletag(const Arg *arg) - newtags = selmon->sel->tags ^ (arg->ui & TAGMASK); - if (newtags) { - selmon->sel->tags = newtags; -+ setclienttagprop(selmon->sel); - focus(NULL); - arrange(selmon); - } --- -2.36.1 |