diff options
author | Jonas Gunz <himself@jonasgunz.de> | 2020-07-08 02:10:07 +0200 |
---|---|---|
committer | Jonas Gunz <himself@jonasgunz.de> | 2020-07-08 02:10:07 +0200 |
commit | cb6265680c0154df59dc686001b73ef863823a8a (patch) | |
tree | 6c25df891809b0bd110d55eeae1e800ec9e71502 /src | |
download | x-cycle-screen-cb6265680c0154df59dc686001b73ef863823a8a.tar.gz |
initial
Diffstat (limited to 'src')
-rw-r--r-- | src/switch-input.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/switch-input.c b/src/switch-input.c new file mode 100644 index 0000000..cdf490c --- /dev/null +++ b/src/switch-input.c @@ -0,0 +1,58 @@ +#include <stdio.h> +#include <stdlib.h> +#include <X11/Xlib.h> + +int main( int argc, char* argv[]) { + printf("hallo\n"); + Display* display; + int display_cnt; + char* display_name; + int current_screen, new_screen; + + Window current_focus; + Window new_root; + XWindowAttributes current_focus_attributes; + + display_name = getenv("DISPLAY"); + if ( display_name == NULL ) { + printf("DISPLAY is not set.\n"); + return 1; + } + + display = XOpenDisplay(display_name); + if (! display ) { + printf("Could not open display.\n"); + return 1; + } + + display_cnt = ScreenCount(display); + + printf("Number of displays: %i\n", display_cnt); + if (display_cnt < 2) { + printf("Not enough screens :'(\n"); + return 1; + } + + int revert; //Unused + XGetInputFocus ( display, ¤t_focus, &revert ); + XGetWindowAttributes ( display, current_focus, ¤t_focus_attributes ); + + current_screen = XScreenNumberOfScreen( current_focus_attributes.screen ); + + printf("current: %i\n", current_screen); + + // Cycle through screens + new_screen = current_screen < (display_cnt -1) ? current_screen + 1 : 0; + + new_root = RootWindow( display, new_screen ); + + XSetInputFocus ( display, new_root, RevertToParent, CurrentTime ); + + XGetWindowAttributes ( display, new_root, ¤t_focus_attributes ); + int new_x = (current_focus_attributes.width / 2); + int new_y = (current_focus_attributes.height / 2); + XWarpPointer( display, None, new_root, 0,0,0,0, new_x, new_y); + + XCloseDisplay(display); + return 0; +} |