diff options
Diffstat (limited to 'ewmh.cpp')
| -rw-r--r-- | ewmh.cpp | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/ewmh.cpp b/ewmh.cpp deleted file mode 100644 index a3cc505..0000000 --- a/ewmh.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include "ewmh.h" -#include <X11/X.h> -#include <X11/Xatom.h> -#include <X11/Xlib.h> -#include <iostream> -#include <ostream> -#include <string> - -Display** dpy_; -Window* root_; - -void initEWMH(Display** dpy, Window* root, int numWS, std::vector<Workspace> workspaces) -{ - dpy_ = dpy; - root_ = root; - - Atom supported[] = {XInternAtom(*dpy_, "_NET_NUMBER_OF_DESKTOPS", false), XInternAtom(*dpy_, "_NET_DESKTOP_NAMES", false), XInternAtom(*dpy_, "_NET_CLIENT_LIST", false), XInternAtom(*dpy_, "_NET_CURRENT_DESKTOP", false)}; - int wsNamesLen = numWS; //For null bytes - for(int i = 0; i < numWS; i++) - { - wsNamesLen += workspaces[i].name.length(); - } - char wsNames[wsNamesLen]; - int pos = 0; - for(int i = 0; i < numWS; i++) - { - for(char toAdd : workspaces[i].name) - { - wsNames[pos++] = toAdd; - } - wsNames[pos++] = '\0'; - } - unsigned long numDesktops = numWS; - 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, 3); - XChangeProperty(*dpy_, *root_, netDesktopNamesAtom, XA_UTF8STRING, 8, PropModeReplace, (unsigned char*)&wsNames, wsNamesLen); - XChangeProperty(*dpy_, *root_, netNumDesktopsAtom, XA_CARDINAL, 32, PropModeReplace, (unsigned char*)&numDesktops, 1); - - -} - -void updateClientList(std::map<int, Client> clients) -{ - Atom netClientList = XInternAtom(*dpy_, "_NET_CLIENT_LIST", false); - XDeleteProperty(*dpy_, *root_, netClientList); - - std::map<int, Client>::iterator cItr; - for(cItr = clients.begin(); cItr != clients.end(); cItr++) - { - XChangeProperty(*dpy_, *root_, netClientList, XA_WINDOW, 32, PropModeAppend, (unsigned char*)&cItr->second.w, 1); - } - -} - -void setWindowDesktop(Window w, int desktop) -{ - unsigned long currDesktop = desktop - 1; - Atom netWMDesktop = XInternAtom(*dpy_, "_NET_WM_DESKTOP", false); - XChangeProperty(*dpy_, w, netWMDesktop, XA_CARDINAL, 32, PropModeReplace, (unsigned char*)&currDesktop, 1); -} - -void setCurrentDesktop(int desktop) -{ - unsigned long currDesktop = desktop - 1; - Atom netCurrentDesktop = XInternAtom(*dpy_, "_NET_CURRENT_DESKTOP", false); - 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", false); - Atom netWMStateVal; - if(fullscreen) - netWMStateVal = XInternAtom(*dpy_, "_NET_WM_STATE_FULLSCREEN", false); - else - netWMStateVal = XInternAtom(*dpy_, "", false); - XChangeProperty(*dpy_, w, netWMState, XA_ATOM, 32, PropModeReplace, (unsigned char*)&netWMStateVal, 1); - -} - -void setIPCPath(unsigned char* path, int len) -{ - Atom socketPathAtom = XInternAtom(*dpy_, "YATWM_SOCKET_PATH", false); - XChangeProperty(*dpy_, *root_, socketPathAtom, XA_STRING, 8, PropModeReplace, path, len); -} - -int getProp(Window w, char* propName, Atom* type, unsigned char** data) -{ - Atom prop_type = XInternAtom(*dpy_, propName, false); - int format; - unsigned long length; - unsigned long after; - int status = XGetWindowProperty(*dpy_, w, prop_type, - 0L, 1L, False, - AnyPropertyType, type, &format, - &length, &after, data); - return(status); -} |
