Manjaro 折腾手记

1 引言

出于娱乐和工作的需要,添置了一台华硕的笔记本,用来装 Windows 和 Linux。Windows 主要用来打游戏,而 Linux 主要用来作跨平台编译。

一开始,我选择的 Linux 桌面系统是 Ubuntu 18.04,想着毕竟是个老牌系统,生态比较完善。但是用了一段时间,总遇到各种灵异的问题 —— 比如 Gnome 莫名奇怪崩溃,系统闲置但是 CPU 风扇狂转等等。

终于一气之下,改装了基于 ArchLinux 的 Manjaro

既然选择了 Linux 桌面系统,就是选择了一条摸着石头过河的不归路。文本记录了在我使用 Manjaro 的这一个月时间里,遇到的一些问题的和对应的解决方法。

2 环境

  • OS: Manjaro 20.1 64bit
  • Kernel: Linux 5.7
  • Desktop Environment: XFCE

原本从官网下载的版本是 20.0.3,Linux 内核是 5.6,后通过自带的更新工具,更新到了上述版本。

3 问题和方案

刚装完的系统是非常简洁的,毕竟是主打性能的 XFCE 桌面环境。

如果说有什么要吐槽的地方,就是 Whisker Menu 实在是太像 Windows 的 Start Menu 了……

3.1 Shell

Manjaro 虽然预装了 zsh,但默认的 Shell 仍是 bash

首先切换到 zsh,执行命令:

1
chsh -s /bin/zsh

3.2 WiFi 驱动

手里这款华硕的本子,WiFi 模组是 Realtek 的 RTL8821CE,然而这个倒霉公司只提供 Windows 的驱动。

上网一搜,遇到这糟心问题的人还不少,以至于有大佬专门开发了 Linux 版本的驱动。

在 Manjaro 中,直接在软件包管理工具中搜索 rtl8821ce-dkms-git 并安装即可。在安装依赖的 linux-headers 时,会提示用户选择 Linux 版本,这里需要选择正在运行的内核版本,否则驱动可能无法正常运作。

3.3 Nvidia 显卡驱动

Manjaro 默认是不提供 Nvidia 显卡的驱动的,但是提供了安装的脚本,可直接执行下列命令,让脚本自动安装最合适的驱动:

1
sudo mhwd -a pci nonfree 0300

在 2020 年 8 月的一次系统更新后,执行上述命令会提示:

1
2
Dependencies to install: video-modesetting
Proceed with installation? [Y/n]

在输入 Y 并回车后,脚本直接退出,没有任何动作。

经过一番搜索,找到了解决方案,需要手工安装依赖的 video-modesetting

1
sudo mhwd -i pci video-modesetting

依赖安装完成后,再执行一开始的命令安装驱动即可。

3.4 输入法

常规的软件安装不必赘述,这里唯独提一下输入法。

但凡国人写的关于配置 Manjaro 的文章,在介绍安装输入法时,几乎都是 “X 狗输入法”。

个人以为,国内大厂开发的软件,基本等同于流氓软件。因为厂商的作恶成本低,而用户的维权成本高,再加上业界就是这么个风气,谁不搞谁吃亏。

因此这里推荐一款开源的输入法 ——Rime。作者对这个软件的定义是跨平台的输入法引擎,在三个主流系统(Windows/macOS/Linux)上,都有对应的输入法实现。

在 Linux 上,Rime 提供了基于 IBus 框架的实现。

3.4.1 安装

在 Manjaro 软件包管理工具中,搜索并安装 ibus-rime 即可。

3.4.2 设置

在终端中执行 ibus-setup,打开 IBus 的设置界面。切换到 Input Method 页,点击 Add,依次选择 Chinese > Rime,将其输入法添加到列表中。

其他设置,如切换输入法的快捷键,备选字排列方向等,都可以从设置界面中调整。

最后在终端执行如下命令,启动 IBus 的服务进程:

1
ibus-daemon --xim -d

IBus 服务启动后,如果在 Panel 中看到一个蓝色的键盘图标,就表示可以正常使用输入法了。

为了让 IBus 服务在进入桌面环境时自动启动,在目录 /etc/X11/xinit/xinitrc.d/ 下新建文件 90-ibus.sh,并赋予执行权限。

1
2
3
cd /etc/X11/xinit/xinitrc.d/
sudo touch 90-ibus.sh
sudo chmod a+x 90-ibus.sh

然后在 90-ibus.sh 中,输入如下内容:

1
2
3
#!/bin/sh

/usr/bin/ibus-daemon --xim -d

这样,下次进入桌面环境时,就可以直接使用输入法了。

3.4.3 故障排查

启动 IBus 服务后,在大多数应用程序中都可正常使用输入法,唯独在 Telegram Desktop 中无效。

经过一番搜索,找到了原因:由于 Telegram Desktop 是基于 Qt 框架编写的,需要设置环境变量 QT_IM_MODULE=ibus,才可在 Qt 程序中使用输入法。

解决方案:编辑前面创建的 90-ibus.sh,在文件结尾追加如下内容:

1
export QT_IM_MODULE=ibus

3.5 JetBrains GoLand

JetBrains 全家桶也有 Linux 版本,而且体验一点不逊色于 macOS 版本。这里单独提一下 GoLand,是因为遇到了一个小坑。

做过 Go 语言开发的同学应该都知道,如果在项目中引用了第三方程序包,Go 会去环境变量 GOPATH 指定的路径下搜索。通常,我们把这个环境变量定义在 ~/.profile 或者 ~/.zprofile 中就行了。

然而,在 Linux 上(确切的说是在 XFCE 桌面环境下),启动 GoLand 时,它无法读取到这个环境变量。

目前尚未深入研究原因,不过解决方案已经有了:参考输入法章节中,设置 QT_IM_MODULE 环境变量的方法,在 /etc/X11/xinit/xinitrc.d/ 中另外创建一个 sh 脚本,设置 GOPATH 环境变量即可。

4 结语

使用 Linux 桌面系统,是一个在磨合中不断前进的过程,随着不断地发现问题和解决问题,最终会把系统调教调整得越来越顺手。

尽管 Linux 的软件生态差了一些,但已开始呈抬头的趋势,开发工具和办公软件等正在逐渐增多(而且好多还是免费的)。

Linux 桌面系统,正在从一个极客的玩具,逐渐变成具有亲和力的生产力工具。

Linux:全靠同行(Windows)衬托。

5 参考