SilverLining's Blog

从 Ubuntu 到 Manjaro

Why Manjaro

使用 Linux 也有四五年的时间了,最早从 OpenSuse 开始,也间断用过 Fedora 和 ArchLinux,后来为了学习鸟哥的书用了一段时间 CentOS,最后安定的用了两三年的 Ubuntu 。

简单说说一路折腾的过程,OpenSuse 的 DE 大家都懂的,那时候大部分人还在用 XP 和 Win7,初接触 KDE 惊为天人的漂亮。后来用过 RedHat 系的 Fedora/CentOS,那时候还没有 dnf,yum 用起来怎么都有点不舒服。再后来初入 Arch 教还算顺利,第一次玩还是很兴奋的,多装个两次之后,满心只想吐槽当年的自己浪费了很多时间瞎折腾。这几年把 Linux 作为主力开发环境,也开始害怕折腾环境,就在 Ubuntu 安定了下来。

说实话我还是很喜欢 Unity 的,虽然被很多人吐槽,但我还是很喜欢侧边栏的 dock,以及它对于 Gnome 菜单栏与标题栏融合的赶紧,很省空间啊有木有。小小的遗憾就是并不是所有应用都支持,但瑕不掩瑜嘛。另外得益于 Ubuntu 的推广力度与用户基数,大部分软件都对 DEB 系尤其是 Ubuntu LTS 提供了稳定的支持,其社区也是相当活跃(隔壁 OpenSuse 社区)。当然感谢国产最良心的 Deepin 社区的贡献,把搜狗输入法、网易云音乐带到了 Linux 平台。当然还有集成免费的 CrossOver 授权,简直不能良心更多。

虽然从 Ubuntu 14.04 升级到 16.04 的时候,包依赖的问题还是有点阵痛,但大部分时间还是很舒适安逸的。但安逸久了就又想搞事了,毕竟不安分才是程序猿的本性,还是决定走出舒适区。两次滚挂的经历让我实在没有勇气回 Arch,一次是因为 Gnome 上游的 bug,一直进不去桌面;一次是没注意手贱滚了 NVIDIA 的显卡驱动,坑的我又从头重配置了一遍 CUDA 的环境。

但还是从心里舍不得 arch 的,尤其是 pacman 的优雅与 aur 包的丰富,所以我把目光转向了 manjaro 。作为最负盛名的 arch 衍生版,manjaro 虽然诞生只有短短 4 年,却在 distrowatch 上称为第三受欢迎的发行版。图形化的安装界面给我这样懒得从头折腾的用户节省了大量时间,偶尔享受一下傻瓜式的安装也是惬意。图形化的包管理工具、多种 de 环境的支持(官方支持 xfce 、 kde 和 gnome,社区支持 budgie 、 cinnamon 、 i3 、 lxde 、 lxqt 、 mate 甚至 deepin),不但满足了各种口味的用户,也极大降低了用户门槛。另一方面,作为基于 arch 的衍生发行版,manjaro 继承了 archlinux 极度活跃与极高贡献度的社区优势。当然对我最大的吸引力在于,manjaro 在兼容 arch 原有源的基础上,也有自行维护的独立源,让你能在享受滚动更新的同时,极大地的降低了 arch 过分贴近上游引起的稳定性问题,提前踩了大部分的坑。

调教系统设置

配置源镜像

我安装的是 Manaro Gnome 18.1.4(没错我还是回归了 Gnome 的坑)。最新的 Manaro 中已经自带了国内的源,因此不需要手动添加了,我们只需要将地区设置为 China:

# nano /etc/pacman-mirrors.conf
OnlyCountry=China

然后使用 pacman-mirrors 更新源:

# pacman v5.2.1,早期版本命令可能不同
$ sudo pacman-mirrors -g -c China

然后添加 ArchLinux 的源,在文件底部添加:

# nano /etc/pacman.conf
[archlinuxcn]
SigLevel = Optional TrustedOnly
Server = https://mirrors.163.com/archlinux-cn/$arch

所有的镜像源:https://github.com/archlinuxcn/mirrorlist-repo

然后同步源:

$ sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring

如果安装 archlinuxcn-keyring 失败,可以参照以下解决:

$ sudo pacman -Syu haveged
$ sudo systemctl start haveged
$ sudo systemctl enable haveged
$ sudo rm -rf /etc/pacman.d/gnupg
$ sudo pacman-key --init
$ sudo pacman-key --populate manjaro
$ sudo pacman-key --populate archlinuxcn

双系统时间同步

Linux 与 Win10 之间存在时间不同步的问题,这是由于在 Linux 与 Windows 中的不同计时方式导致的。 Windows 系统把系统硬件时间当作本地时间,即操作系统中显示的时间跟 BIOS 中显示的时间是一样的。

而在 Linux/Mac 系统中,把硬件时间当作 UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是 GMT+8,则系统中显示时间是硬件时间加 8 个小时。因此我们可以先校准 Linux 系统中的时间,再把它同步到 BIOS 硬件上:

$ sudo ntpdate time.windows.com
$ sudo hwclock --localtime --systohc

X11 or Wayland

Wayland 被喻为下一代 Linux 桌面的希望,自项目诞生起就着力于构建一个更加高效率的图形服务器。项目发展也已经好几年了,眼看着代码逐渐稳定,借着 Gnome 3.32 和 3.34 两个版本性能的提高,也想体验一下这个新版的图形服务器到底有多高效。

好消息是 Wayland 在 Gnome 的发行版已经作为系统依赖安装完毕了,我们只需要打开这个配置就可以进行体验:

# sudo nano /etc/gdm/custom.conf
WaylandEnable=true

重启系统,查看是否修改成功:

$ echo $XDG_SESSION_TYPE
# wayland    // Default output: X11

我的 DM 是 Gnome 默认的 gdm,不同的 DM 可能配置方法不尽相同,请参考文档。

说说我使用了 Wayland 一年以后的体验:

搜狗输入法的坑

常规安装

ArchLinux 的源包含大部分常用软件,一行 pacman 就可以搞定安装了,十分简便:

$ sudo pacman -Sy base-devel
$ sudo pacman -S fcitx-sogoupinyin fcitx-configtool

安装完成后配置 fcitx 环境:

# nano ~/.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

配置文件错误

如果你是升级安装,之前的 Home 目录下有 Sogou 的配置文件残留的话,安装完成后可能会提示配置错误,按照提示删除配置文件目录再重启即可:

$  rm -r ~/.sogouinput ~/.config/SogouPY* ~/.config/sogou-qimpanel/
已过期

无法输入中文

安装完成后可以切换输入法,但仍然无法输入中文。 尝试手动运行 sogou-qimpanel,日志中提示缺少依赖:
sogou-qimpanel: error while loading shared libraries: libfcitx-qt.so.0: cannot open shared object file: No such file or directory.
原因是仓库打包的依赖是 fcitx-qt5,而其实依赖的版本为 fcitx-qt4,执行安装:
$ sudo pacman -S fcitx-qt4
这里 pacman 的依赖检查会提示版本冲突,选择 YES 继续安装,然后重启 Fcitx,发现可以正常输入中文了。

Fctix on Wayland

如果你和我一样启用了 Wayland,上述配置的环境变量无法起作用,因为 Wayland 不会读取~/.xprofile 文件,解决方案是将环境变量放在 environment 文件里:

# sudo nano /etc/environment
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

常用软件与开发环境

$ sudo pacman -S yay google-chrome v2ray trojan proxychains
$ sudo pacman -S vim git wget vpnc unrar unzip p7zip jdk tldr
$ sudo pacman -S vlc axel aria2 cmake make autoconf gcc clang
$ yay -S visual-studio-code-bin
$ sudo pacman -S deluge gimp inkscape

Terminal

安装 zsh

设置好更新源之后的第一件事当然是把 bash 换成 zsh:

# 安装 zsh
sudo pacman -S zsh
# 配置 oh-my-zsh sh -c "(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
# 更换默认 shell: chsh -s /bin/zsh

oh-my-zsh 插件

修改配置文件:

# nano ~/.zshrc
plugins=(git zsh-autosuggestions zsh-syntax-highlighting autojump)

Safe-rm

顺手敲 rm 一时爽,姿势上还是要注意安全。将这个 safe-rmshell 脚本设置成系统 rm 命令的 alias 就可以放心的使用啦: https://github.com/kaelzhang/shell-safe-rm

安装:

$ sudo npm i -g safe-rm
# Edit shell configuration, for zsh it's ~/.zshrc
alias rm='safe-rm'

好用的 Terminator

如果你也和我一样怀念 Mac 下 iTerm2 的惊艳体验,那么现在 Linux 下也有了一款可以媲美 iTerm2 的神器了:Terminator

$ yay -S terminator-git

配合 Dracula 主题和半透明效果食用效果更加:

$ git clone https://github.com/OmarElebiary/terminator-dracula.git
$ ./install

选中即复制:Preferences -> Profiles -> General -> Copy on selection

主题美化

发现 Manjaro 20.1.0 以后自带的 Matcha-sea 主题已经很好看了,也优化了 Gnome 的大粗标题栏,至少已经挺符合我的审美了,这段美化装逼成 macOS 的黑历史就折叠啦。

折叠黑历史

扁平化主题

我很喜欢扁平化主题,之前 Ubuntu 一直用的著名的 Flatabulous 主题,搭配 Ultra-flat-icons 的扁平化图标。配置好 Manjaro 之后第一件事就是寻找好看的扁平化主题。好在已经有了 Flatabulous 主题的 Arch 适配,直接安装即可:
$ sudo pacman -S gtk-arc-flatabulous-theme-git

图标美化

一开始我用的也是很有名的 Numix 扁平化图标:
$ sudo pacman -S numix-circle-icon-theme-git
但是放在主题上发现文件管理器中的文件夹图标是橙黄色的,在蓝色调的主题中看起来有些不协调。如果你和我一样强迫症的话,也是有解决方法的:https://github.com/horst3180/arc-icon-theme 这是一套移植而来的图标,蓝色的文件夹和主题色调融合的非常完美。唯一的小问题就是这不是一套完整的图标,它需要继承其他的图标,以便在缺少对应图标时向别的图标库借用。具体安装方法参照链接。

字体

Manjaro 默认字体对中文支持并不好,尤其终端中的字体发虚。原来有一个字体渲染神器 Infinality,但是原作者好像不维护了,还是有不少 bug 的。

只好将就着换换字体,系统字体直接用的 Yahei Consolas Hybrid,省去了中英文分开渲染的麻烦,但是 Consolas 用在终端实在不好看,因此我在终端用的是文泉驿米黑等宽字体(想念 Ubuntu 的字体效果,但中文字体渲染有点发虚)。

具体安装字体的方法:

# 复制字体
sudo cp YaHei.Consolas.1.12.ttf /usr/share/fonts/
# 更改权限 sudo chmod 644 /usr/share/fonts/*.ttf
# 安装字体
cd /usr/share/fonts/ sudo mkfontscale
sudo mkfontdir sudo fc-cache -fv

Gnome 插件

Gnome 3.34 已经挺好看了,也自带了 Dash to dock 和 OpenWeather 插件。 TopIcons Plus 作者弃坑了,感谢他曾经带来的如此美好的项目(现在的 Gnome Shell 不说可圈可点,也确实已经差强人意了)。以前用的 System Monitor 插件现在也用 htop 代替了。
至于之前各种折腾 Sublime 的回忆,现在:人生苦短我用 VSCode :-)
关于主题的各种折腾,关闭动画效果,禁用左上角热区激活多任务窗口,按钮改到标题栏左侧等等,都在系统自带的 Gnome Tweak 中点一点就可以完成。因此也不需要再过多折腾了。随着越来越多的细节功能都已经可以开箱即用,这两年 Linux Desktop 的发展也是越来越好了。

双屏插件

Multi Monitors Add-On 插件可以让第二屏也显示顶栏的应用程序和时间。
安装:https://extensions.gnome.org/extension/921/multi-monitors-add-on/

折叠 Gnome 3.24 美化

Docky 的安装

最新的 Gnome(3.24.2) 的左侧边栏变得和 Unity 一样从上到下,看起来很丑(不知道为什么就是没有在 Ubuntu 上看起来舒服),而且还占地方,屏幕视觉变窄了不少。本来在 Ubuntu 上我就习惯了隐藏侧边栏的,所以首先在 Gnome Tweak Tools 中关闭左边栏和 Dash to dock 插件,然后安装 Docky:
$ sudo pacman -S docky
安装完 Docky 还有个小插曲,就是 Sublime 的图标显示很模糊。 Sublime 对 Fcitx 的中文支持一直不好,虽然这是 Qt 的锅但是这么多版本一直没有解决。虽然网上有大神放出了补丁,但原理都是动态加载重新编译的.so 文件,导致图标不能正常显示。 把.desktop 文件和 Docky 配置文件研究了个遍,还是不能解决这个问题。那个模糊的图标简直逼死强迫症。正好在之前的使用中,觉得 Sublime 打开 10MB 以上的文件速度好像有点慢(强行找理由),一气之下转头了 VSCode 的怀抱,然后开启了另一扇新世界的大门就不多说了。

常用插件

我主要用的 Gnome 插件有 OpenWeather 、 System Monitor 、 Coverflow alt-tab 和 TopIcons Plus 。天气插件使用的是 OpenWeather 的数据源,之前设置城市的时候一直把经纬度写反掉,怎么刷都刷不出来,纠结了很久百思不得其解(应该是先维度后经度,是不是很反人类)。 System Monitor 主要用来监控 CPU 、 RAM 、硬盘和网络的使用情况。之前也折腾过 Conky,一方面屏幕太小 Conky 挺占地方(桌面上堆满图标的懒癌患者),另一方面一直用简洁配置的我突然觉得 Gnome Shell 的插件集成度更好,并且外观也更好看,最重要的是不折腾,果断弃坑 Conky 。 Coverflow alt-tab 插件在使用 Alt-Tab 切换时提供预览窗口,类似 Win10,还是很直观漂亮的。 TopIcons Plus 的作用就是将 Gnome3 移动到左下方的反人类的输入法状态栏,嗯没错在这点上我无数次被 Fedora 逼疯。

标题栏按钮位置

习惯了 Ubuntu 缺省的左侧按钮,对 Gnome 右侧的按钮很不习惯。好在这个问题很好解决,使用 dconf-editorgsettings 设置按钮顺序:
$ gsettings set org.gnome.desktop.wm.preferences button-layout 'close,maximize,minimize:appmenu'

Dracula 主题

我们的目标是,吸血鬼 Everywhere!

文件管理器

是的,即使到了 Gnome 3.34,Nautilus 依旧是那么难用。原来我是用 Nemo 替代的,美中不足的是仍然心心念念 macOS Finder 里的那个唯一让我羡慕的功能:Column View 。功夫不负有心人,最终找到了一个虽然 bug 挺多但是仍然在积极维护的文件管理器。不得不说文件管理器这东西还是别人家的好啊——他就是 Elementary OS 自带的 Pantheon File Manager 。我现在和 Nautilus 配合着一起用,在 SMB,FTP 之类的使用场景中还是 Nautilus 比较稳定。

安装 Pantheon File Manager

感谢 AUR 好心人的打包,这个别人家的文件管理器,我们也可以一行命令偷过来用了:

$ yay -S pantheon-files-git

关于 yay 的代理配置:

$ export http_proxy=socks5://127.0.0.1:1080
$ export http_proxys=socks5://127.0.0.1:1080

如果编译错误,提示缺少依赖,根据提示安装即可:

$ sudo pacman -S fakeroot libgit2-glib
折叠 Nemo 文件管理器

Nemo 文件管理器

Gnome 另一个饱受诟病的地方就是 Nautilus 文件管理器,并且历经多次版本更新,不断砍掉使用的功能,真是越来越难以忍受(甚至不能显示文件路径)。好在大神们早就看出端倪并且即使 fork 除了 Nemo 文件管理器这一神器。 安装 Nemo 并不复杂,重要的是我们需要把他设置为系统默认文件管理器从而彻底取代 Nautilus 。
# 安装 Nemo
sudo pacman -S Nemo
# Set Nemo as the default handler for inode/directory types xdg-mime default nemo.desktop inode/directory
# Test (should open your home directory with Nemo)
xdg-openHOME
# Turn off desktop icon handling by Files (Nautilus)
gsettings set org.gnome.desktop.background show-desktop-icons false
# Turn on desktop icon handling by Nemo gsettings set org.nemo.desktop show-desktop-icons true
重新启动后,重新打开桌面图标显示即可:
# Turn on desktop icon handling with Nemo
$ gsettings set org.gnome.desktop.background show-desktop-icons false
这里还是劝大家即使 Nemo 已经彻底替代 Nautilus 接管了系统的文件管理,也最好不要卸载 Nautilus,避免引起不必要的问题。

替换默认文件管理器

$ xdg-mime default io.elementary.files.desktop inode/directory

参考资料