web-dev-qa-db-ja.com

実行時にXorgサーバーの拡張機能を無効にしますか(新しいクライアントの場合)?

古いXorgサーバーがあります "Render"拡張機能にバグがあるようです(有効にすると、Xクライアントとライブラリでパッケージをアップグレードした後、フォントにカーソルを合わせない限り、ほとんどのフォントが表示されません)

したがって、Xorgサーバーの新しいインスタンスの問題は/etc/X11/xorg.confに追加することで解決されます。

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

しかし、Xセッションを続行したいが、新しいクライアントが拡張機能を使用しないようにした場合はどうなりますか? (もちろん、論理的には、 古いクライアントはそれを使用しないようにすることはできません ;しかし、新しいクライアントはどうですか?)いくつかのオプションは次のとおりです。

  1. サーバーの実行中に、サーバーの拡張機能の1つをオンザフライでオフにすることはできますか?
  2. クライアントにそれを使用しないように指示できますか(たとえば、特定のツールキットで作成されたもの)?
  3. 私の目標に使用できる「Xプロキシ」はありますか。プロキシは、「レンダリング」拡張機能があることをアドバタイズしたり、それに関連するリクエストを変換したり、すべてを「物理」Xサーバーに転送したりすることができませんでした。その後、新しいクライアントはプロキシのDISPLAYに接続します。

業務用には、クライアントとサーバーの間に xtrace を接続し、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()がその場所だと思います)。

2つ目の問題は、xtraceを使用するとクライアントの速度が低下する可能性があることです。

1
uli42