質問
知りたいと思いたいのですがお願いX11るwindowsています。ばらかの理由で、自分の申請がなくても、更新することができないんだいにいきましょう旧windowsにはフォーカスを取得する。
例えば、私のアプリケーションは多くその他(例:firefox gvim nautilus,...)
その最初のfirefoxフォーカスを持つことになるのユーザーをクリックした私るアプリケーションしています。いることに自分に注目されるところfirefox。
は誰でも知ってどのように実現する。書籍の提言が非常に素敵です。
よろしくおねがいします!
解決
この XQueryTree の現在の活動、または上ウインドウです。
こちらではの機能が指定されたときに、表示で、現在のウィンドウにフォーカス:
static Window
GetCurrWindow(d)
Display *d;
{
Window foo;
Window win;
int bar;
do{
(void) XQueryPointer(d, DefaultRootWindow(d), &foo, &win,
&bar, &bar, &bar, &bar, &bar);
} while(win <= 0);
#ifdef VROOT
{
int n;
Window *wins;
XWindowAttributes xwa;
(void) fputs("=xwa=", stdout);
/* do{ */
XQueryTree(d, win, &foo, &foo, &wins, &n);
/* } while(wins <= 0); */
bar=0;
while(--n >= 0) {
XGetWindowAttributes(d, wins[n], &xwa);
if( (xwa.width * xwa.height) > bar) {
win = wins[n];
bar = xwa.width * xwa.height;
}
n--;
}
XFree(wins);
}
#endif
return(win);
}
http://tronche.com/gui/x/xlib/window-information/XQueryTree.html
このソース:
http://examples.oreilly.com/networksa/tools/xsnoop.c
幸運
他のヒント
の _NET_ACTIVE_WINDOW
値のルートウィンドウがセットによる最近のウィンドウマネージャでは:
xprop -root _NET_ACTIVE_WINDOW
この値はもちろん、を用いて得ることができるヘ図書館。
まうる XGetInputFocus
ます。
Window focused;
int revert_to;
XGetInputFocus(dpy, &focused, &revert_to);
このスニペット, focused
きるウィンドウは現在の入力フォーカス、キーボードイベントおよびマウスボタンを致します。
この場合においてもウィンドウマネージャが設定されていない _NET_ACTIVE_WINDOW
いの物件でルートウィンドウで規定されているように、EWMH.数のウィンドウマネージャなどのdwmっ9wmなセットです。
お薦めでと呼ばれるアプリケXDoTool.でに多くのクエリートでもありません
> xdotool getwindowfocus # 29360135
> xdotool getwindowfocus getwindowpid # 12988
> xdotool getwindowfocus getwindowname # tilda
> xdotool getwindowfocus behave '%@' blur getmouselocation
# or focus, mouse-enter, etc.
x:514 y:317 screen:0 window:56623121
x:271 y:26 screen:0 window:56623121
...
コマンドのように behave
受け入れるコールバックできる内蔵のような getmouselocation
または外部のように exec notify-send 'focused window'
, exec zsh myscript.zsh
, 等 しかし使いたいです。
編集でき、使いやすい使用 xdotool windowfocus [options] [window]
, して、 xdotool search --class firefox windowfocus
.私の場合は、このエラーがFirefoxに表示されて数十の家の窓がすべて同じPID;この作品は、そのIDです。うことになる。
編集2つのウィンドウID"は、小数点表現ウィンドウのポインタなどから xprop:
> xprop -root _NET_ACTIVE_WINDOW
_NET_ACTIVE_WINDOW(WINDOW): window id # 0x1c00007, 0x0
> xdotool getwindowfocus
29360135
> printf '%d\n' '0x1c00007'
29360135