diff options
| author | BossCode45 <human.cyborg42@gmail.com> | 2022-08-29 20:44:10 +1200 |
|---|---|---|
| committer | BossCode45 <human.cyborg42@gmail.com> | 2022-08-29 20:44:10 +1200 |
| commit | 69771678b03966c4919c01ef786a9bb677ad0f0d (patch) | |
| tree | 492fd0370a100e0a78ad3bf9d29593a1793e09d1 | |
| parent | 5715a9adcde69b5a7a87756b44ee69ee40f9c508 (diff) | |
| download | YATwm-69771678b03966c4919c01ef786a9bb677ad0f0d.tar.gz YATwm-69771678b03966c4919c01ef786a9bb677ad0f0d.zip | |
Added some EWMH support
| -rw-r--r-- | config.h | 4 | ||||
| -rw-r--r-- | main | bin | 445152 -> 0 bytes | |||
| -rw-r--r-- | main.cpp | 48 |
3 files changed, 50 insertions, 2 deletions
@@ -5,13 +5,15 @@ #include <string> //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 Binary files differ@@ -6,6 +6,7 @@ #include <cstdlib> #include <iostream> #include <map> +#include <string> #include <vector> #include <unistd.h> #include <cstring> @@ -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<int> 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) |
