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 | Dependencies to install: video-modesetting |
在输入 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 | cd /etc/X11/xinit/xinitrc.d/ |
然后在 90-ibus.sh
中,输入如下内容:
1 |
|
这样,下次进入桌面环境时,就可以直接使用输入法了。
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)衬托。