快轉到主要內容

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

人文藝術 自由軟體議題 Wayland X Window Linux
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

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

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

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

撰文當下測試的環境資訊:

  • 系統:Arch Linux
  • Linux核心版本:6.7.9
  • 桌面環境:KDE Plasma 6.0.2 (Wayland)
  • 顯示卡:Intel UHD Graphics

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

但由於各式各樣的問題,一直到撰文當下的2024年,Wayland還是沒辦法取代X。

2. 為什麼要用Wayland?
#

Wayland比較明顯的優點如下:

  • 圖形效能更好。徹底解決畫面撕裂問題,讓Nvidia用戶受惠。
  • 支援非整數螢幕縮放、HDR、HiDPI、VRR動態更新率等現代化的圖形功能
  • 瀏覽器支援雙指放大
  • 對觸控手勢支援更好,GNOME和KDE的手勢都只有Wayland下才可以使用
  • 可善用PipeWire和XDG Desktop Portal技術,統一螢幕截圖、螢幕錄影、音訊處理、分享螢幕、遠端桌面、選取檔案的路徑。
  • 增強系統安全性,杜絕鍵盤側錄程式

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

3. 為什麼不要用Wayland?
#

講到Wayland缺點就講不完了。

聽說在Linux社群放這張會被打。

最粗暴的理由:Wayland缺乏殺手級應用程式,幾乎沒有程式「非要Wayland」不可。

probonopd ( AppImage可攜式軟體格式的倡導者)寫的這篇文章總結得很好,把Wayland尚未解決的問題一條條列出來。每天都有人在下面吵架XD

Think twice about Wayland. It breaks everything!

我記得最早這篇文章的標題叫做"Boycott Wayland. It breaks everything." 一開始叫人家抵制Wayland,後來改成了採用Wayland前務必三思。

他裡面講的東西如果你是Linux日常使用者鐵定會遇到。

我講比較實在的問題,Chromium系列的瀏覽器(Chrome、Brave、Edge、Vivaldi、Opera),目前v121版對Wayland支援度還是不好,Chromium在Wayland下預設還是跑在XWayland模式的!導致效能不彰。

如果在chrome://flags強制開啟純Wayland模式,你猜怎麼著?Fcitx5就無法輸入中文了!根據開發者說法,需要再加上--gtk-version=4參數啟動才會正常。嗯,問題是我加了還是沒用啊,原來還有個--enable-wayland-ime參數呀!就算Chromium真給你設定好純Wayland模式了,可它竟然不支援VA-API硬體加速?這功能到今年1月才修好。

善意提醒:很多用Electron寫的程式也會受到Chromium的影響喔,Chromium的bug同樣也會反映在Electron程式上,比如Visual Studio Code。如果開發者死不更新Electron核心版本那麼這個問題只會更嚴重。

拿另外一個程式來說,有時候OBS Studio在Wayland下的視窗分享擷取有問題,KDE彈出視窗選擇的時候還是一片黑,可能要用什麼workround才能正常作業。

此外,Wayland下許多遠端桌面軟體都會出問題。雖然有WayVNC和WayPipe出現但是效能不太行。只有RustDesk和Sunshine有加入Wayland支援。

負責轉譯Windows程式的Wine在今年的最新9.0版本才加入了實驗性的Wayland驅動程式。

就連KDE自家的程式,到現在都還會爆出GWenview視窗變超巨大、Kate彈出莫名浮動視窗的詭異bug。KDE字體檢視器到現在還不支援Wayland。

X11下行之有年的色彩管理系統,Wayland也還沒實現,要到KDE 6才有。

唉呦我的媽。

如果程式在Wayland下需要使用者手動弄一堆東西才可以正常使用,就代表Wayland根本還沒準備好吧!

啊你可以推給KDE開發者的錯吧,誰叫他們合成器沒寫好。

對!標準不一就是Wayland的一個最大問題!

這張圖解釋得不錯:

Wayland其實並不是X11的直接替代品,幾乎是不一樣的東西了!很多舊有的協定在Wayland上都沒有對應的東西,必須等開發者逐一實現。

對軟體開發者而言,他們也得適應Wayland的變化,或者講白點,程式整個重寫

過去大家使用的是X.org的X視窗系統實作,有統一的API可以遵循,各家依此開發視窗合成器。但進入Wayland後,X伺服器不見了,各家要自行想辦法做出Wayland合成器。

Linux世界沒有中心化開發這檔事,這就導致了各家標準不一的狀況。前面說過Wayland開發者只規定通訊協定,對合成器要怎麼實作並無詳細規範。現在Wayland合成器少說有10種以上了吧,GNOME的Mutter有Mutter的實現,KDE的Kwin有kwin的實現,Hyprland也有自己的實現。

雖然開源組織之間會協調標準,GTK和QT這類知名的函式庫也跟進支援Wayland,但總有些標準沒有辦法統一。

Fcitx5的開發者 在Blog抱怨過這個問題,他為了支援各大桌面環境,實現了4種輸入法協定。

即使是XWayland模式,也不是100%完美的解決方案。它會導致應用程式效能下降,且縮放模糊,有的甚至無法分享剪貼簿。但因為Wayland開發不完美,一堆開發者仍選擇這種折衷的解決方法,不開發原生的Wayland程式,反而使用XWayland擺爛。


綜上所述,如果真的去細究Wayland的問題,最終,你會變成半個Linux開發者。

如果有天份的話,你可能還會發現名為 wlroots的函式庫,著手撰寫自己的Wayland合成器!加入Sway、Hyprland、river、Wayfire等一眾開發者的行列。

4. 但是,Wayland依然是未來趨勢
#

事情正在起變化,Wayland就像Systemd、PulseAudio、Avahi一樣,剛出來罵聲連連,但他們最後都逐漸為大眾接受了。

這是為什麼?上面講的Wayland缺點,bug,缺陷,未來會慢慢解決。這篇文章提到Wayland的問題,可能幾個月後就不見了。

堪薩斯合唱團的歌曲告訴過你了:CARRY ON MY WAYLAND SON!

各大Linux發行版都逐漸把Wayland作為預設選項了。

商業公司Redhat、Caonocial、SUSE大力推動Wayland作為預設選項。

Valve和AMD合作讓Steam Deck上的Wayland支援HDR,連驅動死不開源的Nvidia也逐漸支援Wayland了,更多新特性正在路上。

在未來幾年,GNOME可能就會徹底砍掉X11的登入選項,變成純Wayland環境,連帶的GTK也會正式放棄支援X11。但是我這裡講的是滾動發行版的排程,像Ubuntu LTS和Debian Stable這類發行版可能要更久才會進入純Wayland環境。

X11要花幾年才會死透?我預估再等個十年吧。等到Debian Stable分支也用上Wayland那才是真正成熟了。

5. 如何切換到Wayland?
#

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

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

如何知道你在用X11還是Wayland?開啟終端機,輸入以下指令便可知一二。如果要在X11與Wayland之間切換,通常系統登入畫面(Display Manager)都會有選項讓你選。

echo $XDG_SESSION_TYPE

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

  • GNOME 46:Linux界的桌面老大哥,自GNOME 42之後支援良好,幾乎沒有bug了。
  • KDE Plasma 6.0:越來越好了。至於KDE 6以前KDE 5版本的桌面嘛,戒慎恐懼。儘管KDE最早在5.4版就支援Wayland了,我還是不太敢用,破圖、工作列崩潰樣樣來。
  • XFCE 4.18:2024年宣佈將支援Wayland
  • Cinnamon 6.0:2023年Linux Mint開發者宣佈將支援Wayland
  • LXQT 1.4:2024年宣佈將支援Wayland
  • i3wm、dwm等平鋪視窗管理器:沒辦法移植,可用Sway、Hyprland取代。會用這類桌面環境的高手應該不用我講你自己就會判斷合不合適了。

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

至於Linux發行版部分,如果想要趕快收到Wayland更新和錯誤修正,那麼滾動發行版(Arch Linux、Fedora、openSUSE Tumbleweed、Debian Testing、Gentoo)用戶比較吃香,穩定發行版(Debian Stable、Ubuntu LTS)用戶要等比較久。

延伸閱讀
#

KDE開發者寫的週記: Does Wayland really break everything?

揮棒成功寫的文章,生動講解X視窗系統的原理: 【心得】Linux 出專欄啦! (14):桌面環境系列=〉x11 和 wayland ,談技術債與財源問題(厲害吧!!)

用HTML5讓你理解何為X11: Explanations - X Window System Basics

Wayland在FreeDeskop.org的官方頁面: https://wayland.freedesktop.org

相關文章

當我們在討論GNU/Linux桌面哪個比較好的時候,不要把Windows扯進來
人文藝術 自由軟體議題 KDE Plasma Linux GNOME
KDE Plasma與GNOME桌面比較,最終我還是選擇KDE
人文藝術 自由軟體議題 Linux GNOME KDE Plasma
Linux系統用Flatpak安裝軟體的優缺點
人文藝術 自由軟體議題 Flatpak Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。