From cb6265680c0154df59dc686001b73ef863823a8a Mon Sep 17 00:00:00 2001 From: Jonas Gunz Date: Wed, 8 Jul 2020 02:10:07 +0200 Subject: initial --- src/switch-input.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/switch-input.c (limited to 'src/switch-input.c') 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 +#include +#include + +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; +} -- cgit v1.2.3