Takashi Nakamoto
blued****@bpost*****
2006年 12月 10日 (日) 20:19:02 JST
Takashi Nakamoto <blued****@bpost*****> wrote: > 中本です。 > > Takuro Ashie <ashie****@homa*****> wrote: > > > 足永です。 > > > > On Fri, 8 Dec 2006 10:35:47 +0900 > > Takuro Ashie <ashie****@homa*****> wrote: > > > > > いずれにしても、SCIM側にも少し手を入れないと、根本的な解決は無理だと思い > > > ます。 > > > > よく考えたら、裏技があるかもしれません。 > > > > ルートウィンドウから現在表示されているウィンドウのリストを取り出し > > (Extended Window Manger Hintか何かを参照)、そこからSCIMのプリエディット > > ウィンドウを捜し出して座標を取得するという方法です。 > > > > 実際できるかどうかは確認してません。 > > 確かにできそうですね。 > # でも後回し。 以下のようなプログラムを実行すると、scim-panel-gtkという名前のウィンド ウの情報が出力されるのですが...6つ出てきました。 どれがどれか分からん orz 同士要(どうしよう)。 === プログラム === #include <X11/Xlib.h> #include <stdio.h> int main(int argc, char *argv[]) { Display *d = XOpenDisplay(NULL); Window *top = RootWindow(d,0); Window *children, dummy; unsigned int num; int i; char *name = "scim-panel-gtk"; char *window_name; if (!XQueryTree(d, top, &dummy, &dummy, &children, &num)) return(0); for (i=0; i<num; i++) { if (XFetchName(d,children[i],&window_name) && !strcmp(window_name, name)) { XWindowAttributes attr; XGetWindowAttributes(d, children[i], &attr); printf("x = %d, y = %d\n", attr.x, attr.y); printf("width = %d, height = %d\n", attr.width, attr.height); printf("border_width = %d\n", attr.border_width); printf("depth = %d\n", attr.depth); printf("class = %d\n", attr.class); printf("bit_gravity = %d\n", attr.bit_gravity); printf("win_gravity = %d\n", attr.win_gravity); printf("\n"); } } if (children) XFree ((char *)children); } === 出力 === x = 10, y = 10 width = 10, height = 10 border_width = 0 depth = 24 class = 1 bit_gravity = 1 win_gravity = 1 x = 784, y = 730 width = 109, height = 31 border_width = 0 depth = 24 class = 1 bit_gravity = 1 win_gravity = 1 x = 977, y = 28 width = 47, height = 25 border_width = 0 depth = 24 class = 1 bit_gravity = 1 win_gravity = 1 x = 644, y = 626 width = 294, height = 111 border_width = 0 depth = 24 class = 1 bit_gravity = 1 win_gravity = 1 x = 848, y = 582 width = 147, height = 165 border_width = 0 depth = 24 class = 1 bit_gravity = 1 win_gravity = 1 x = 390, y = 459 width = 406, height = 25 border_width = 0 depth = 24 class = 1 bit_gravity = 1 win_gravity = 1 -- 中本 崇志 (Takashi Nakamoto) E-mail: blued****@bpost***** Blog: http://bd.tank.jp/diary/