如何在 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 界面。
我不太熟悉 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 界面。