我编写了一个 X11 代理服务器程序,允许将“伪造的”输入事件发送到 X11 客户端。首先,我必须启动代理服务器,然后我可以使用
export DISPLAY=:2 myClientProgram
.然后代理服务器将传递消息我的客户程序到默认的 X11 服务器,反之亦然,并根据请求注入伪造的输入消息。
问题是每当我注入伪造的输入消息时,我的客户程序请求输入焦点。这使得我无法使用计算机进行其他活动。想象一下,在一直失去输入焦点的情况下尝试写一些东西,这是不可能的。
我已经尝试了解是否有解决方案可以防止我的客户程序从获得输入焦点。我目前的理解是没有。因此,我想寻求一种新的不同方法。
有没有一种方法可以让我在一台机器上运行两个X11服务器并能够在它们之间进行切换?如果解决方案使用类似的东西Xephyr
,那么重要的是主要的X 服务器做不是使用 GPU。我的客户程序需要我的 Nvidia 显卡,但我只有一张。如果我用来做日常工作(浏览网页、编码、编写文档等)的 X 服务器使用 llvmpipe 就完全没问题了。
具体来说,如果我要使用运行的 X 服务器打开一个终端,这一点很重要我的客户程序,那么glxinfo
必须返回我的显卡作为渲染设备。