#ifndef X_KUTU_H #define X_KUTU_H // Standard headers #include #include #include #include #include // XCB headers #include #include // Macro to clean modifier masks #define CLEANMASK(m) ((m & ~0x80)) // Definitions for modifier keys #define SUPER XCB_MOD_MASK_4 #define ALT XCB_MOD_MASK_1 #define CTRL XCB_MOD_MASK_CONTROL #define SHIFT XCB_MOD_MASK_SHIFT // Change this to change the modifier key you want to use #define MOD SUPER // Forward declarations of global variables extern xcb_connection_t *conn; extern xcb_screen_t *scr; extern xcb_window_t focuswin; // Geometry structure for rectangles and positions typedef struct Geometry { int16_t x; int16_t y; uint16_t width; uint16_t height; } Geometry; typedef struct PointerInfo { int16_t x; int16_t y; uint32_t window; } PointerInfo; // Event structure to represent various X events typedef struct Event { int32_t type; uint32_t window; int8_t override_redirect; uint32_t btn; int32_t x; int32_t y; uint32_t height; uint32_t width; uint32_t state; int8_t is_root; } Event; // Function prototypes extern void flush(void); extern int deploy(void); extern void cleanup(void); extern void add_keybind(int key, int mod); extern void add_mousebind(int button, int mod); extern xcb_window_t get_focus(void); extern xcb_window_t get_root(void); extern void focus(xcb_window_t win); extern void subscribe(xcb_window_t win); extern void kill(xcb_window_t window); extern void destroy(xcb_window_t win); extern void show(xcb_window_t window); extern void hide(xcb_window_t window); extern void send_to_top(xcb_window_t win); extern void get_geometry(xcb_window_t win, Geometry *out); extern void get_screen(Geometry *out); extern void get_pointer(PointerInfo *out); extern void warp_pointer(xcb_window_t win, int x, int y); extern void move_window(xcb_window_t win, int x, int y); extern void resize_window(xcb_window_t win, int width, int height); extern xcb_size_hints_t get_wm_n_hints(xcb_window_t win); extern xcb_icccm_wm_hints_t get_wm_hints(xcb_window_t win); extern char *get_wm_name(xcb_window_t win); extern uint8_t get_wm_transient_for(xcb_window_t win); extern void set_wm_state(xcb_window_t win, int state); extern xcb_window_t draw_rectangle(int x, int y, int width, int height, uint32_t color); extern void grab_pointer(xcb_window_t win); extern void ungrab_pointer(void); extern int next_event(Event *out); #endif // X_KUTU_H