mirror of
https://github.com/Raymo111/i3lock-color.git
synced 2024-11-11 13:50:52 -05:00
5b4d45a8af
When grabbing the pointer/keyboard fails, a new code path is activated, which: 1. Uses the standards-compliant _NET_ACTIVE_WINDOW root window property to determine the window to restore focus to. 2. Sets the input focus to the i3lock window, thereby possibly force-closing open context menus (works with e.g. Google Chrome, does not work with e.g. thunar, gedit). 3. Upon exiting, restores focus to the window from step ① by sending a _NET_ACTIVE_WINDOW ClientMessage to the root window. Note that this step requires https://github.com/i3/i3/pull/3027 in i3 to not mess up focus. fixes https://github.com/i3/i3lock/issues/35
17 lines
801 B
C
17 lines
801 B
C
#ifndef _XCB_H
|
|
#define _XCB_H
|
|
|
|
#include <xcb/xcb.h>
|
|
|
|
extern xcb_connection_t *conn;
|
|
extern xcb_screen_t *screen;
|
|
|
|
xcb_visualtype_t *get_root_visual_type(xcb_screen_t *s);
|
|
xcb_pixmap_t create_bg_pixmap(xcb_connection_t *conn, xcb_screen_t *scr, u_int32_t *resolution, char *color);
|
|
xcb_window_t open_fullscreen_window(xcb_connection_t *conn, xcb_screen_t *scr, char *color, xcb_pixmap_t pixmap);
|
|
bool grab_pointer_and_keyboard(xcb_connection_t *conn, xcb_screen_t *screen, xcb_cursor_t cursor, int tries);
|
|
xcb_cursor_t create_cursor(xcb_connection_t *conn, xcb_screen_t *screen, xcb_window_t win, int choice);
|
|
xcb_window_t find_focused_window(xcb_connection_t *conn, const xcb_window_t root);
|
|
void set_focused_window(xcb_connection_t *conn, const xcb_window_t root, const xcb_window_t window);
|
|
|
|
#endif
|