如何更改 _NET_WM_NAME(X 库)

Ily*_*rov 3 x11 xorg

我尝试 在我的 Mint Maya(基于 Ubuntu 12.04)上使用http://xkbind.sourceforge.net/ (对于在窗口标题中显示键盘状态很有用)

但 xkbind 仅更改 WM_NAME 属性

这是xkbind.c代码片段

if(XGetWindowAttributes(dpy, window, &wa)) {
    XSelectInput(dpy, window, wa.your_event_mask&~PropertyChangeMask);
    XSync(dpy, False);
    XSetWMName(dpy, window, p_tp);
    XSelectInput(dpy, window, wa.your_event_mask);
}
Run Code Online (Sandbox Code Playgroud)

应该使用什么函数来更改 _NET_WM_NAME 属性?

例子

xkbind
gvim
Run Code Online (Sandbox Code Playgroud)

xprop 输出

WM_NAME(STRING) = "Lat::[No Name] - GVIM"
_NET_WM_NAME(UTF8_STRING) = "[No Name] - GVIM"
Run Code Online (Sandbox Code Playgroud)

Art*_*emB 5

直接调用XChangeProperty()应该可以解决问题:

    XChangeProperty( display, win,
        XInternAtom(display, "_NET_WM_NAME", False),
        XInternAtom(display, "UTF8_STRING", False),
        8, PropModeReplace, (unsigned char *) utf8_buffer,
        count);
Run Code Online (Sandbox Code Playgroud)