summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBossCode45 <human.cyborg42@gmail.com>2022-08-29 20:44:10 +1200
committerBossCode45 <human.cyborg42@gmail.com>2022-08-29 20:44:10 +1200
commit69771678b03966c4919c01ef786a9bb677ad0f0d (patch)
tree492fd0370a100e0a78ad3bf9d29593a1793e09d1
parent5715a9adcde69b5a7a87756b44ee69ee40f9c508 (diff)
downloadYATwm-69771678b03966c4919c01ef786a9bb677ad0f0d.tar.gz
YATwm-69771678b03966c4919c01ef786a9bb677ad0f0d.zip
Added some EWMH support
-rw-r--r--config.h4
-rw-r--r--mainbin445152 -> 0 bytes
-rw-r--r--main.cpp48
3 files changed, 50 insertions, 2 deletions
diff --git a/config.h b/config.h
index d646b69..694d96a 100644
--- a/config.h
+++ b/config.h
@@ -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
diff --git a/main b/main
deleted file mode 100644
index 58d0e1e..0000000
--- a/main
+++ /dev/null
Binary files differ
diff --git a/main.cpp b/main.cpp
index cdcf96e..cdd3aaa 100644
--- a/main.cpp
+++ b/main.cpp
@@ -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)