#include #include #include #include int main() { Display *display = XOpenDisplay(NULL); Window main_window = XDefaultRootWindow(display); Window window = XCreateSimpleWindow(display, main_window, 0, 0, 250, 250, 1, 0, 0x00aade87); XMapWindow(display, window); XFlush(display); Atom WM_DELETE_WINDOW = XInternAtom(display, "WM_DELETE_WINDOW", False); if(!XSetWMProtocols(display, window, &WM_DELETE_WINDOW, 1)) { printf("Couldn't register WM_DELETE_WINDOW property \n"); } int is_open = 1; while(is_open) { XEvent general_event = {}; XNextEvent(display, &general_event); printf("Type: %d", general_event.type); switch(general_event.type) { case ClientMessage: { XClientMessageEvent *event = (XClientMessageEvent *) &general_event; if((Atom)event->data.l[0] == WM_DELETE_WINDOW) { XDestroyWindow(display, window); is_open = 0; printf("Window destroyed \n"); } } break; case ResizeRequest: { static unsigned long color = 0x00aade87; if(color == 0x00aade87) color = 0x00bbde87; else color = 0x00aade87; XSetWindowBackground(display, window, color); } break; } } return 0; }