From 69771678b03966c4919c01ef786a9bb677ad0f0d Mon Sep 17 00:00:00 2001 From: BossCode45 Date: Mon, 29 Aug 2022 20:44:10 +1200 Subject: Added some EWMH support --- config.h | 4 +++- main | Bin 445152 -> 0 bytes main.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 50 insertions(+), 2 deletions(-) delete mode 100644 main diff --git a/config.h b/config.h index d646b69..694d96a 100644 --- a/config.h +++ b/config.h @@ -5,13 +5,15 @@ #include //Startup -std::string startup[] = {"picom -fD 3", "feh --bg-scale /usr/share/backgrounds/vapor_trails_blue.png", "~/.config/polybar/launch.sh"}; +std::string startup[] = {"picom -fD 3", "feh --bg-scale /usr/share/backgrounds/vapor_trails_blue.png"};//, "~/.config/polybar/launch.sh"}; //Main config int gaps = 10; int outerGaps = 30; +//WS config int numWS = 5; +std::string workspaceNames[] = {"1: d", "2: s", "3: g", "4: c", "5: r"}; //Keys //The types and perhaps functions likely to be moved to seperate header file later diff --git a/main b/main deleted file mode 100644 index 58d0e1e..0000000 Binary files a/main and /dev/null differ diff --git a/main.cpp b/main.cpp index cdcf96e..cdd3aaa 100644 --- a/main.cpp +++ b/main.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -539,6 +540,51 @@ int main(int argc, char** argv) XGrabKey(dpy, XKeysymToKeycode(dpy, keyBinds[i].keysym), keyBinds[i].modifiers, root, false, GrabModeAsync, GrabModeAsync); } + + + + //EWMH stuff + Atom supported[] = {XInternAtom(dpy, "_NET_NUMBER_OF_DESKTOPS", false), XInternAtom(dpy, "_NET_DESKTOP_NAMES", false)}; + int wsNamesLen = numWS; //For null bytes + for(int i = 0; i < numWS; i++) + { + wsNamesLen += workspaceNames[i].length(); + } + char wsNames[wsNamesLen]; + int pos = 0; + for(int i = 0; i < numWS; i++) + { + for(char toAdd : workspaceNames[i]) + { + wsNames[pos++] = toAdd; + } + wsNames[pos++] = '\0'; + } + unsigned long numDesktops = 5; + Atom netSupportedAtom = XInternAtom(dpy, "_NET_SUPPORTED", false); + Atom netNumDesktopsAtom = XInternAtom(dpy, "_NET_NUMBER_OF_DESKTOPS", false); + Atom netDesktopNamesAtom = XInternAtom(dpy, "_NET_DESKTOP_NAMES", false); + Atom XA_UTF8STRING = XInternAtom(dpy, "UTF8_STRING", false); + XChangeProperty(dpy, root, netSupportedAtom, XA_ATOM, 32, PropModeReplace, (unsigned char*)supported, 2); + XChangeProperty(dpy, root, netDesktopNamesAtom, XA_UTF8STRING, 8, PropModeReplace, (unsigned char*)&wsNames, wsNamesLen); + XChangeProperty(dpy, root, netNumDesktopsAtom, XA_CARDINAL, 32, PropModeReplace, (unsigned char*)&numDesktops, 1); + + /* + Atom type; + int format; + unsigned long length; + unsigned long after; + unsigned char* data; + int status = XGetWindowProperty(dpy, root, netDesktopNamesAtom, 0, 50L, false, AnyPropertyType, &type, &format, &length, &after, &data); + if (status == Success && type != None) + { + cout << data << "\n"; + } + XFree(data); + */ + + + for(int i = 1; i < numWS + 1; i++) { vector v; @@ -556,7 +602,7 @@ int main(int argc, char** argv) } } - XSetInputFocus(dpy, root, RevertToNone, CurrentTime); + XSetInputFocus(dpy, root, RevertToNone, CurrentTime); cout << "Begin mainloop\n"; while(keepGoing) -- cgit v1.2.3