playground/main.c
2026-06-07 01:24:14 -04:00

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;
}