/* MAJE_LDLIB=-lX11 */ #define _POSIX_C_SOURCE 200809L #include #include #include #include #include #include int main(int argc, char *argv[]) { int c = 0; while ((c = getopt(argc, argv, "")) != -1) { switch (c) { default: return 1; } } Display *dpy = XOpenDisplay(""); if (dpy == NULL) { fprintf(stderr, "xbar: can't open display\n"); return 1; } int screen = DefaultScreen(dpy); Colormap cmap = XDefaultColormap(dpy, screen); XColor bg; if (XParseColor(dpy, cmap, "black", &bg) == 0) { fprintf(stderr, "couldn't find black\n"); bg.pixel = BlackPixel(dpy, 0); } else if (XAllocColor(dpy, cmap, &bg) == 0) { fprintf(stderr, "couldn't allocate black\n"); bg.pixel = BlackPixel(dpy, 0); } XColor fg; if (XParseColor(dpy, cmap, "white", &fg) == 0) { fprintf(stderr, "couldn't find white\n"); fg.pixel = WhitePixel(dpy, 0); } else if (XAllocColor(dpy, cmap, &fg) == 0) { fprintf(stderr, "couldn't allocate white\n"); fg.pixel = WhitePixel(dpy, 0); } int width = DisplayWidth(dpy, screen); int height = 20; Window win = XCreateSimpleWindow(dpy, XDefaultRootWindow(dpy), 0, 0, width, height, 0, 0, bg.pixel); XStoreName(dpy, win, "xbar"); XSelectInput(dpy, win, ExposureMask | KeyPressMask); XMapWindow(dpy, win); XMoveWindow(dpy, win, 0, 0); XSetForeground(dpy, DefaultGC(dpy, screen), fg.pixel); for (;;) { XEvent e; XNextEvent(dpy, &e); switch (e.type) { case Expose: XDrawString(dpy, win, DefaultGC(dpy, screen), 10, 10, "hello", strlen("hello")); break; case KeyPress: printf("keypress\n"); break; default: break; } } return 0; }