X11

在執行時禁用 Xorg 伺服器的擴展(對於新客戶端)?

  • November 10, 2016

我有一個舊的 Xorg 伺服器,它的“渲染”擴展似乎有問題(如果啟用,大多數字型都是不可見的,除非將滑鼠懸停在它們上面——在使用 X 客戶端和庫升級軟體包之後)

因此,通過添加以下內容可以解決 Xorg 伺服器的新實例的問題/etc/X11/xorg.conf

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

但是,如果我想繼續 X 會話,但讓新客戶不使用擴展程序怎麼辦?(當然,從邏輯上講,不能讓老客戶不使用它;但是新客戶呢?)一些選項是:

  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() 是這個地方)。

第二個問題是使用 xtrace 可能會減慢您的客戶端。

引用自:https://unix.stackexchange.com/questions/123449