切換到 Wayland 會修復無法從關閉的視窗貼上的問題嗎?

切換到 Wayland 會修復無法從關閉的視窗貼上的問題嗎?

我最近有了解 Xorg 是如何被指責的為了臭名昭著的錯誤用戶在關閉視窗後無法從視窗進行複製和貼上。我也知道計劃的最終切換到Wayland 作為 X 的替代品

如果這個bug是X造成的,而X將被Wayland取代,那麼到時候有可能修復嗎?我很好奇這在技術上是否可行,以及目前是否在計劃中。

答案1

好吧,我不認為這是一個錯誤,而是一個會產生一些意想不到的後果的功能:)此外,我的理解是其他“剪貼簿管理器”,即視窗macOS X,以非常相似的方式工作 - 當執行複製操作時,應用程式只是通知剪貼簿管理器 - “嘿,我有一些東西”而不傳遞實際數據(儘管在上面提到的操作系統中應用程序將資料物理儲存在剪貼簿中 - XWindow 將其留給“剪貼簿管理器”,它是一個單獨的應用程式)。

如果您考慮到複製的資料在貼上之前通常需要從一種格式轉換為另一種格式,那麼這樣做的原因就會很清楚。範例:您從發布程式複製文字框架並將其貼到同一個程式中 - 結果保留文字框架大小、邊框、轉換等。 ,但顯然文字框架屬性遺失了,因為文字處理器對此一無所知。然後將相同的內容貼到文字編輯器中 - 結果只是純文本,沒有任何格式。

現在,它是如何運作的?發布程式的專有資料格式如何轉換為文字處理器可以理解的內容或只是轉換為純文字?顯然,X 伺服器無法完成轉換,因為它對所有可能的資料格式一無所知,而且,接收由於同樣的原因,應用程式無法進行轉換。

我對這個過程的理解是,當複製某些內容時,應用程式會通知剪貼簿管理器它可以提供資料的格式:「嘿,我有一些可以轉換為我專有格式的富文本的內容或純文字".

然後其他應用程式檢查剪貼簿中是否有其可以理解的格式的內容:

if (clipboad.contains_data_in_formats("image", "rich text", "plain text")) {
    enable_Paste_menu_item();
}

然後,當選擇“貼上”操作時,最終結果是來源應用程式被要求提供所需格式的資料。

當應用程式退出時,標準說它可以將資料保存在剪貼簿管理器中:

If a client needs to exit while owning the CLIPBOARD selection, 
it should request the clipboard manager to take over the ownership 
of the clipboard, using the SAVE_TARGETS mechanism. If there is no 
clipboard manager, or if the SAVE_TARGETS conversion fails, the 
application should simply exit.

所以,我的理解是,應用程式有責任保存資料。因此,Wayland 不太可能在這方面做出任何改進:)

相關內容