diff options
Diffstat (limited to 'patches/dwm-ewmhtags-20180101-db22360.diff')
-rw-r--r-- | patches/dwm-ewmhtags-20180101-db22360.diff | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/patches/dwm-ewmhtags-20180101-db22360.diff b/patches/dwm-ewmhtags-20180101-db22360.diff deleted file mode 100644 index 8196bc2..0000000 --- a/patches/dwm-ewmhtags-20180101-db22360.diff +++ /dev/null @@ -1,154 +0,0 @@ -From 44ad1a9255504ef36670f46101689b2ab9d8501e Mon Sep 17 00:00:00 2001 -From: rangerlatham <ghanklatham@gmail.com> -Date: Sun, 31 Dec 2017 19:26:47 -0500 -Subject: [PATCH] patch that adds ewmh functionality to dwm. see - dwm.suckless.org/patches/ewmhtags for more details - ---- - dwm.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 47 insertions(+), 1 deletion(-) - -diff --git a/dwm.c b/dwm.c -index ec6a27c..018b7aa 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) - #define ColBorder 2 - -@@ -63,7 +64,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 */ -@@ -198,11 +199,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); -@@ -217,6 +222,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 int updategeom(void); - static void updatebarpos(Monitor *m); - static void updatebars(void); -@@ -1432,6 +1438,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) -@@ -1527,6 +1543,12 @@ setmfact(const Arg *arg) - arrange(selmon); - } - -+void -+setnumdesktops(void){ -+ long data[] = { TAGSLENGTH }; -+ XChangeProperty(dpy, root, netatom[NetNumberOfDesktops], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 1); -+} -+ - void - setup(void) - { -@@ -1563,6 +1585,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); -@@ -1585,6 +1611,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; -@@ -1596,6 +1626,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 -@@ -1745,6 +1780,7 @@ toggleview(const Arg *arg) - focus(NULL); - arrange(selmon); - } -+ updatecurrentdesktop(); - } - - void -@@ -1847,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) -@@ -2043,6 +2088,7 @@ view(const Arg *arg) - selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; - focus(NULL); - arrange(selmon); -+ updatecurrentdesktop(); - } - - Client * --- -2.15.1 - |