diff options
| author | BossCode45 <human.cyborg42@gmail.com> | 2023-02-03 17:45:07 +1300 |
|---|---|---|
| committer | BossCode45 <human.cyborg42@gmail.com> | 2023-06-21 20:19:01 +1200 |
| commit | ab3d823a8190ae6ec4a1444aa3b5a01aaa018586 (patch) | |
| tree | 7ab08c3e4675a0b92383670da88e4e49db20cf28 | |
| parent | ef998ee445e8a59a1cc5c9d15d721aabea187fd7 (diff) | |
| download | YATwm-ab3d823a8190ae6ec4a1444aa3b5a01aaa018586.tar.gz YATwm-ab3d823a8190ae6ec4a1444aa3b5a01aaa018586.zip | |
feat: Windows that request to be fullscreen should become fullscreen - more testing neededs
| -rw-r--r-- | ewmh.cpp | 12 | ||||
| -rw-r--r-- | ewmh.h | 2 | ||||
| -rw-r--r-- | main.cpp | 21 |
3 files changed, 35 insertions, 0 deletions
@@ -65,6 +65,18 @@ void setCurrentDesktop(int desktop) XChangeProperty(*dpy_, *root_, netCurrentDesktop, XA_CARDINAL, 32, PropModeReplace, (unsigned char*)&currDesktop, 1); } +void setFullscreen(Window w, bool fullscreen) +{ + Atom netWMState = XInternAtom(*dpy_, "_NET_WM_STATE", true); + Atom netWMStateVal; + if(fullscreen) + netWMStateVal = XInternAtom(*dpy_, "_NET_WM_STATE_FULLSCREEN", true); + else + netWMStateVal = XInternAtom(*dpy_, "", true); + XChangeProperty(*dpy_, w, netWMState, XA_ATOM, 32, PropModeReplace, (unsigned char*)&netWMStateVal, 1); + +} + int getProp(Window w, char* propName, Atom* type, unsigned char** data) { Atom prop_type = XInternAtom(*dpy_, propName, false); @@ -18,4 +18,6 @@ void setWindowDesktop(Window w, int desktop); void setCurrentDesktop(int desktop); +void setFullscreen(Window w, bool fullscreen); + int getProp(Window w, char* propName, Atom* type, unsigned char** data); @@ -589,6 +589,7 @@ void fullscreen(const KeyArg arg) int cID = getFrame(fID).cID; getClient(cID).fullscreen ^= true; tileRoots(); + setFullscreen(focusedWindow, getClient(cID).fullscreen); } void configureRequest(XConfigureRequestEvent e) @@ -862,6 +863,26 @@ void clientMessage(XClientMessageEvent e) setCurrentDesktop(currWS); */ } + else if(e.message_type == XInternAtom(dpy, "_NET_WM_STATE", false)) + { + if((Atom)e.data.l[0] == 0) + log("\tremove"); + if((Atom)e.data.l[0] == 1) + log("\ttoggle"); + if((Atom)e.data.l[0] == 2) + log("\tadd"); + char* prop1 = XGetAtomName(dpy, (Atom)e.data.l[1]); + log("\tprop1"); + if((Atom)e.data.l[1] == XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", false)) + { + int fID = getFrameID(e.window); + int cID = getFrame(fID).cID; + getClient(cID).fullscreen = (Atom) e.data.l[0] == 1; + setFullscreen(e.window, (Atom) e.data.l[0] == 1); + tileRoots(); + } + XFree(prop1); + } XFree(name); } |
