當前位置:
首頁 > 知識 > 十年 Linux 桌面生存指南|Linux 中國

十年 Linux 桌面生存指南|Linux 中國

導讀:從 2006 年開始轉戰 Linux 系統後,經過幾年的實踐,我的軟體設置在過去十年內出人意料的固定。再過十年回顧一下,看看發生了什麼,也許會非常有趣。

本文字數:12075,閱讀時長大約:15分鐘

https://linux.cn/article-12883-1.html

作者:Dennis Felsing

譯者:chenmu-kk

從 2006 年開始轉戰 Linux 系統後,經過幾年的實踐,我的軟體設置在過去十年內出人意料的固定。再過十年回顧一下,看看發生了什麼,也許會非常有趣。在寫這篇推文時,我迅速回顧了正在運行的內容:

htop overview

動機

我的軟體介紹排序不分先後:

??程序應該運行在本地系統中以便我可以控制它,這其中並不包括雲解決方案。

??程序應在終端中運行,以便於在任何地方連貫地使用它們,包括性能稍差的電腦或手機。

??通過使用終端軟體,可以實現自動聚焦鍵盤。只有在一些有意義的地方,我會更喜歡使用滑鼠,因為在打字期間一直伸手去拿滑鼠感覺像在浪費時間。有時候過了一個小時我才注意到甚至還沒有插滑鼠。

??最好使用快速高效的軟體,我不喜歡聽到風扇的聲音和感到房間在變熱。我還可以繼續長久地運行舊硬體,已經使用了 10 年的 Thinkpad x200s 還能很好地支持我所使用的軟體。

??組合。我不想手動執行每個步驟,而是在需要時自動執行更多操作,這時自然是支持 shell。

操作系統

十二年前移除 Windows 系統後,我在 Linux 系統上經歷了一個艱難的開始,當時我手上只有?Gentoo Linux?系統的安裝光碟和一本列印的說明書,要用它們來實現一個可運行的 Linux 系統。雖然花費了幾天的時間去編譯和修整,但最終還是覺得自己受益頗多。

自此我再也沒有轉回 Windows 系統,但在持續的編譯壓力導致風扇失靈後,我將我的電腦系統切換到?Arch Linux。之後我將其他的電腦和私人伺服器也切換到了 Arch Linux。作為一個滾動發布發行版,你可以隨時升級軟體包,但Arch Linux News已經詳細報道了其中最主要的漏洞。

不過,令人煩惱的是一旦你更新了舊的內核模組,Arch Linux 就會移除舊版的相關信息。我經常注意到一旦我試著插入一個 USB 快閃記憶體盤,內核就無法載入相關組件。相反,每次內核升級後都應該進行重啟。有一些方法可以解決這個問題,但我還沒有實際地使用它們。

其他程序也會出現類似的情況,通常 Firefox 、 cron 或者 Samba 在升級後都需要重啟,但惱人的是,它們沒有警告你存在這種情況。我在工作中使用的?SUSE?很好地提醒了這種情況。

對於DDNet產品伺服器,我不喜歡使用 Arch Linux 而是使用?Debian?系統,這樣在每次升級時出現故障的幾率更低。我的防火牆和路由器使用了?OpenBSD?,它擁有乾淨系統、文檔和強大的pf 防火牆,而我現在不需要一個單獨的路由器。

窗口管理器

從我開始使用 Gentoo 後,我很快注意到 KDE 的編譯時間非常長,這讓我沒辦法繼續使用它。我四處尋找更簡單的解決方案,最初使用了?Openbox?和?Fluxbox。某次,為了能更多進行純鍵盤操作,我開始嘗試轉入平鋪窗口管理器,並在研究其初始版本的時候學習了dwm和awesome。

最終,由於xmonad的靈活性、可擴展性以及使用純?Haskell(一種出色的函數編程語言)編寫和配置,最終選擇了它。一個例子是,我在家中運行一個 40" 4K 的屏幕,但經常會將它分為四個虛擬屏幕,每個虛擬屏幕顯示一個工作區,每個工作區自動排列在我的窗口上。當然, xmonad 有一個對應的模塊。

dzen

和conky對我來說是一個非常簡單的狀態欄。我的整體 conky 配置看起來是這樣的:

輸入命令直接通過管道輸入 dzen2:

對我而言,一項重要功能是在完成工作後使終端發出蜂鳴聲。只需要簡單地在 zsh 中的??變數中添加一個??字元就可以做到,只要工作完成就可以發出蜂鳴聲。當然,我使用了命令:

將??內核模塊列入黑名單來禁用實際的蜂鳴聲。相反 urxvt 的??設置會將聲音變為尖銳。之後 xmonad 有一個 urgency 鉤子來捕捉這類信號,並且我可以使用組合鍵自動聚焦到當前的發出緊急信號的窗口。在 dzen 中我可以看到一個漂亮且明亮的??緊急窗口。

在我筆記本上所得到的最終成品是:

Laptop screenshot

我聽說前幾年i3變得非常流行,但它要求更多的手動窗口對齊而不是自動對齊。

我意識到也有像tmux那樣的終端多路復用器,但我仍想要一些圖形化應用程序,因此最終我沒有有效地使用它們。

終端連續性

為了使終端保持活躍狀態,我使用了dtach,它只是模擬屏幕分離功能。為了使計算機上的每個終端都可連接和斷開,我編寫了一個小的封裝腳本。這意味著,即使必須重新啟動 X 伺服器,我也可以使所有終端都運行良好,包括本地和遠程終端。

Shell 編程

對於 shell,我使用?zsh?而不是?bash,因為它有眾多的功能。

作為終端模擬,我發現urxvt足夠輕巧,支持 Unicode 編碼和 256 色,具有出色的性能。另一個重要的功能是可以分別運行 urxvt 客戶端和守護進程。因此,即使大量終端也幾乎不佔用任何內存(回滾緩衝區除外)。

對我而言,只有一種字體看起來絕對乾淨和完美:Terminus。由於它是點陣圖字體,因此所有內容都是完美像素,渲染速度極快且 CPU 使用率低。為了能使用??在每個終端按需切換字體,我的??包含:

對於編程和書寫,我使用?Vim?語法高亮顯示和ctags進行索引,以及一些帶有??、?和其他用於搜索和操作的常用終端窗口。這可能不像 IDE 那樣舒適,但可以實現更多的自動化。

Vim 的一個問題是你已經習慣了它的鍵映射,因此希望在任何地方都使用它們。

在 shell 功能不夠強大時,Python?和Nim作為腳本語言也不錯。

系統監控

htop?(查看當前站點的後台運行,是託管伺服器的實時視圖)非常適合快速了解軟體的當前運行狀態。lm_sensors可以監控硬體溫度、風扇和電壓。powertop是一款由 Intel 發布的優秀省電小工具。ncdu可以互動式分析磁碟使用情況。

nmap

、 iptraf-ng、tcpdump和Wireshark都是分析網路問題的基本工具。

當然還有很多更優秀的工具。

郵件 同步

在我的家庭伺服器上,我為自己所有的郵箱賬號運行了fetchmail守護進程。fetchmail 只是檢索收到的郵件並調用procmail:

配置非常簡單,然後等待伺服器通知我們有新的郵件:

我的??配置包含一些備份全部郵件的規則,並將郵件整理在對應的目錄下面。例如,基於郵件列表名或者郵件標題:

我使用msmtp來發送郵件,它也很好配置:

但是到目前為止,郵件還在伺服器上。我的文檔全部存儲在一個目錄中,我使用Unison在所有計算機之間進行同步。Unison 可以視為雙向互動式?rsync,我的郵件是這個文件目錄下的一部分,因此它們最終存儲在我的電腦上。

這也意味著,儘管郵件會立即到達我的郵箱,但我只是按需拿取,而不是郵件一到達時就立即收到通知。

從此我使用?mutt?閱讀郵件,使用側邊欄顯示我的郵件目錄。??文件對於顯示非純文本郵件( HTML, Word 或者 PDF)不可或缺:

新聞 通訊

Newsboat

是一個非常棒的終端 RSS/Atom 閱讀器。我在一個有約 150 個提要的??會話伺服器上運行它。也可以在本地選擇提要,例如:

我以同樣的方式使用Irssi進行 IRC 通訊。

日曆

remind

是一個可以從命令行獲取的日曆。通過編輯??文件可以設置新的提醒:

遺憾的是,目前 remind 中還沒有中國農曆的提醒功能,因此中國的節日不易計算。

我給提醒設置了兩個名字:

按時間順序查看待辦事項清單

顯示適應終端寬度的日曆:

remcal

字典

rdictcc

是鮮為人知的字典工具,它可以使用dict.cc很棒的詞典並將他們轉存在本地資料庫中:

記錄和閱讀

我有一個簡單記錄任務的備忘錄,在 Vim 會話中基本上一直處於打開狀態。我也使用備忘錄作為工作中「已完成」工作的記錄,這樣就可以檢查自己每天完成了哪些任務。

對於寫文件、信件和演示文稿,我會使用?LaTeX?進行高級排版。德式的簡單信件可以這樣設置,例如:

在我的私人網站上可以找到更多的示例文檔和演示文稿。

Zathura

讀取 PDF 文件速度很快,支持 Vim 類控制項,還支持兩種不同的 PDF 後端:Poppler 和 MuPDF。另一方面,在偶爾遇到 Zathura 無法打開的文件時,Evince則顯得更全能一些。

圖片編輯

簡便的選擇是,GIMP?和?Inkscape?分別用於照片編輯和互動式向量圖形。

有時?Imagemagick?已經足夠好了,它可以從命令行直接使用,從而自動編輯圖片。同樣Graphviz和TikZ可以用來繪製曲線圖和其他圖表。

Web 瀏覽器

對於 Web 瀏覽器,我一直在使用?Firefox。相較於 Chrome,它的可擴展性更好,資源使用率更低。

不幸的是,在 Firefox 完全改用 Chrome 風格的擴展之後,Pentadactyl擴展的開發就停止了,所以我的瀏覽器中再也沒有令人滿意的 Vim 類控制項了。

媒體播放器

通過設置??以及?,具有硬體解碼功能的mpv在播放期間 CPU 的佔用率保持在 5%。相較於默認的 PulseAudio,mpv 中的??似乎可以使我的立體揚聲器/耳機獲得更清晰的降級混頻。一個很棒的小功能是用??退出,而不是只用??來保存回放位置。當你與母語是其他語言的人一起看視頻時,你可以使用??同時顯示兩種字幕,主字幕位於底部,次字幕位於屏幕頂部。

我的無線滑鼠可以簡單地通過一個小的配置文件(??)實現遠程控制 mpv :

youtube-dl?非常適合觀看在線託管的視頻,使用??命令可獲得最高質量的視頻。

作為音樂播放器,MOC不再活躍開發,但它仍是一個簡易的播放器,可以播放各種可能的格式,包括最不常用的 Chiptune 格式。在 AUR 中有一個補丁增加了 PulseAudio 支持。即使在 CPU 時鐘頻率降到 800 MHz, MOC 也只使用了單核 CPU 的 1-2% 。

moc

我的音樂收藏夾保存在我的家庭伺服器上,因此我可以從任何地方訪問它。它使用SSHFS掛載並自動安裝在??目錄下:

跨平台構建

除了 Linux 本身,它對於構建任何主流操作系統的軟體包都很優秀!一開始,我使用?QEMU?與舊版 Debian、 Windows 以及 Mac OS X VM 一起構建這些平台。

現在我在舊版 Debian 發行版上轉而使用 chroot (以獲得最大的 Linux 兼容性),在 Windows 上使用MinGW進行交叉編譯,在 Mac OS X 上則使用OSXCross。

用於構建 DDNet的腳本以及更新庫構建的說明的腳本都基於這個。

備份

通常,我們都會忘記備份。即使這是最後一節,它也不應該成為事後諸葛。

十年前我寫了rrb(反向 rsync 備份)重新封裝了??,因此我只需要將備份伺服器的 root SSH 許可權授予正在備份的計算機。令人驚訝地是,儘管我一直在使用 rrb ,但它在過去十年里沒有任何改變。

備份文件直接存儲在文件系統中。使用硬鏈接實現增量備份()。一個簡單的配置定義了備份保存時間,默認為:

因為我的一些計算機沒有靜態 IP / DNS 但仍想使用 rrb 備份,那我會使用反向安全隧道(作為 systemd 服務):

現在,隧道運行備份時,伺服器可以通過??命令或者使用??到達伺服器端。

在談及 SSH 技巧時,有時由於某些中斷的路由會很難訪問到伺服器。在那種情況下你可以借道其他伺服器的 SSH 連接,以獲得更好的路由。在這種情況下,你可能通過美國連接訪問到我的中國伺服器,而來自德國的不可靠連接可能需要幾個周:

結語

在Hacker News下評論吧。

via:?https://hookrace.net/blog/linux-desktop-setup/

作者:Dennis Felsing?選題:lujun9972?譯者:chenmu-kk?校對:wxy

本文由?LCTT?原創編譯,Linux中國?榮譽推出

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!


請您繼續閱讀更多來自 Linux中國 的精彩文章:

Rails 之旅第 1 天:一個令人困惑的 Rails 錯誤信息|Linux 中國
用 testdisk 恢復 Linux 上已刪除的文件