如何在 xorg 中将焦点放在单个 window 上?

How to give focus to a single window in xorg?

我不太熟悉 xorg 和 xlib libraray.I 不是 C programmer.I 安装了 st-simple terminal.Heard 事实上我们只能 运行在线文章中没有 window 管理器的 xorg 服务器中的终端或浏览器,并在 arch wiki 上进行了确认。 .So to try it I 运行.

startx /usr/local/bin/st

st 确实开始了,但它没有 focus.Though 我可以写 it.I 只是想要一个解决方案,它告诉我如何给予 st 焦点,因为未聚焦的光标让我失望。

提前致谢

那个 st 可能不相信 PointerRoot 和 focus-follows-mouse。尝试使用 XSetInputFocus(3).

明确地给予它焦点

如果您安装了 C 编译器并安装了 xorg -dev 或 -devel 软件包,请尝试 运行 这个 inside 您的 st 终端:

echo '
#include <X11/Xlib.h>
#include <stdlib.h>
int main(){
    Display *dpy; char *ws; Window w;
    if((dpy = XOpenDisplay(0)) && (ws = getenv("WINDOWID")) && (w = strtoul(ws, 0, 0))){
        XSetInputFocus(dpy, w, RevertToPointerRoot, 0); XSync(dpy, False);
    }
}' | cc -Wall -lX11 -x c - -o getfocus && ./getfocus

可能有像 xdotool 这样的实用程序可以做到这一点,但据我所知它们没有默认安装。

更好的办法是修复“suckless”终端仿真器,这样它就不会那么糟糕了,而且不会假设有一个 window 管理器和一个 point-to-type 界面。