我正在用 C++ (Linux,XWindow) 编写一个程序,它应该修改活动窗口的标题。更具体地说,将某些文本附加到它。
是否可以获得活动窗口的窗口句柄(即使它与该程序无关)以在 XFetchName 和 XStoreName 中使用它?或者,也许还有其他方法可以修改某个窗口的标题?
谢谢你。
更新1:
我用了
xprop -root | grep ^_NET_ACTIVE_WINDOW | cut -c41-49
它返回正确的句柄。谢谢你的建议。这是我之前用的
xdpyinfo | grep focus: | cut -c16-24
看起来它返回的数字比实际句柄大 1。
现在出现了一个新问题。似乎 XStoreName 修改了 WM_NAME。我有 Unity 桌面,它似乎改为读取 _NET_WM_NAME。我怎样才能修改这个呢?
更新2:找到答案
Atom Atom_name = XInternAtom(xdisplay,"_NET_WM_NAME",false);
Atom Atom_utf_type = XInternAtom(xdisplay,"UTF8_STRING",false);
XChangeProperty(xdisplay,window_handle,Atom_name,Atom_utf_type,8,PropModeReplace,(unsigned char*)new_name,strlen(new_name));
现在似乎工作正常