ログイン
編集不可のページディスカッション情報添付ファイル
clear/wm_devel/2012-08-18

MMA

ウィンドウタイトルの取得

タイトルバー的なものをつけるときに表示する文字列(ウィンドウ名)を取得する方法。WindowsだとGetWindowText()で一発だけど、Xの場合そうはいかない。

void get_window_title(Window w, char *title, int size)
{
    XTextProperty prop;

    /* try to get _NET_WM_NAME */
    XGetTextProperty(dpy, w, &prop, net_wm_name);
    if (prop.nitems == 0) {
        /* fall back to WM_NAME */
        XGetWMName(dpy, w, &prop);
    }

    title[0] = '\0';
    if (prop.nitems > 0 && prop.value) {
        if (prop.encoding == XA_STRING) {
            strncpy(title, (char *)prop.value, size - 1);
        } else {
            char **l = NULL;
            int count;
            XmbTextPropertyToTextList(dpy, &prop, &l, &count);
            if (count > 0 && *l)
                strncpy(title, *l, size - 1);
            XFreeStringList(l);
        }
        title[size - 1] = '\0';
    }
}

clear/wm_devel/2012-08-18 (最終更新日時 2012-08-18 13:46:38 更新者 clear)