Manjaro —— 替代Windows和MacOS作为主要工作环境

一直以来,我的主要工作平台都是Macbook Pro和CentOS。用Macbook主要是省心,不需要去特殊关照命令行,环境和API基本和Linux一致,部署生产环境的时候基本不会遇到什么问题。

Manjaro —— 替代Windows和MacOS作为主要工作环境
结果我现在用Windows 10和WSL了。

一直以来,我的主要工作平台都是Macbook Pro和CentOS。用Macbook主要是省心,不需要去特殊关照命令行,环境和API基本和Linux一致,部署生产环境的时候基本不会遇到什么问题。尤其是NodeJS智障的node-gyp编译系统,这在Windows真的是一个鸡肋,有很大一部分npm package并不能在Windows下编译通过。另外一点就是Homebrew,对于桌面用户来讲,这简直是最好的的包管理器(当然另一方面是macOS环境单一,不像Linux下会有各种不同运行库的问题),基本上包的更新速度能跟上官方的发行速度,而看隔壁的Ubuntu和CentOS,官方仓库基本都是落后一个时代。

只不过近年来Mac的价格越来越高,自己家里的工作环境,感觉上一个iMac有点浪费,而Mac Mini简直有一种被割韭菜的感觉。年初的时候入手了NUC作为家里工作的备用机。NUC最大的问题还是散热和显卡性能,但是静默状态或者写代码的时候,基本上超低功率运行,风扇基本静音,NUC本身也可以挂在显示器挂架上,基本满足我想要的“不打扰”的工作环境。

不打扰的工作环境

暖色环境光台灯,微软无线静音键盘,SONY的无线音箱,NUC挂在显示器后方的挂架上。

当入手的时候,装的是Windows 10系统。当时一直关注WSL,感觉WSL平台已经基本稳定,这样完全在Windows上工作。然而使用了一个月以后,完全崩溃。首先不知道为什么,Windows下面的命令行的速度出奇的慢,经常一个命令要等一到两秒才能得到输出。另外,命令行的字体也非常让人崩溃。最后也是最重要的一点就是WSL,VSCode的自动匹配的搜索环境并不支持WSL,而且WSL下的文件权限也变得非常奇怪,WSL本身也实在是抗不起折腾,虽然不是虚拟机,但毕竟不是Windows原生环境,各种小问题不断,最后不得不放弃了WSL。

WSL和Ubuntu的问题

WSL下的文件夹权限全部被设定为了777。

于是下定决心迁移到Linux平台,说实话这是我第一次将Linux作为工作的主力平台。Linux的命令行环境倒是没有问题,然而GUI环境和另外两家比起来总有一种不协调的阉割感。不过好处是,编程工具基本都是跨平台,如果专心工作,倒也不是大问题。

因为很熟悉Ubuntu和CentOS环境,换成Linux环境以后,装了Ubutu 18.04的桌面版,安装完后就被劝退。首先不说Ubuntu那个紫色的UI,Gnome桌面动不动出点小bug,最大的问题是apt,服务器环境还好,已经全面换成docker部署基本无痛,但是桌面环境,没一个软件都需要确认一下版本,基本没有一步到位的体验。最后实在忍受不了不停弹出的,System error,有一种Linux中Windows蓝屏的感觉。

后来知道这是因为Ubuntu智障,把一些不重要的错误信息误报成系统错误。

因为对apt的反感,对debian系的操作系统都不想使用。这就直接否定掉了deepin,虽然deepin在桌面环境真的耕耘不错。然后第二个尝试的是CentOS系的Fedora等系统,然而CentOS下的包管理俨然还不如apt。当然这是对于桌面环境来说,对于部署环境,CentOS的稳定性远比Arch这类折腾的系统省心。同样的问题还有桌面的舒适度,当然Linux桌面(或者包管理)基本可以完全自定义,然后对于我来说,做一些实验性操作把系统搞得一团糟,三天两头想着重置系统的人,自定义一整套配置实在是折腾不起。所以,Ubuntu和CentOS的桌面环境,真心还不如Windows 10加上残疾的WSL。

终于在一次意外地尝试了Manjaro以后,这个问题被完全解决,准备将Manjaro作为长期的工作系统来使用。

Manjaro

配置好的Manjaro KDE版本,基本近似macOS体验环境。

Manjaro基本满足了我对桌面系统的要求。

  1. 稳定,我的Macbook基本上半年没有关机,除非是重要的更新,基本上都是待机状态。切换到Windows以后,经常半夜开始自动更新,有或者安装了一个软件就需要重启一次。Linux Kernal基本极其稳定,在没有重要的Kernal Patch的时候,基本可以7×24小时开始。
  2. 软件更新速度基本永远处于最新版。对于桌面系统,我基本希望bug修复越快越好,feature跟进也越快越好。这不同于部署环境,牺牲一定的稳定性换取最新的feature,还是很有必要的。
  3. 最后就是一定要支持Out-of-the-box feature,很多Linux系统装机以后需要大量的配置,虽然可以自动化脚本,但是研究和配置脚本也会浪费不少时间。尤其在桌面环境,一次重装系统,配置UI环境就折腾一天,于是虽然很喜欢Arch Linux和Gentoo,但配置时间实在是太久了。

第一次安装的Manjaro用的是deepin版本。因为刚从macOS切换过来,想要一个很类似的体验,deepin的桌面系统看起来和Mac相差无几。安装非常的流畅,基本是跟Ubuntu一样的流程,完全没有传说中Arch的艰难安装过程。整个过程的驱动识别也非常的准确,安装完毕没有遇到任何驱动问题。进入桌面第一感觉是,非常舒服,很有Mac的感觉,然后第二感觉就是,混乱。

Deepin移除了macOS的顶部菜单栏,同时顶部的状态栏也被换到了Dock上面。这一点让初次使用感觉到了一点不舒服。另外一点就是Deepin本身的软件。Manjaro实际上帮用户预装了一大堆软件,当然这也是Manjaro的Out-of-the-box feature之一,而实际上对于强迫症来说,有一种被绑架的感觉。不过好在第一次安装完毕以后删除了即可。

Deepin

Deepin真的很像macOS了。

因为不太喜欢Deepin的一些UI逻辑,而且Deepin现在并不在Manjaro的旗舰分支中,于是第二次安装就切换到了KDE环境(不用Gnome版本的主要原因是讨厌Ubuntu,总感觉Gnome又占资源又容易出问题)。Manjaro的KDE版本比Deepin版本要简单的多,而且默认UI就已经挺舒服了。如果是Windows用户,基本上不需要任何改动就能开始使用这个版本。

我自己使用了macOS的桌面风格,把菜单和状态栏放到了界面顶部,然后安装Latte Dock,在设置中调整一下背景,基本也就还原了macOS的界面。

当然换成Manjaro有一个重要的原因是因为相较Ubuntu和CentOS更新的软件源。不过Manjaro实际上并不是用的Archlinux的源,而是Manjaro社区自己维护了一套源。好在可以自定义源,添加Arch Linux CN源是一个不错的方案。不仅仅是因为其中包含了更多的国产软件——比如网易云音乐——还因为其中包含了很多二进制包。如果直接使用AUR,有一些在Manjaro上编译并不是非常稳定,而Arch Linux CN的二进制包则基本可以安心工作。这些二进制包包括了Google Chrome,Visual Studio Code,Spotify等等。

为了能访问更多的软件,还装上了Linuxbrew。四五年前Linuxbrew只是作为一个实验性的brew的fork存在,现在Linuxbrew已经能够提供很大一部分二进制包,而不需要从头编译。甚至Repo都已经和官方的Homebrew共享。最大的好处莫过于Linuxbrew基本在用户环境而不是系统环境安装。不需要每次繁琐的调用sudo,尤其是NodeJS,在系统安装的node在执行npm时经常忘记全局安装需要sudo。而跳过sudo对于快速建立开发环境是让人省心不少的,毕竟程序员的电脑一般也就一个人使用,既然如此,为何要安装到全局路径呢。

最后要提一下的是搜狗输入法。Manjaro并没有自带中文输入法,不过Arch Linux CN的repo中提供了各种中文输入法。在这里千万不要使用搜狗。使用搜狗了以后,运行一俩小时,CPU占用达到100%,风扇高速运转。打开htop监控进程,发现是搜狗云输入法在后台占用。不管是云输入法在后台匹配输入字符也好,或者预测用户输入也好。这种和服务器交换数据的输入法,总有一种隐私被侵犯的感觉。更别说动不动占用100%的CPU资源。后来就换用了Google Pinyin,虽然预测匹配差了点,但是至少用着安心很多。

实际上,Manjaro也并不是没有问题。有一些冷门软件并不能在Manjaro上运行。其中就有Parsec这样的游戏串流软件。不过,这也不仅仅是Manjaro的问题,各大发行版都有一些软件不能正常运行。现在Manjaro在DistroWatch已经牢牢占据第一位置,这对于推广Arch Linux无疑是有很大作用的。社区活跃度越高,AUR中的软件质量也会变得更好,总有一天,Manjaro能够成为一款更普及更流行的桌面Linux系统。