#include #include #include #include #include #include Display *dpy; int screen; Window root; static Atom NetActiveWindow; void focus(Window w){ XEvent ev; ev.type = ClientMessage; ev.xclient.window = w; ev.xclient.message_type = NetActiveWindow; ev.xclient.format = 32; ev.xclient.data.l[0] = 0; ev.xclient.data.l[1] = CurrentTime; XSendEvent(dpy, root, False, (SubstructureNotifyMask|SubstructureRedirectMask), &ev); } int main(int argc, char *argv[]) { dpy = XOpenDisplay(0); Window win; if(!dpy) { fprintf(stderr, "cannot open display\n"); return 1; } screen = DefaultScreen(dpy); root = RootWindow(dpy, screen); NetActiveWindow = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False); sscanf(argv[1], "0x%x", &win); focus(win); XCloseDisplay(dpy); return 0; }