transient.c (847B) - raw
1 /* cc transient.c -o transient -lX11 */ 2 3 #include <stdlib.h> 4 #include <unistd.h> 5 #include <X11/Xlib.h> 6 #include <X11/Xutil.h> 7 8 int main(void) { 9 Display *d; 10 Window r, f, t = None; 11 XSizeHints h; 12 XEvent e; 13 14 d = XOpenDisplay(NULL); 15 if (!d) 16 exit(1); 17 r = DefaultRootWindow(d); 18 19 f = XCreateSimpleWindow(d, r, 100, 100, 400, 400, 0, 0, 0); 20 h.min_width = h.max_width = h.min_height = h.max_height = 400; 21 h.flags = PMinSize | PMaxSize; 22 XSetWMNormalHints(d, f, &h); 23 XStoreName(d, f, "floating"); 24 XMapWindow(d, f); 25 26 XSelectInput(d, f, ExposureMask); 27 while (1) { 28 XNextEvent(d, &e); 29 30 if (t == None) { 31 sleep(5); 32 t = XCreateSimpleWindow(d, r, 50, 50, 100, 100, 0, 0, 0); 33 XSetTransientForHint(d, t, f); 34 XStoreName(d, t, "transient"); 35 XMapWindow(d, t); 36 XSelectInput(d, t, ExposureMask); 37 } 38 } 39 40 XCloseDisplay(d); 41 exit(0); 42 }