和 Arch Linux 同行一年多以来的新发现

从去年引进 Arch Linux 以来,我使用笔记本的频率大幅上升,让台式机黯然失色。毕竟,其反应速度和显示效果优于 Windows,操作空间更大(也不时因此陷入多次危机),软件库里也总有一款适合我的工具等待安装。我对它要求不高,只要可以登录并正常打字便可——在此之上,可以适当改进使用体验,于是不时心血来潮整点花样。今天尝试将这些经历记录下来,供读者和将来的自己参考。

一、独立 GPU 的调用问题

虽然我在上集提到“不再需要”那枚 GeForce 940MX GPU,但这给我心里留了个疙瘩:不能调用之,说明我对这个系统的掌控还稍欠火候,为了《Minecraft》总归要努力一下。于是开始了各种软件包的组合调教……

今年稍早时候,我采用了全开源方案:PRIME 和 Nouveau 开源驱动的组合。据 ArchWiki 资料,安装好驱动便万事大吉了,但迄今我仅仅成功调用一次——xrandr 当中出现一次,《Minecraft》调用一次,但帧率非常差,此后没再出现于 xrandr 当中,也不能借由 DRI_PRIME=1 前缀来调用。随后安装了 optimus-manager,此后便撂着不管,在数月间毫无建树。
八月末,我决意换以绿厂闭源驱动 nvidia,同样倒腾了许久:

  • 先是,nvidia-smioptimus-manager 指令均未能发现独立 GPU,后来据内核日志,认为其内核模块未被加载,反而是被在内核之后 GDM 的 X11 引擎加载(后来通过 mkinitcpio.conf 令内核提前加载 nvidia 模块);
  • 再是,当我再一次试图编辑 X11 配置时,系统启动无果(后来认为是 MatchDriver 设置画蛇添足了);
  • 还有,来自软件库的 gdm 其实不支持双 GPU 切换,需要从 AUR 抓取 gdm-prime 进行替换。
  • 最后让 bbswitch 作为 Optimus Manager 的切换引擎,万事俱备。

现在,执行命令 optimus-manager --switch nvidia 以后,可全局启用独立 GPU,不仅在 xrandr --listproviders 当中可观测到,还可被《Minecraft》正常调用;游戏画面流畅,启用 64x 材质的情况下鲜少出现 60 fps 以下的帧率。出于很少玩游戏,以及确保打字时电池续航的缘故,我未启用 hybrid 模式。

顺便带来 xorg.conf 当中对 GPU 之定义——我也不清楚是否跟这个有联动关系,其余由 nvidia-xrun 自动生成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Section "Device"
Identifier "Card1"
VendorName "NVIDIA Corporation"
ChipId 0x134d
ChipRev 0xa2
IRQ 32
BusID "PCI:1:0:0"
Driver "nvidia"
BoardName "Team Green 940MX"
EndSection

Section "Device"
Identifier "Card0"
VendorName "Intel"
Driver "modesetting"
BusID "PCI:0:2:0"
EndSection

二、桌面环境问题

今年三月以前,我采用 Budgie 作为桌面平台。在当时的每周例行更新中,Budgie 突然修改依赖(不用 mutter,改为 mutter43),而既已存在的 GNOME 全家桶依赖 mutter二者被判定为不相容且无法继续更新。我提交了 Issue,被告知“这属于 Arch 的软件包管理问题,与我无关”。我非常不解,他们为何不去适配最新的 mutter,反而把责任推卸出去?遂决定改换桌面,与之割席。
——题外话:他们换了一种方式适配,即另立软件包 magpie-wm,取代 mutter43 作为新依赖。Arch Linux 新闻流中报告了这项需人工干预的依赖破坏事件。这活整得实在不专业……

在剩余选项中,Cinnamon 跟 Budgie 长得最像,主题支持很好,也有许多插件可用;下图就安装了内存占用率监测插件。(GNOME 很多软件不接受我挑的主题,可能要到 GNOME 环境里设置?)更换过程相对简单,进入 GNOME 环境卸载 Budgie、安装 Cinnamon即可。
Cinnamon 载入以后,我发现很莫名其妙的现象:启动 Firefox 和部分 GNOME 软件时要等待数十秒。不清楚是否跟 gdm 有关(其推荐使用 lightdm 作为底层窗口管理器)。 这个问题在九月的一次更新后消失了,感谢社区。

据闻 GNOME 有意放弃对 X11 引擎的支持,我担心又要大动干戈:须知 Cinnamon 尚未支持那个被称作“未来”的 Wayland 引擎。

三、电池管理问题

这个系统最恼人的问题是,在曾经待机(例如合上盖子)的情况下关机后,电池会快速流失电量,一天可衰减近半(Windows 关机后正常);日常使用时,也存在续航时间偏短的问题。
前者目前的方案是,关机后再次开机,来到 GRUB 引导菜单便即行关机,如此电量得以保存。后者自从引入 laptop-mode-tools 之后便明显改善。在查阅资料时发现,一个叫做 TLP tlp 的软件也适用于笔记本电源管理,但不清楚二者是否能够和平共存。

四、软件集与服务的补充和调整

  • 上集所指出的音乐播放器被放弃了(现在有较轻便、可随意倒腾的 Celeron 3965U 单板电脑代劳),从而不再需要 debtap
  • 引进了 Darktable 和 Inkscape,用于色彩要求较低的修图和绘图。(作为 Lightroom 和 Illustrator 的开源替代,功能之完善可谓超乎想象。)
  • 引入 OnlyOffice 以编辑文档。
    • 有了打印之需,遂引入打印机服务 cups 和前台管理器 system-config-printer
  • 引进了微软 Edge 浏览器。Chrome 系列跟 Firefox 对某些网页的预览效果有些微差异,有的插件(如购物比价)也仅支持前者,故找来这么条鲶鱼。
  • 针对早前 GNOME 全家桶启动缓慢、主题我行我素的问题,我引进了 X-apps 软件集(收录于仓库的不多,只有阅读器 xreader 和记事本 xed以及压缩软件 xarchiver、看图软件 geeqie、计算器 galculator 等作为替代。
    • 同时显性引入 p7zipunrar 以处理对应压缩包。
  • 引进了形如 Total Commander 的双列表文件管理器 gnome-commander
  • 引入二进制编辑器 ghex
  • Budgie 本身可以管理蓝牙连接,而 Cinnamon 则不能,遂引进 blueman
  • 引进了翻译软件 pot-translation,便于翻译时参考机器翻译结果。
  • 引进了文件搜索程序 catfish
  • 为《Minecraft》准备了 Java 环境 jre17-openjdk。其实启动器会自行下载整套环境,故必要性不大,但好处是更新得快。
  • Visual Studio Code 在此分为多种发行版本:一方软件源的 code,Arch CN 软件源的 code-transparentvscodium-bin,还有 AUR 里的正牌 visual-studio-code-bin…… 用户体验上的差别似乎仅在于插件源:code 需要额外安装 code-marketplace 方可接入微软插件源,但这无伤大雅。遂选用 code
  • 启用了服务 fstrim.service,以便优化固态盘。(准确地说是个计划任务?)
  • 启用了服务 nfs-client.target,以便连接 NFS 共享。 其实毫无用处,一方面 Cinnamon 未提供 NFS 共享的连接选项,另一方面 Samba 足以承接文件共享的任务。

五、美化

上篇用的主题是 Adwaita,尽管模样尚可,但我希望采用统一、深邃且五彩斑斓的深色模式,图标包也应当适配 Cinnamon——设置页里有很多空缺的图标,总归是不舒服的。Cinnamon 和 Budgie 有许多东西和 GNOME 相通,一般 GNOME 主题包对此二者也适用。最终决定选用 KimiFluent11 作为主题和图标包。鼠标样式则采用 ArcMidnight

给 Linux 桌面环境美化相当简单自然:设置里按两下任意切换主题,这个桌面看腻了也可以换成旁的桌面,不似 Windows 处处设限。

至于桌面背景,我相对推崇的有:

六、展望

现在的系统不能自动检测 HDMI 显示器的接入并输出画面;据现有资料,输出画面需要通过复杂的 xrandr 命令指示,而现有的简化手段似乎都不能实现自动检测;那至少让我能够用简化指令来输出罢,遂引入 mons。等哪天购得外置显示器再谈。

电池使用已届两年;电池老化可能是电源管理问题的成因之一,考虑更换,但估计治标不治本。

目前触摸板既不支持多指手势,也会在打字时误触惹祸。Touchégg 似乎不支持我的设备,有待日后探索。