From e7d371a93078a444d8b7a75dd0a5a18d18176f41 Mon Sep 17 00:00:00 2001 From: bjarke-cachy-btw Date: Sat, 11 Jul 2026 18:50:58 +0200 Subject: [PATCH] add ewmh patch --- config.h | 2 +- dwm | Bin 96288 -> 100616 bytes dwm.c | 49 ++++++++++- dwm.c.orig | 22 +++-- dwm.c.rej | 59 +++++++++---- dwm.o | Bin 91624 -> 93552 bytes patches/dwm-ewmhtags-6.2.diff | 161 ++++++++++++++++++++++++++++++++++ 7 files changed, 268 insertions(+), 25 deletions(-) create mode 100644 patches/dwm-ewmhtags-6.2.diff diff --git a/config.h b/config.h index 54a41cf..a76742d 100644 --- a/config.h +++ b/config.h @@ -44,7 +44,7 @@ static Sp scratchpads[] = { }; /* tagging */ -static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; +static char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; static const Rule rules[] = { /* xprop(1): diff --git a/dwm b/dwm index 2d8fd653ad8f2701b2cec204b72d175d52aa80c2..ae685cac4b4de2f86f1feba79890c9dbd239b845 100755 GIT binary patch delta 41819 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

|bSLOh&?BJVfSv_?1@AIs^26&{EJxL4O5( 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 delta 40948 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 + 2 * (X)->bw) #define NUMTAGS (LENGTH(tags) + LENGTH(scratchpads)) #define TAGMASK ((1 << NUMTAGS) - 1) +#define TAGSLENGTH (LENGTH(tags)) #define SPTAG(i) ((1 << LENGTH(tags)) << (i)) #define SPTAGMASK (((1 << LENGTH(scratchpads))-1) << LENGTH(tags)) #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) @@ -79,7 +80,7 @@ enum { SchemeNorm, SchemeSel }; /* color schemes */ enum { NetSupported, NetWMName, NetWMState, NetWMCheck, NetSystemTray, NetSystemTrayOP, NetSystemTrayOrientation, NetSystemTrayOrientationHorz, NetWMFullscreen, NetActiveWindow, NetWMWindowType, - NetWMWindowTypeDialog, NetClientList, NetClientInfo, NetLast }; /* EWMH atoms */ + NetWMWindowTypeDialog, NetClientList, NetClientInfo, NetDesktopNames, NetDesktopViewport, NetNumberOfDesktops, NetCurrentDesktop, NetLast }; /* EWMH atoms */ enum { Manager, Xembed, XembedInfo, XLast }; /* Xembed atoms */ enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */ enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkClientWin, @@ -240,13 +241,17 @@ static void scan(void); static int sendevent(Window w, Atom proto, int m, long d0, long d1, long d2, long d3, long d4); static void sendmon(Client *c, Monitor *m); static void setclientstate(Client *c, long state); +static void setcurrentdesktop(void); +static void setdesktopnames(void); static void setclienttagprop(Client *c); static void setfocus(Client *c); static void setfullscreen(Client *c, int fullscreen); static void setlayout(const Arg *arg); static void setcfact(const Arg *arg); static void setmfact(const Arg *arg); +static void setnumdesktops(void); static void setup(void); +static void setviewport(void); static void seturgent(Client *c, int urg); static void showhide(Client *c); static void sighup(int unused); @@ -265,6 +270,7 @@ static void toggleview(const Arg *arg); static void unfocus(Client *c, int setfocus); static void unmanage(Client *c, int destroyed); static void unmapnotify(XEvent *e); +static void updatecurrentdesktop(void); static void updatebarpos(Monitor *m); static void updatebars(void); static void updateclientlist(void); @@ -1935,6 +1941,16 @@ setclientstate(Client *c, long state) XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32, PropModeReplace, (unsigned char *)data, 2); } +void +setcurrentdesktop(void){ + long data[] = { 0 }; + XChangeProperty(dpy, root, netatom[NetCurrentDesktop], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 1); +} +void setdesktopnames(void){ + XTextProperty text; + Xutf8TextListToTextProperty(dpy, tags, TAGSLENGTH, XUTF8StringStyle, &text); + XSetTextProperty(dpy, root, &text, netatom[NetDesktopNames]); +} int sendevent(Window w, Atom proto, int mask, long d0, long d1, long d2, long d3, long d4) @@ -1972,6 +1988,12 @@ sendevent(Window w, Atom proto, int mask, long d0, long d1, long d2, long d3, lo return exists; } +void +setnumdesktops(void){ + long data[] = { TAGSLENGTH }; + XChangeProperty(dpy, root, netatom[NetNumberOfDesktops], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 1); +} + void setfocus(Client *c) { @@ -2162,6 +2184,10 @@ 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[NetDesktopViewport] = XInternAtom(dpy, "_NET_DESKTOP_VIEWPORT", False); + netatom[NetNumberOfDesktops] = XInternAtom(dpy, "_NET_NUMBER_OF_DESKTOPS", False); + netatom[NetCurrentDesktop] = XInternAtom(dpy, "_NET_CURRENT_DESKTOP", False); + netatom[NetDesktopNames] = XInternAtom(dpy, "_NET_DESKTOP_NAMES", False); netatom[NetClientInfo] = XInternAtom(dpy, "_NET_CLIENT_INFO", False); xatom[Manager] = XInternAtom(dpy, "MANAGER", False); xatom[Xembed] = XInternAtom(dpy, "_XEMBED", False); @@ -2190,6 +2216,10 @@ setup(void) /* EWMH support per view */ XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, PropModeReplace, (unsigned char *) netatom, NetLast); + setnumdesktops(); + setcurrentdesktop(); + setdesktopnames(); + setviewport(); XDeleteProperty(dpy, root, netatom[NetClientList]); XDeleteProperty(dpy, root, netatom[NetClientInfo]); /* select events */ @@ -2202,6 +2232,11 @@ setup(void) grabkeys(); focus(NULL); } +void +setviewport(void){ + long data[] = { 0, 0 }; + XChangeProperty(dpy, root, netatom[NetDesktopViewport], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 2); +} void seturgent(Client *c, int urg) @@ -2293,6 +2328,7 @@ tag(const Arg *arg) focus(NULL); arrange(selmon); } + updatecurrentdesktop(); } void @@ -2420,6 +2456,7 @@ toggletag(const Arg *arg) focus(NULL); arrange(selmon); } + updatecurrentdesktop(); } void @@ -2547,6 +2584,15 @@ updateclientlist(void) XA_WINDOW, 32, PropModeAppend, (unsigned char *) &(c->win), 1); } +void updatecurrentdesktop(void){ + long rawdata[] = { selmon->tagset[selmon->seltags] }; + int i=0; + while(*rawdata >> (i+1)){ + i++; + } + long data[] = { i }; + XChangeProperty(dpy, root, netatom[NetCurrentDesktop], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 1); +} int updategeom(void) @@ -2863,6 +2909,7 @@ view(const Arg *arg) selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; focus(NULL); arrange(selmon); + updatecurrentdesktop(); } Client * diff --git a/dwm.c.orig b/dwm.c.orig index 3c095eb..be695cc 100644 --- a/dwm.c.orig +++ b/dwm.c.orig @@ -112,6 +112,7 @@ struct Client { int bw, oldbw; unsigned int tags; int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen; + int issteam; int fakefullscreen; Client *next; Client *snext; @@ -389,6 +390,9 @@ applyrules(Client *c) class = ch.res_class ? ch.res_class : broken; instance = ch.res_name ? ch.res_name : broken; + if (strstr(class, "Steam") || strstr(class, "steam_app_")) + c->issteam = 1; + for (i = 0; i < LENGTH(rules); i++) { r = &rules[i]; if ((!r->title || strstr(c->name, r->title)) @@ -764,13 +768,15 @@ configurerequest(XEvent *e) c->bw = ev->border_width; else if (c->isfloating || !selmon->lt[selmon->sellt]->arrange) { m = c->mon; - if (ev->value_mask & CWX) { - c->oldx = c->x; - c->x = m->mx + ev->x; - } - if (ev->value_mask & CWY) { - c->oldy = c->y; - c->y = m->my + ev->y; + if (!c->issteam) { + if (ev->value_mask & CWX) { + c->oldx = c->x; + c->x = m->mx + ev->x; + } + if (ev->value_mask & CWY) { + c->oldy = c->y; + c->y = m->my + ev->y; + } } if (ev->value_mask & CWWidth) { c->oldw = c->w; @@ -1975,6 +1981,8 @@ setfocus(Client *c) XA_WINDOW, 32, PropModeReplace, (unsigned char *) &(c->win), 1); } + if (c->issteam) + setclientstate(c, NormalState); sendevent(c->win, wmatom[WMTakeFocus], NoEventMask, wmatom[WMTakeFocus], CurrentTime, 0, 0, 0); } diff --git a/dwm.c.rej b/dwm.c.rej index f62ea2b..4ee2bd2 100644 --- a/dwm.c.rej +++ b/dwm.c.rej @@ -1,19 +1,46 @@ --- dwm.c +++ dwm.c -@@ -92,6 +92,7 @@ struct Client { - int bw, oldbw; - unsigned int tags; - int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen; -+ int issteam; - Client *next; - Client *snext; - Monitor *mon; -@@ -1480,6 +1486,8 @@ setfocus(Client *c) - XA_WINDOW, 32, PropModeReplace, - (unsigned char *) &(c->win), 1); - } -+ if (c->issteam) -+ setclientstate(c, NormalState); - sendevent(c, wmatom[WMTakeFocus]); - } +@@ -55,6 +55,7 @@ + #define WIDTH(X) ((X)->w + 2 * (X)->bw) + #define HEIGHT(X) ((X)->h + 2 * (X)->bw) + #define TAGMASK ((1 << LENGTH(tags)) - 1) ++#define TAGSLENGTH (LENGTH(tags)) + #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) + /* enums */ +@@ -62,7 +63,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, NetDesktopNames, NetDesktopViewport, NetNumberOfDesktops, NetCurrentDesktop, NetLast }; /* EWMH atoms */ + enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */ + enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, + ClkClientWin, ClkRootWin, ClkLast }; /* clicks */ +@@ -197,11 +198,15 @@ 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 setcurrentdesktop(void); ++static void setdesktopnames(void); + static void setfocus(Client *c); + static void setfullscreen(Client *c, int fullscreen); + static void setlayout(const Arg *arg); + static void setmfact(const Arg *arg); ++static void setnumdesktops(void); + static void setup(void); ++static void setviewport(void); + static void seturgent(Client *c, int urg); + static void showhide(Client *c); + static void sigchld(int unused); +@@ -1579,6 +1601,10 @@ 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[NetDesktopViewport] = XInternAtom(dpy, "_NET_DESKTOP_VIEWPORT", False); ++ netatom[NetNumberOfDesktops] = XInternAtom(dpy, "_NET_NUMBER_OF_DESKTOPS", False); ++ netatom[NetCurrentDesktop] = XInternAtom(dpy, "_NET_CURRENT_DESKTOP", False); ++ netatom[NetDesktopNames] = XInternAtom(dpy, "_NET_DESKTOP_NAMES", False); + /* init cursors */ + cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr); + cursor[CurResize] = drw_cur_create(drw, XC_sizing); diff --git a/dwm.o b/dwm.o index d3f3892468f4f19fb62f021bc9ad2491dc59bc44..9a3852f0501bb4dc1aaf6cf2d08b836d19f33ae1 100644 GIT binary patch literal 93552 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 F|9^JuAPoQj delta 32999 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 OYVt(m>6mg?H2Hr5>GDVb diff --git a/patches/dwm-ewmhtags-6.2.diff b/patches/dwm-ewmhtags-6.2.diff new file mode 100644 index 0000000..32abb8c --- /dev/null +++ b/patches/dwm-ewmhtags-6.2.diff @@ -0,0 +1,161 @@ +From e5f0eefa921e6bad1e6f75faced0c3ae519995b3 Mon Sep 17 00:00:00 2001 +From: Ryan Kes +Date: Thu, 28 Mar 2019 14:49:28 +0100 +Subject: [PATCH] dwm-ewhmtags-6.2 + +--- + dwm.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 48 insertions(+), 1 deletion(-) + +diff --git a/dwm.c b/dwm.c +index 4465af1..92022a1 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -55,6 +55,7 @@ + #define WIDTH(X) ((X)->w + 2 * (X)->bw) + #define HEIGHT(X) ((X)->h + 2 * (X)->bw) + #define TAGMASK ((1 << LENGTH(tags)) - 1) ++#define TAGSLENGTH (LENGTH(tags)) + #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) + + /* enums */ +@@ -62,7 +63,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, NetDesktopNames, NetDesktopViewport, NetNumberOfDesktops, NetCurrentDesktop, NetLast }; /* EWMH atoms */ + enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */ + enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, + ClkClientWin, ClkRootWin, ClkLast }; /* clicks */ +@@ -197,11 +198,15 @@ 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 setcurrentdesktop(void); ++static void setdesktopnames(void); + static void setfocus(Client *c); + static void setfullscreen(Client *c, int fullscreen); + static void setlayout(const Arg *arg); + static void setmfact(const Arg *arg); ++static void setnumdesktops(void); + static void setup(void); ++static void setviewport(void); + static void seturgent(Client *c, int urg); + static void showhide(Client *c); + static void sigchld(int unused); +@@ -216,6 +221,7 @@ static void toggleview(const Arg *arg); + static void unfocus(Client *c, int setfocus); + static void unmanage(Client *c, int destroyed); + static void unmapnotify(XEvent *e); ++static void updatecurrentdesktop(void); + static void updatebarpos(Monitor *m); + static void updatebars(void); + static void updateclientlist(void); +@@ -1431,6 +1437,16 @@ setclientstate(Client *c, long state) + XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32, + PropModeReplace, (unsigned char *)data, 2); + } ++void ++setcurrentdesktop(void){ ++ long data[] = { 0 }; ++ XChangeProperty(dpy, root, netatom[NetCurrentDesktop], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 1); ++} ++void setdesktopnames(void){ ++ XTextProperty text; ++ Xutf8TextListToTextProperty(dpy, tags, TAGSLENGTH, XUTF8StringStyle, &text); ++ XSetTextProperty(dpy, root, &text, netatom[NetDesktopNames]); ++} + + int + sendevent(Client *c, Atom proto) +@@ -1457,6 +1473,12 @@ sendevent(Client *c, Atom proto) + return exists; + } + ++void ++setnumdesktops(void){ ++ long data[] = { TAGSLENGTH }; ++ XChangeProperty(dpy, root, netatom[NetNumberOfDesktops], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 1); ++} ++ + void + setfocus(Client *c) + { +@@ -1562,6 +1584,10 @@ 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[NetDesktopViewport] = XInternAtom(dpy, "_NET_DESKTOP_VIEWPORT", False); ++ netatom[NetNumberOfDesktops] = XInternAtom(dpy, "_NET_NUMBER_OF_DESKTOPS", False); ++ netatom[NetCurrentDesktop] = XInternAtom(dpy, "_NET_CURRENT_DESKTOP", False); ++ netatom[NetDesktopNames] = XInternAtom(dpy, "_NET_DESKTOP_NAMES", False); + /* init cursors */ + cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr); + cursor[CurResize] = drw_cur_create(drw, XC_sizing); +@@ -1584,6 +1610,10 @@ setup(void) + /* EWMH support per view */ + XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, + PropModeReplace, (unsigned char *) netatom, NetLast); ++ setnumdesktops(); ++ setcurrentdesktop(); ++ setdesktopnames(); ++ setviewport(); + XDeleteProperty(dpy, root, netatom[NetClientList]); + /* select events */ + wa.cursor = cursor[CurNormal]->cursor; +@@ -1595,6 +1625,11 @@ setup(void) + grabkeys(); + focus(NULL); + } ++void ++setviewport(void){ ++ long data[] = { 0, 0 }; ++ XChangeProperty(dpy, root, netatom[NetDesktopViewport], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 2); ++} + + + void +@@ -1732,6 +1767,7 @@ toggletag(const Arg *arg) + focus(NULL); + arrange(selmon); + } ++ updatecurrentdesktop(); + } + + void +@@ -1744,6 +1780,7 @@ toggleview(const Arg *arg) + focus(NULL); + arrange(selmon); + } ++ updatecurrentdesktop(); + } + + void +@@ -1846,6 +1883,15 @@ updateclientlist() + XA_WINDOW, 32, PropModeAppend, + (unsigned char *) &(c->win), 1); + } ++void updatecurrentdesktop(void){ ++ long rawdata[] = { selmon->tagset[selmon->seltags] }; ++ int i=0; ++ while(*rawdata >> i+1){ ++ i++; ++ } ++ long data[] = { i }; ++ XChangeProperty(dpy, root, netatom[NetCurrentDesktop], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 1); ++} + + int + updategeom(void) +@@ -2042,6 +2088,7 @@ view(const Arg *arg) + selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; + focus(NULL); + arrange(selmon); ++ updatecurrentdesktop(); + } + + Client * +-- +2.21.0 +