快轉到主要內容

比較X11與Wayland。2026年了,你是否該切換到Wayland,拋棄X視窗系統

· 民國115年丙午年
·
切換繁體/簡體
分類 人文藝術 自由軟體議題
標籤 Wayland X Window Linux
目錄

這篇文章Ivon想討論Linux系統「X視窗系統」與「Wayland」的發展狀況,討論Wayland的優缺點,讓你決定要不要切換到Wayland。最後面附上能夠最快體驗到最新Wayland技術的Linux發行版。

事情正在起變化。Linux社群常常討論說要不要放棄X11,切換到Wayland工作階段,那麼,什麼是X11?什麼是Wayland?

X視窗系統是決定你的Linux電腦畫面要如何顯示的一組軟體,但是它太老了問題很多,現在有採用Wayland協定的軟體,要用現代的程式碼取代這個老舊的軟體。不過由於Wayland問題重重,儘管越來越多Linux發行版採用,但發展十多年了到現在X視窗系統仍然無法被完全取代。

下面我們來探討X11與Wayland的現狀。

1. 改變的契機:X11與Wayland的比較
#

X視窗系統和Wayland都是負責顯示Linux畫面的一組軟體。關於二者底層原理比較的部份,才疏學淺不獻醜了,網路上已經有很多資料了,文末的「延伸閱讀」處有許多有趣的文章可以詳讀。此處簡述我的個人理解。

X視窗系統(X Window System),簡稱X,誕生時間早於Linux。X視窗系統在1987年出現,用於顯示圖形環境之用。當時還是Unix的時代呢!到現在已經有30年以上歷史了。

為什麼Linux需要「裝」X視窗系統才有畫面?因為Linux核心真的沒有顯示畫面的軟體。

Linux使用者看到的桌面環境(例如 GNOME、KDE Plasma、XFCE)並不是直接控制螢幕,而是建立在X視窗系統提供的圖形顯示機制之上。X視窗系統負責最底層的視窗顯示與輸入事件,而桌面環境則負責使用者介面與操作體驗。

在這裡,X視窗系統就成為了各家桌面環境所遵守的底層共同標準。

當初設計者只有制定X的通訊協定(protocol)標準,沒有詳細規範X的實作方式(implementation),所以有各家的X視窗軟體出現。2000年左右,X.org組織開發的X.org軟體取代XFree86,逐漸成為公認的標準,API什麼的都他們訂好的。X.org遂被各大桌面環境採用。由於X.Org採用的X通訊協定為X11版,所以他們家研發的X伺服器也稱作X11。

X視窗系統之所以會被人稱作伺服器(server),就是因為它可以接受多個X客戶端(client)同時連線,即「主從式架構」,呼應以前大型機時代的需要,並且透過網路透明性(Network Transparency)進行通訊。原理參考下圖。

網路透明性為何?透過X伺服器,你可以把另一台電腦的視窗,透過網路傳輸,顯示在你的電腦上。這樣就可以很多人同時連線到同一台主機工作啦。

並且X視窗系統在個人電腦上也是遵循主從式架構進行通訊的,每個軟體的視窗都是一個X客戶端,與你電腦上的X伺服器溝通,進而顯示畫面。

關於桌面的視窗要長怎樣,X視窗系統的協定沒有詳細規定,這就給了桌面環境開發者很大的操作空間。開發者可透過合成器(compositor)來決定視窗的外貌,包括打叉按鈕位置、標題列、動畫效果等等。所以才有Compiz這類酷酷的3D動畫桌面出現。

主從式架構是X視窗系統設計的優點也是缺點,優點是遠端工作很方便,且彈性很大。

缺點就是這樣安全性不高。誰說X伺服器的「伺服器」一定是在遠端執行的?X伺服器在你的電腦上本地執行的時候,也是維持著主從式架構的關係,程式之間的傳輸沒有加密,可以輕易被其他程式攔截,例如鍵盤側錄程式。而且客戶端跟伺服端頻繁的傳輸,會造成圖形效率不佳,導致畫面撕裂。

儘管撕裂問題大部分桌面環境和GPU驅動程式都想辦法迴避掉了,但Nvidia仍然擺爛,因為他們驅動不開源,常常出問題。


X視窗系統的問題應該有更好的解決方案才對…於是就有了Wayland,於2008年出現,由曾經參與過X11專案的開發者發起。

Wayland要徹底改變X視窗系統的主從式架構,讓程式可以更有效率的利用圖形硬體。Wayland本身是一個通訊協定規範,實際負責繪製視窗的軟體叫做Wayland compositor (合成器)

這即是說,Wayland開發者只規定通訊協定的規範,對合成器要怎麼實作並無詳細規範,他們只推出了一個叫做"Weston"的參考實作而已。

這邊是Wayland的原理圖,可以看到X伺服器不見了,一切都由合成器負責,整個通訊過程簡化了許多,網路透明性也被砍掉了。

那「X」Wayland又是什麼呢?為了防止一堆X伺服器下的舊程式不能用,Wayland開發者就提出了XWayland的過度方案,在Wayland下跑一個X伺服器,讓那些舊程式能夠在Wayland下運作。儘管如此,XWayland不保證能100%相容舊有的X程式,一些古怪的API可能無法使用,開發者最好還是把程式重寫,修改成原生Wayland程式較好。

Wayland出來了,那X11怎麼辦呢?要知道X11已經基本停止開發了,Linux世界很多新功能都改往Wayland那邊發展了,比如支援HDR內容的程式碼。

根據Phoronix的報導,近年來X11的開發速度已達到歷史新低,基本上沒在動了。

你知道為什麼嗎?聽說全世界只有三個人能看懂X視窗系統的全部程式碼,你知道我知道,但獨眼龍不知道。連獨眼龍都不知道的東西,開發者也無從下手,修改陳年X伺服器的屎山程式碼。很多X伺服器的設計在現代已經不符時代需求,是時候得拋棄X了,所以開發者乾脆做個新的東西出來。

但由於各式各樣的問題,一直到撰文當下,Wayland還是沒辦法完全取代X。因為Wayland與X.Org的架構並不相容,等於是整個打掉重練,程式要重寫。很多在X.Org能輕鬆做到的操作,Wayland根本沒有相關API能用,得要Wayland協定的核心開發者慢慢改進。

雖說Wayland問題重重,但是世界各地的開發者都在很認真的修復bug。各大Linux發行版都逐漸把Wayland作為預設選項了。

商業公司RedHat、Caonocial、SUSE大力推動Wayland作為預設選項,RedHat已經在RHEL 10完全移除X.Org支援了,強制使用者只能使用Wayland桌面。要跑X11程式就用XWayland執行。

Ubuntu 26.04預設採用Wayland限定的桌面環境。

許多大公司這樣做,應該會促使開發者跟上腳步,儘快往Wayland遷移。

2. 為什麼要用Wayland?
#

Wayland比較明顯的優點如下:

  • 無論GNOME還是KDE,Wayland的動畫看起來就是比X11順暢許多。
  • 圖形效能更好。徹底解決畫面撕裂問題,讓Nvidia專有驅動的用戶受惠。
  • 支援HiDPI螢幕非整數縮放、不同螢幕使用不同解析度、HDR影像、VRR動態更新率、色彩管理……等現代化的圖形功能。
  • 瀏覽器支援雙指放大。
  • 對觸控手勢支援更好,GNOME和KDE Plasma能夠用觸控板手勢切換桌面,Firefox和Google Chrome能夠兩指放大和左右滑回上一頁,這些都只有Wayland才可以使用。
  • 善用PipeWire和XDG Desktop Portal技術,統一螢幕截圖、螢幕錄影、音訊處理、分享螢幕、遠端桌面、選取檔案的路徑。讓OBS Studio能錄製螢幕。使Rustdesk能進行遠端桌面分享。
  • 提供text-input輸入法協定,讓Fcitx5這類輸入法能夠在各個程式間輸入中文。
  • 增強系統安全性,杜絕鍵盤側錄程式。

現階段,即使你不喜歡Wayland,也可以在登入界面(Display Manager)隨時切換回X11工作階段,二者可以共存。

3. 為什麼不要用Wayland?
#

講到Wayland缺點就講不完了。本文最初寫作於2024年,2026年改版之後我發現以前提過的蠻多問題都慢慢地被解決掉了!

在過去,X11有一個共同的X.Org Server可以讓各家桌面依照共同的標準實現功能。換到Wayland時代,Wayland協定本身只定義很小一部分的東西,剩下的要靠合成器實作,這樣會導致使用者被特定桌面環境綁住的問題,沒有一個共通的解決方案,對開發者來說很是困擾。例如,獲取視窗位置的功能不由Wayland定義,而是要看GNOME和KDE Plasma使用的合成器怎麼實作。這會導致行為不一致。這個時候,開發者之間就只能盡量靠制定XDG Desktop Portal的標準來想辦法實現相容性了。

例如,全域快捷鍵觸發,在Wayland時代需要桌面環境主動支援,不能像X11一樣靠xdotool實現。另外控制螢幕排版的設定,也要靠桌面環境控制,不能依賴xrandr一個工具通吃。

說到瀏覽器,最新版Firefox和Chromium預設使用Wayland工作階段,幾乎沒什麼問題了。可是使用Chromium核心的一些程式,如Electron寫成的,如果開發者不更新核心。預設還是跑在舊有的XWayland模式的!導致效能不彰。

此外,Wayland下一些死不更新的商業遠端桌面軟體會出問題,例如Chrome Remote Desktop。得用TeamViewer和AnyDesk才能支援Wayland。

負責轉譯Windows程式的Wine(就是Steam Deck Proton的上游專案)在最新10.0版本加入了原生Wayland驅動程式。但Steam遊戲很少有支援Wayland的,許多遊戲依然是用XWayland跑的,導致Wayland環境玩遊戲會出圖形bug問題。這需要圖形驅動程式支援「Explicit Sync」才能避免畫面閃爍。最新版Nvidia、Intel、AMD驅動應該都已經支援。

Wayland雖然改善了HiDPI螢幕的問題,可以任意指定縮放係數,但是跑在XWayland下的程式不會跟著Wayland桌面縮放。若強制縮放XWayland程式就會模糊,GNOME和KDE Plasma都沒有很好的法子來處理這個問題。只能期望程式開發者儘快提供純Wayland的版本。

還有一些沒列到的小問題,你可能要在執行特定的程式才會遇到不相容Wayland,得切換回X11。

4. 如何切換到Wayland?
#

如上所述,Wayland不是單一的軟體,是由桌面環境個別實作的。

最大的考量因素,永遠是你的Linux發行版更新速度,還有桌面環境對Wayland的支援度。

如何知道你在用X11還是Wayland?開啟終端機,輸入以下指令便可知一二。

echo $XDG_SESSION_TYPE

如果要在X11與Wayland之間切換,通常系統登入畫面(Display Manager)都會有選項讓你選。

撰文當下各桌面環境的Wayland支援狀況:

  • GNOME 50:Linux界的桌面老大哥,自GNOME 42之後支援良好,幾乎沒有bug了。但是沒bug不代表它能夠完全取代X11的功能。GNOME 50之後完全移除了X.Org支援,只有Wayland可用。
  • KDE Plasma 6.5:Wayland大致穩定,應該不會動不動就崩潰。KDE開發者準備在KDE Plasma 6.8完全移除X11支援。
  • XFCE 4.21:已經支援Wayland,允許使用者自由挑選合成器。將推出自家的合成器XFWL。
  • Cinnamon 6.6.5:已經支援Wayland,但不會馬上砍掉X11。
  • LXQT 2.3.0:已經支援Wayland,允許使用者自由挑選合成器。
  • i3wm、dwm等平鋪視窗管理器:沒辦法移植,可用Sway、Hyprland取代。會用這類平鋪視窗管理器的高手應該不用我講你自己就會判斷合不合適了。

如果你想切換到Wayland環境,就優先試試搭載「GNOME」桌面環境的Linux發行版吧。GNOME是Linux桌面環境的老大哥,Wayland支援度是最佳的。

至於Linux發行版部分,如果想要趕快收到Wayland更新和錯誤修正,那麼滾動發行版(Arch Linux、Fedora、openSUSE Tumbleweed、Debian Sid、Gentoo)用戶比較吃香。可是你要承擔系統更新後不穩定的代價。

穩定發行版(Debian Stable、Ubuntu LTS、openSUSE Leap、Rocky Linux)用戶要等比較久才會收到Wayland更新修正。就我個人觀察來說,Debian 13與Ubuntu 26.04,他們所收錄的桌面環境,對Wayland的支援度其實已經很好了。

延伸閱讀:追蹤Wayland開發進度
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。