#ifndef WINDOW_MANAGER_H
#define WINDOW_MANAGER_H

#include <X11/Xlib.h>
#define XK_MISCELLANY
#define XK_LATIN1
#include <X11/keysymdef.h>

struct linked_window {
    struct linked_window *prev;
    Window client, frame;
    struct linked_window *next;
} typedef linked_window;

#define GRAB_SHORTCUTS(display, window) {\
    XGrabKey(display, XKeysymToKeycode(display, XK_Pause), ControlMask | ShiftMask | Mod1Mask, window, 1, GrabModeSync, GrabModeSync);\
    XGrabKey(display, XKeysymToKeycode(display, XK_Return), Mod1Mask, window, 1, GrabModeAsync, GrabModeAsync);\
    XGrabKey(display, XKeysymToKeycode(display, XK_F4), Mod1Mask, window, 1, GrabModeAsync, GrabModeAsync);\
}
    //XGrabKey(display, XKeysymToKeycode(display, XK_Tab), Mod1Mask, window, 1, GrabModeAsync, GrabModeAsync);\
    //XGrabKey(display, XKeysymToKeycode(display, XK_A), 0, window, 1, GrabModeAsync, GrabModeAsync);\
}

extern Display* X_display;
extern Window root_window;
extern linked_window * windows;
extern XFontSet wm_default_fontset;
extern Font wm_default_font;
extern char ** missing_charsets;
extern int missing_charset_count;
extern char * missing_charset_string;



linked_window * find_client(Window w);
linked_window * find_client_by_frame(Window w);
void add_client(Window w, Window frame);
void remove_client(Window w);
linked_window * get_window_definite(Window w);

void init();

void deinit();

#endif