diff options
author | dec05eba <dec05eba@protonmail.com> | 2022-03-30 16:16:51 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2022-03-30 16:16:51 +0200 |
commit | 889efe51b26d505171d132097ac77a14ade5a101 (patch) | |
tree | 0a4233cdb4270a3c2ab54184f43b7344eb660a5b /main.cpp | |
parent | 44b986c762815874ccfb636152ae452ecba48764 (diff) |
Initial commit, showing ui above target window
Diffstat (limited to 'main.cpp')
-rw-r--r-- | main.cpp | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/main.cpp b/main.cpp deleted file mode 100644 index ee58e4d..0000000 --- a/main.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <errno.h> -#include <X11/Xlib.h> -#include <X11/cursorfont.h> -#include <unistd.h> - -static int x11_error_handler(Display *dpy, XErrorEvent *ev) { - return 0; -} - -static void usage() { - fprintf(stderr, "usage: window-overlay <window>\n"); - exit(1); -} - -static bool string_to_i64(const char *str, int64_t *result) { - errno = 0; - char *endptr = nullptr; - int64_t res = strtoll(str, &endptr, 0); - if(endptr == str || errno != 0) - return false; - - *result = res; - return true; -} - -int main(int argc, char **argv) { - if(argc != 2) - usage(); - - int64_t target_window; - if(!string_to_i64(argv[1], &target_window)) { - fprintf(stderr, "Error: invalid number '%s' was specific for window argument\n", argv[1]); - return 1; - } - - XSetErrorHandler(x11_error_handler); - - Display *display = XOpenDisplay(NULL); - if(!display) { - fprintf(stderr, "Error: XOpenDisplay failed\n"); - return 1; - } - - //const Window root_window = DefaultRootWindow(display); - const int screen = DefaultScreen(display); - - XSetWindowAttributes attr; - attr.background_pixel = XWhitePixel(display, screen); - attr.override_redirect = True; - - Window overlay_window = XCreateWindow(display, target_window, 0, 0, 256, 256, 0, DefaultDepth(display, screen), InputOutput, XDefaultVisual(display, screen), CWBackPixel|CWOverrideRedirect, &attr); - if(!overlay_window) { - fprintf(stderr, "Error: failed to create overlay window\n"); - return 1; - } - - Cursor default_cursor = XCreateFontCursor(display, XC_arrow); - - XMapWindow(display, overlay_window); - XGrabPointer(display, overlay_window, True, ButtonPressMask|ButtonReleaseMask, GrabModeSync, GrabModeSync, None, default_cursor, CurrentTime); - sleep(3); - - /*XEvent xev; - for(;;) { - XNextEvent(display, &xev); - }*/ - - return 0; -} |