wm

My window manager
git clone git://pcardenasb.com/wm
Log | Files | Refs

commit 15d58b14d210f2f7f9d5f81b4fea97ce4bc9ef09
parent 9a8688a5dd2ade4c559555e913c32553bf63fc1c
Author: Pablo Cárdenas <pablo.cardenas@imca.edu.pe>
Date:   Mon, 30 Dec 2024 16:41:41 -0500

Win-c to set wmcheckwin

Diffstat:
Mpwm.c | 22+++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/pwm.c b/pwm.c @@ -58,20 +58,15 @@ int main(void) XSelectInput(dpy, root, SubstructureRedirectMask | SubstructureNotifyMask | ButtonPressMask | PointerMotionMask | EnterWindowMask | LeaveWindowMask | StructureNotifyMask | PropertyChangeMask); XGrabKey(dpy, XKeysymToKeycode(dpy, XStringToKeysym("j")), Mod4Mask, root, True, GrabModeAsync, GrabModeAsync); XGrabKey(dpy, XKeysymToKeycode(dpy, XStringToKeysym("k")), Mod4Mask, root, True, GrabModeAsync, GrabModeAsync); + XGrabKey(dpy, XKeysymToKeycode(dpy, XStringToKeysym("c")), Mod4Mask, root, True, GrabModeAsync, GrabModeAsync); XGrabKey(dpy, XKeysymToKeycode(dpy, XStringToKeysym("q")), Mod4Mask, root, True, GrabModeAsync, GrabModeAsync); XGrabKey(dpy, XKeysymToKeycode(dpy, XStringToKeysym("space")), Mod4Mask, root, True, GrabModeAsync, GrabModeAsync); XGrabKey(dpy, XKeysymToKeycode(dpy, XStringToKeysym("Return")), Mod4Mask, root, True, GrabModeAsync, GrabModeAsync); XGrabButton(dpy, 1, Mod4Mask, root, True, ButtonPressMask | ButtonReleaseMask | PointerMotionMask, GrabModeAsync, GrabModeAsync, None, None); XGrabButton(dpy, 3, Mod4Mask, root, True, ButtonPressMask | ButtonReleaseMask | PointerMotionMask, GrabModeAsync, GrabModeAsync, None, None); - // https://specifications.freedesktop.org/wm-spec/1.3/ar01s03.html#id-1.4.12 - Window wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0); - printf("wmcheckwin = %lx\n", wmcheckwin); - XChangeProperty(dpy, wmcheckwin, XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False), XA_WINDOW, 32, PropModeReplace, (unsigned char *)&wmcheckwin, 1); - XChangeProperty(dpy, wmcheckwin, XInternAtom(dpy, "_NET_WM_NAME", False), XInternAtom(dpy, "UTF8_STRING", False), 8, PropModeReplace, (unsigned char *)"pwm", 3); - XChangeProperty(dpy, root, XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False), XA_WINDOW, 32, PropModeReplace, (unsigned char *)&wmcheckwin, 1); - + Window wmcheckwin = None; /////////////////////////// // Scan existing windows // @@ -216,6 +211,19 @@ int main(void) XSetInputFocus(dpy, windows[current_index], RevertToParent, CurrentTime); XRaiseWindow(dpy, windows[current_index]); XSetWindowBorder(dpy, windows[current_index], 0xAAAAAA); + } else if (ev.xkey.keycode == XKeysymToKeycode(dpy, XStringToKeysym("c"))) { + if (wmcheckwin) { + XDestroyWindow(dpy, wmcheckwin); + XDeleteProperty(dpy, root, XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False)); + wmcheckwin = None; + } else { + wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0); + fprintf(stderr, "wmcheckwin = %ld\n", wmcheckwin); + XChangeProperty(dpy, wmcheckwin, XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False), XA_WINDOW, 32, PropModeReplace, (unsigned char *)&wmcheckwin, 1); + XChangeProperty( + dpy, wmcheckwin, XInternAtom(dpy, "_NET_WM_NAME", False), XInternAtom(dpy, "UTF8_STRING", False), 8, PropModeReplace, (unsigned char *)"pwm", 3); + XChangeProperty(dpy, root, XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False), XA_WINDOW, 32, PropModeReplace, (unsigned char *)&wmcheckwin, 1); + } } else if (ev.xkey.keycode == XKeysymToKeycode(dpy, XStringToKeysym("q"))) { // TODO: Only send event If the window supports (XGetWMProtocols) Atom *protocols;