2009-06-22 19 views

cevap

10

Ayrıca benzer şeyler tam

+0

wmctrl makinemde hiçbir şey yapmadı. Aşağıda gösterilen XSetInputFocus() bunu yapabildi. – macetw

7

Gibi ... http://zaurus.daemons.gr/menaie/build/hacks/xraise/xraise.c?

DÜZENLEME: Yanıtta kod ekleme:

#include <X11/Xos.h> 
#include <X11/Xlib.h> 
#include <X11/Xutil.h> 
#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 

/* "borrowed" from xwininfo/dsimple.c */ 

Window Window_With_Name(dpy, top, name) 
    Display *dpy; 
    Window top; 
    char *name; 
{ 
    Window *children, dummy; 
    unsigned int nchildren; 
    int i; 
    Window w=0; 
    char *window_name; 

    if (XFetchName(dpy, top, &window_name) && (strstr(window_name, name) == window_name)) 
     return(top); 

    if (!XQueryTree(dpy, top, &dummy, &dummy, &children, &nchildren)) 
     return(0); 

    for (i=0; i<nchildren; i++) 
     { 
     w = Window_With_Name(dpy, children[i], name); 
     if (w) 
      break; 
    } 
    if (children) XFree ((char *)children); 
     return(w); 
} 

int main(int argc, char **argv) 
{ 
    Window window; 
    Display *dpy; 

    if (argc < 2) 
    { 
     fprintf(stderr, "Usage: %s window-name\n", argv[0]); 
     exit(1); 
    } 

    dpy = XOpenDisplay(":0"); 
    if (!dpy) 
    { 
     fprintf(stderr, "Cannot open display.\n"); 
     exit(1); 
    } 

    window = Window_With_Name(dpy, DefaultRootWindow(dpy), argv[1]); 
    if (!window) 
    { 
     fprintf(stderr, "Cannot find a window by that name.\n"); 
     exit(1); 
    } 

    XSetInputFocus(dpy, window, RevertToPointerRoot, CurrentTime); 
    if(!XRaiseWindow(dpy, window)) 
    { 
     fprintf(stderr, "XRaiseWindow error?\n"); 
     exit(1); 
    } 

    XCloseDisplay(dpy); 
} 
+0

yapar wmctrl kullanabilirsiniz, teşekkürler! XSetInputFocus() çağrısını yorumladım, şimdi ihtiyacım olan şey için mükemmel çalışıyor. –

İlgili konular