【发布时间】:2021-07-17 09:47:59
【问题描述】:
这是我正在使用的代码,
#include <stdio.h>
#include <X11/Xlib.h>
Display *dpy;
char *window_name_return = NULL;
Window focused;
int revert_to;
void main(){
dpy = XOpenDisplay(NULL) ;
if(!dpy) printf("error\n");
XGetInputFocus(dpy, &focused, &revert_to);
XFetchName(dpy, focused, &window_name_return);
XFree(window_name_return);
printf("Focus on %s\n", window_name_return);
XCloseDisplay(dpy);
}
这仅适用于终端仿真器窗口,对于其他窗口,程序返回 null。
XFetchName 的文档说,
如果没有为此窗口设置 WM_NAME 属性,XFetchName() 将 window_name_return 设置为 NULL
这就是它不起作用的原因吗?我用的是dwm窗口管理器,在Openbox中运行代码也没有用。
如何更改代码以使其适用于所有类型的窗口?
【问题讨论】: