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:
| M | pwm.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;