在运行时禁用 Xorg 服务器的扩展(对于新客户端)?

在运行时禁用 Xorg 服务器的扩展(对于新客户端)?

我有一个旧的 Xorg 服务器“渲染”扩展似乎有问题(如果启用,大多数字体都是不可见的,除非将鼠标悬停在它们上——在使用 X 客户端和库升级包之后)

因此,通过添加以下内容,可以解决 Xorg 服务器的新实例的问题/etc/X11/xorg.conf

Section "Extensions"
    Option      "RENDER" "Disable"
EndSection

但是,如果我想继续 X 会话,但让新客户端不使用该扩展,该怎么办? (当然,从逻辑上来说,不能让老客户不使用;但新的呢?)一些选择是:

  1. 我可以在服务器运行时即时关闭服务器的某个扩展吗?
  2. 我可以告诉客户不要使用它(例如,使用特定工具包编写的客户)吗?
  3. 是否有一个“X代理”可以用于我的目标:代理不能简单地宣传它具有“渲染”扩展,或者翻译涉及它的请求,并将所有内容转发到“物理”X服务器,并且然后我的新客户端将连接到代理的显示。

答案1

对于偶尔使用,您可以插入跟踪在您的客户端和服务器之间,并使用 xtrace 的 -e 开关使客户端看不到任何扩展:

  -e | --denyextensions
         Modify all server replies to say there are no extensions
         available.  (As xtrace does supports only a small number of
         extensions anyway and calls all extended requests "unknown"
         and  all replies to such requests "unexpected").

您将看不到任何扩展,因此“禁用”/隐藏单个扩展没有任何帮助。对于这种情况,您可以尝试修改源代码(我猜 parse.c:replyQueryExtension() 就是这个地方)。

第二个问题是使用 xtrace 可能会减慢您的客户端速度。

相关内容