Task

Create a simple X11 application,   using an X11 protocol library such as Xlib or XCB,   that draws a box and   "Hello World"   in a window.

Implementations of this task should   avoid using a toolkit   as much as possible.




 
using Xlib
 
function x11demo()
    # Open connection to the server.
    dpy = XOpenDisplay(C_NULL)
    dpy == C_NULL && error("unable to open display")
    scr = DefaultScreen(dpy)
 
    # Create a window.
    win = XCreateSimpleWindow(dpy, RootWindow(dpy, scr), 10, 10, 300, 100, 1,
                              BlackPixel(dpy, scr), WhitePixel(dpy, scr))
 
    # Select the kind of events we are interested in.
    XSelectInput(dpy, win, ExposureMask | KeyPressMask)
 
    # Show or in x11 terms map window.
    XMapWindow(dpy, win)
 
    # Run event loop.
    evt = Ref(XEvent())
    while true
        XNextEvent(dpy, evt)
 
        # Draw or redraw the window.
        if EventType(evt) == Expose
            XFillRectangle(dpy, win, DefaultGC(dpy, scr), 24, 24, 16, 16)
            XDrawString(dpy, win, DefaultGC(dpy, scr), 50, 50, "Hello, World! Press any key to exit.")
        end
 
        # Exit whenever a key is pressed.
        if EventType(evt) == KeyPress
            break
        end
    end
 
    # Shutdown server connection
    XCloseDisplay(dpy)
end
 
x11demo()
 