diff options
author | EliteTK <tomasz.kramkowski@gmail.com> | 2014-04-24 09:06:24 +0100 |
---|---|---|
committer | EliteTK <tomasz.kramkowski@gmail.com> | 2014-04-24 09:06:24 +0100 |
commit | a98d134e89a42909721dcefd426118af38628048 (patch) | |
tree | cdf43f11ed4aafbc46fe813584851612ae7c3c89 /xlibtest.c | |
parent | c1a966057407d815d054ddbd2432badda91d4379 (diff) | |
download | c-stuff-a98d134e89a42909721dcefd426118af38628048.tar.gz c-stuff-a98d134e89a42909721dcefd426118af38628048.tar.xz c-stuff-a98d134e89a42909721dcefd426118af38628048.zip |
Latest random crap.
Diffstat (limited to 'xlibtest.c')
-rw-r--r-- | xlibtest.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/xlibtest.c b/xlibtest.c new file mode 100644 index 0000000..670dcf6 --- /dev/null +++ b/xlibtest.c @@ -0,0 +1,59 @@ +/* + * Simple Xlib application drawing a box in a window. + * gcc input.c -o output -lX11 + */ + +#include <X11/Xlib.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +int main(void) +{ + Display *display; + Window window; + XEvent event; + char *msg = "Hello, World!"; + int s; + + /* open connection with the server */ + display = XOpenDisplay(NULL); + if (display == NULL) + { + fprintf(stderr, "Cannot open display\n"); + exit(1); + } + + s = DefaultScreen(display); + + /* create window */ + window = XCreateSimpleWindow(display, RootWindow(display, s), 10, 10, 200, 200, 1, + BlackPixel(display, s), WhitePixel(display, s)); + + /* select kind of events we are interested in */ + XSelectInput(display, window, ExposureMask | KeyPressMask); + + /* map (show) the window */ + XMapWindow(display, window); + + /* event loop */ + for (;;) + { + XNextEvent(display, &event); + + /* draw or redraw the window */ + if (event.type == Expose) + { + XFillRectangle(display, window, DefaultGC(display, s), 20, 20, 10, 10); + XDrawString(display, window, DefaultGC(display, s), 50, 50, msg, strlen(msg)); + } + /* exit on key press */ + if (event.type == KeyPress) + break; + } + + /* close connection to server */ + XCloseDisplay(display); + + return 0; +} |