X11

我可以將 GUI 程序附加到“代理 X 伺服器”嗎?

  • December 18, 2014

我一直處於桌面崩潰並且沒有響應的情況。(就我而言,它是 Cinnamon DE,我還沒有從命令行嘗試cinnamon --replace,順便說一句)

我正在使用下載管理器類型的 GUI 應用程序來下載一個大文件,很明顯,即使 GUI 很糟糕,該過程仍然執行得非常愉快。如果我殺死了 XI 會殺死所有子程序並被迫重新開始我的下載等。

是否可以創建一個代理 X 會話,分離現有的 GUI 程序並將它們連接到“虛擬”會話,重新啟動真正的 X 會話,最後將 GUI 程序重新連接到新的、健康的 X 會話?如果是這樣,怎麼做?

理論上,失去與 X 伺服器的連接的程序可以嘗試重新連接,直到有新的 X 伺服器可用。事實上,我已經編寫了執行此操作的程序。它需要額外的程式碼,因為您必須重新執行 GUI 初始化常式以在新的 X 伺服器上重新創建資源(視窗、點陣圖、字型等),並刷新所有程序的內部資料結構以使用這些新的資源。

可悲的是,我見過的幾乎沒有 X 程序願意這樣做。他們只是崩潰了,因為所有的重新連接/重新設置都太麻煩了。更可悲的是,他們無法被騙切換 X 伺服器,因為該程序中不存在重新初始化其圖形資源的程式碼。所以對於大多數程序來說,如果他們失去了 X 連接,他們就注定要失敗。

正如 XTaran 所提到的,有一個名為“xpra”的簡潔的中繼/墊片/代理程序,它對客戶端來說就像一個 X 伺服器,然後可以將他們的資源重新初始化到任何其他 X 伺服器,允許您移動X 伺服器之間的所有程序都如您所願。當我 10 年前使用它時,它有很多錯誤。我確信他們從那時起就取得了進展,但你需要確定它是否足夠穩定,可以滿足日常桌面使用。

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