aboutsummaryrefslogtreecommitdiffstats
path: root/modules/ewmh_tags
diff options
context:
space:
mode:
Diffstat (limited to 'modules/ewmh_tags')
-rw-r--r--modules/ewmh_tags/ewmh_tags.c42
-rw-r--r--modules/ewmh_tags/ewmh_tags.h8
2 files changed, 50 insertions, 0 deletions
diff --git a/modules/ewmh_tags/ewmh_tags.c b/modules/ewmh_tags/ewmh_tags.c
new file mode 100644
index 0000000..12e8e26
--- /dev/null
+++ b/modules/ewmh_tags/ewmh_tags.c
@@ -0,0 +1,42 @@
+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, (char **)tags, TAGSLENGTH, XUTF8StringStyle, &text);
+ XSetTextProperty(dpy, root, &text, netatom[NetDesktopNames]);
+}
+
+void
+setnumdesktops(void){
+ long data[] = { TAGSLENGTH };
+ XChangeProperty(dpy, root, netatom[NetNumberOfDesktops], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 1);
+}
+
+void
+setviewport(void){
+ long data[] = { 0, 0 };
+ XChangeProperty(dpy, root, netatom[NetDesktopViewport], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 2);
+}
+
+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);
+}
+
+void
+updatewmdesktop(Client *c)
+{
+ unsigned long desktop = c->tags ? ffs(c->tags) - 1 : 0;
+ XChangeProperty(dpy, c->win, netatom[NetDesktopNum], XA_CARDINAL, 32,
+ PropModeReplace, (unsigned char *)&desktop, 1);
+}
diff --git a/modules/ewmh_tags/ewmh_tags.h b/modules/ewmh_tags/ewmh_tags.h
new file mode 100644
index 0000000..74137c8
--- /dev/null
+++ b/modules/ewmh_tags/ewmh_tags.h
@@ -0,0 +1,8 @@
+#define TAGSLENGTH (LENGTH(tags))
+
+static void setcurrentdesktop(void);
+static void setdesktopnames(void);
+static void setnumdesktops(void);
+static void setviewport(void);
+static void updatecurrentdesktop(void);
+static void updatewmdesktop(Client *c); \ No newline at end of file