個人用過的幾個桌面gnome、xfce、kde都挺不錯的啊

想問問知友linux桌面到底哪不行?2020年了Linux桌面還不行嗎?


因為:

  • Windows 需要實現和改進哪些功能,取決於為這個系統掏錢的用戶。
  • OSX 需要實現和改進哪些功能,取決於設計師覺得用戶需要什麼。
  • 而 GNU/Linux 桌面需要實現和改進哪些功能?取決有編程能力和編程意願的用戶需要什麼。

然鵝,GNU/Linux 系統下,最有編程能力跟編程意願的那一批用戶,用命令行的是主流。而桌面付出的努力真的不夠多。所以一些小問題多多少少總是存在的。

如果你自己能改代碼也有時間改代碼,那麼這些問題都不是問題,比方說我自己常用的圖形界面應用就那麼屈指可數的幾個,裡面有不符合我需求的我基本上都自己動手改代碼搞定了,那麼我就覺得挺舒服。

但如果你不能自己改代碼,又沒法請親友幫你改代碼,同時你又相對要求比較高,遇到問題希望很快解決,那麼Linux桌面確實會有一些不爽的。因為每個人遇到的問題並不相同,假如你遇上了一個別人都沒有遇到的問題,而你自己沒有能力解決,對Linux桌面來說,這個問題就有可能長期懸而未決。而對於Windows來說,這種問題雖然遇上的人非常少,但可能也已經被報上去,在可以預期的將來就能解決。

——所以說Linux是程序員的操作系統並沒有錯,原因並非因為這個操作系統是給程序員做的,而因為程序員比較容易解決自己在使用過程中遇到的問題。


我從2001年畢業開始就是做嵌入式Linux開發。現在個人興趣主要是Linux,Lisp,Emacs。可以看一下 redguardtoo - Overview 看我是什麼水準。

讓我盡量客觀地回答這個問題。

GNU/Linux的本質是一個自由的操作系統。自由意味著你有選擇權讓其比任何操作系統(如macOS)都穩定。

各大Linux發行版以及kernel的開發者,也做了大量工作讓Kernel基本是開箱即用。即用即穩定的。

問題在於驅動,由於kernel的開發模式問題,一旦第三方硬體廠商由於種種原因使得其驅動不能併入Kernel主幹。那麼升級kernel的過程就可能導致硬體突然不能用了。藍牙和無線網卡基本是重災區。

比如我用得Asus的無線網卡, redguardtoo/Asus-N53-PCU-RT5592STA-Driver-for-Linux-Kernel-4.6-Ubuntu-16.10 從某個版本kernel就開始改API,一開始還有其他高手打兼容補丁。我勉強升級到了4.9.0版本後,API就改到無法再打補丁。高手也消失不見了。這是和我同病相憐的人, https://askubuntu.com/questions/1010751/need-help-with-installing-driver-for-asus-pce-n53-11n-n600-pci-e-adapter

解決辦法也很簡單,就是鎖定kernel版本不升級,在Debian Linux上用以下命令鎖定相關包,

echo linux-image-4.9.0-6-amd64 hold | sudo dpkg --set-selections
echo linux-headers-4.9.0-6-amd64 hold | sudo dpkg --set-selections
echo linux-headers-4.9.0-6-common hold | sudo dpkg --set-selections

鎖定kernel版本後,你就發覺Linux Kernel無比穩定了

Kernel的質量是絕對不會差的,那麼多大廠的服務跑在Linux上就是最好的背書。

至於應用軟體的質量本質是操作系統市場定位的問題。Linux現在事實就是工程師和科學家的桌面。如果你是一個愛打遊戲的Windows用戶,那麼使用Linux的感覺就會很糟糕。但是如果你是搞web開發,搞人工智慧,在Linux下就很爽。

我在柯達工作的時候,就了解到很多為好萊塢做視頻處理的軟體都只有Linux版本,原因很簡單,之前這些軟體都是跑在Unix工作站上,現在遷移到Linux代價最低。

我從一個專業程序員的角度評價gnome、xfce、kde的話就是質量一般。穩定性還可以,功能比較少。

我認為i3wm各方面都是最佳和我精選的一套工具鏈配合,開發的效率極高,體驗極其愉悅。

例子見 Linux 各個發行版與 macOS 相比哪個寫代碼更舒服?為什麼?

Debian的好處就是可以選擇stable版本,兩年才做一次大升級。當中就是一些小修小補,自然不會出問題。我的工具鏈又極簡,基本不升級,所以開發環境就更穩定了。見 陳斌:我的極簡開發環境

另外推薦我的文本文件操作術教程, 如何提高編程速度 - Emacs高手教授輕鬆精通所有編輯器和IDE的秘訣

部分常用軟體設置(i3, bash, ctags ...) https://gist.github.com/redguardtoo


Linux 桌面不穩定主要應該由 Gnome 負責,因為多數發行版默認都使用它。如果更改為其它 DE/WM 就能生存下去,否則很可能回到 Windows 的懷抱。Gnome 2 時代穩定性不錯,但各種配置不夠統一,命令行技巧盛行,臃腫。Gnome 3 時代簡潔美觀,但性能和功能羸弱。

其次是獨立顯卡驅動。然而我用 Intel 集顯,穩如磐石。

2020 年我嘗試了 KDE Plasma 5(目前是 5.18),與以前的 KDE 判若兩人,輕快流暢穩定好看。


  1. 曾經的 Linux 桌面或多或少都有過「動蕩」時期,哪些接觸比較早又早早退出 Linux 的人在網路上發表了多年的固有印象。
  2. 很多發行版至今對使用 N 卡的新人還不夠友好。他們忌諱在安裝期間內置 N 卡驅動,也避免把閉源驅動放進默認源裡邊。新人不懂看官方資料,自己胡搞容易導致桌面損壞。典型的例如啟動黑屏、循環登錄、窗口顯示不完整等現象。
  3. 國人耳聞最多的 Ubuntu 有個很蠢的「內部錯誤」彈窗。內部錯誤顧名思義讓人聯想到是系統自身問題,但實際 Ubuntu 把第三方進程的崩潰 catch 以後卻告知用戶內部錯誤。這弱智一般的背鍋是造成很多人誤以為 Ubuntu 桌面不穩定的來源。
  4. Gnome 是一個定製能力極強,一體性又極差的桌面。因為這樣的特點,Gnome 的功能主要由擴展提供。例如:類似 Windows 的開始菜單、類似 macOS 的 Dock、類似 Android 的應用抽屜。但是 Gnome 的擴展穩定性很差,桌面升級後擴展掛掉是常有的事。又因為很多功能就是擴展提供的,導致各方面都有出現異常的風險。我算是一個比較老的 Gnome 用戶了,我改過很多擴展。為什麼要改呢,嫌功能不合心意?並不是,大部分情況下改擴展是因為擴展開發者來不及適應 Gnome 的變化,我得自己把它改成兼容的。
  5. 我現在是 KDE 用戶,使用時間不長。從我剛開始接觸它就發現它在非正常情況下極容易崩潰的特點。例如你換系統或換桌面,保持 /home 目錄數據不變。如果 /home 中存在很多上一個系統或桌面的相關配置和緩存,KDE 就會極其頻繁的崩潰。你操作速度有多快,它崩得就有多快,沒有上限。類似的,當你升級 KDE 的組件後不重啟系統,也可能導致它頻繁崩潰。但當你把這些可能導致錯誤的問題解決了,KDE 又完全正常了。順便說一下,KDE 曾經的動蕩時期非常可怕,用極不穩定形容毫不過分。

現在來講正常使用的話當然是很穩定的,至少從我正式使用 Linux 以來一直如此。

為什麼直到現在網路上仍然層出不窮這些言論呢?因為碰壁後帶有憤恨情緒的人挺多,早已司空見慣了。這類人應該直接勸退,不要試圖幫助不適合的人。


我覺得對於一般用戶而言,Linux 桌面甚至 Linux 本身,不穩定和糟糕的體驗反而是日常情況。

首先,Linux 內核本身在一般用戶面前就很脆弱,因為其因為各種原因不保證一個相對穩定的給設備驅動使用的二進位介面,當你一旦升級內核的時候很有可能出現你之前能正常使用的二進位設備驅動不兼容的情況導致整個系統異常。你可以說可以不升級內核,然而開源社區會通過各種方式逼迫你升級內核,因為他們大部分人根本不關心舊版本兼容性問題。你也可以說可以不用二進位驅動,事實上很多硬體廠商為了保護自己的知識產權而不會對涉及到技術細節的驅動進行開源。一旦涉及到商用和一般用戶的使用,則必須提供一個能夠長期保持兼容的靠譜的給設備驅動使用的二進位介面。最好的例子,一個是一旦選定一個內核版本就會提供非常久的支持與維護時間且不定時往內核 backport 新內核功能的紅帽系發行版,一個是為了繞過 GPL 許可絞盡腦汁除了 Linux 內核本身之外全都自己實現讓設備廠家可以儘可能在介面穩定的用戶模式框架上開發設備驅動的在手機上非常流行的安卓。反正我只要在 Linux 信徒面前提出這一點,必然會導致冷場,因為這點完美的戳到了他們的痛處。

其次,構成 Linux 桌面的絕大部分組件都由開源社區進行維護,而對於開源項目而言用戶越多代表著發現問題的潛在人群越多於是問題也就越少,然而構成 Linux 桌面的其他組件的用戶肯定是沒有 Linux 內核本身的用戶多的,畢竟 Linux 內核不僅有大量的用戶,還有大量的巨頭在後面支持。然而縱使力量有限,但是 Linux 桌面方面的開發者卻因為各種原因而很不團結,導致了嚴重的碎片化,力量更加分散,所以更加做不出一個開箱即用且用起來舒服且靠譜的桌面。環境的複雜多變導致為了保持穩定性更加困難,很多 Linux 發行版花大部分時間進行測試,主要測試的就是當前他們選定的組合是否足夠穩定到對外發行。

當然,除了這些之外,還有一些歷史問題。譬如 X 桌面就和 sys v init 一樣都是老古董,為了滿足現代用戶能夠用起來絲滑流暢而加入了大量的 hack 破壞了原來的設計,也使得其和基本使用 shell 腳本語言編寫的 sys v init 那樣就像用盡了黑魔法的天書一樣。然而 X 桌面的替代品 Wayland 和 sys v init 的替代品 systemd 一樣都是令很多人認為又造出了一個歷史問題。

最後,為了減少他人的吐槽,我想進行一些簡要的說明。

我是一個 Windows 和 Linux 重度用戶,在這兩大平台我都進行著項目的開發,Linux 方面我用過 Debian 系、Arch 系、Red Hat 系,由於工作是從事自動駕駛框架研發的關係,所以主要使用 Ubuntu。個人日常則是一個小有經驗 Windows 開發者。

個人覺得 Linux 和 Windows 用起來沒啥區別,且覺得如果不是追求內核級別的可定製性的話完全可以使用 Windows 以減少一些不必要的心情波動。關於 Windows 的 DLL Hell 個人覺得 Linux 也存在這樣的問題,只是因為 Linux 下面使用包管理器是日常於是如果不是深入使用的話很難遇到。當然我也覺得 systemd 大體方向是正確的但其實現並不令人滿意,個人覺得擁有 sys v init 的控制力也是必要的,只是個人非常不建議使用 shell 腳本,而是覺得應該使用譬如 Python 那樣的更加高級的腳本語言,減少黑魔法一樣的管道的使用從而減少創建的進程數量,從而降低宏觀視角的複雜度。


推薦閱讀:
相关文章