53 lines
1.2 KiB
C
53 lines
1.2 KiB
C
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <X11/Xlib.h>
|
|
#include <X11/Xutil.h>
|
|
|
|
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;
|
|
}
|