Arch Linux配置cinnamon桌面与常用应用

注:官方源的软件包用角标pkg标注;archlinuxcn社区源的软件包用角标cn标注;arch4edu源的用角标edu标注;来自AUR的软件包用角标aur标注,并且附上AUR地址的链接,便于查看源码。
涉及到ArchWiki的只贴英文链接啦,反正英文界面可以很简单地跳转到中文版的

配置的最终效果应该类似这样:

配置的起点是一个只执行了最基本安装的,只有root用户的最基本Arch Linux系统,主要的配置类似上一篇文章中的安装过程。

下面正文开始。

安装桌面环境之前

这部分配置应该是无论安装什么桌面环境都需要做的。

0.确保系统为最新

1
pacman -Syu

滚动更新的系统最新的才是最稳定的。

1.配置普通用户

1
2
useradd -m -G wheel -s /bin/bash myusername #添加一个名为myusername的用户,指定登录shell为bash,并添加到wheel用户组
passwd myusername #为新用户设置密码

Arch Linux似乎约定俗成的把wheel用户组作为特权组给予sudo权限;如果想像其它发行版一样使用sudo用户组当然也是可以的。

然后还需要配置sudo权限:

1
EDITOR=vim visudo

使用EDITOR环境变量指定编辑器是不可省略的;visudo命令默认使用vi编辑器,但是咱没安装,因此如果不指定编辑器就会执行失败。编辑器可以换为nano等等,前提是安装了它。

定位到图示的行(在文件的最后),然后取消注释。

这三行分别表示:

  1. wheel用户组赋予sudo权限
  2. wheel用户组赋予sudo权限,并且无需输入密码
  3. sudo用户组赋予sudo权限

挑选想要的其中一行取消注释即可。
另外,还可以在文件中添加这样一行:

1
Defaults pwfeedback

添加后sudo输入密码时会以星号(*)回显,而非像通常那样什么都不显示。

之后可以exit退出root用户,然后重新登录到非特权用户;也可以使用su -l myusername直接切换用户。

2.安装AUR助手

通常最常见的选择是yaycn/aur或者parucn/aur,archlinuxcn社区源已经打好了包,直接安装即可:

1
pacman -S paru
  1. 个人更喜欢paru;但是从交互体验来看yay的反馈可能会更好些;
  2. Arch Linux更希望用户能手动从AUR安装一遍,熟悉手动打包的过程:
    1
    2
    3
    git clone https://aur.archlinux.org/paru.git --depth 1
    cd paru
    makepkg -si
  3. 出于安全原因,makepkg命令和AUR助手均会拒绝直接在root用户下运行,所以记得切换用户。

通常来说,一个开源软件包foo会在AUR上存在至少三种分支:

  • foo:使用发布版本的源码包编译安装(源码包从release里面下载)
  • foo-bin:直接打包上游编译好的二进制包
  • foo-git:从git拉取最新的源码编译安装

其它后缀的阅读包描述可以看出。通常情况下,-bin因为是现成的二进制文件,只需要解压然后重打包,安装速度最快;源码编译的则会兼容性更好,并且如果动态链接了系统依赖,可能一定程度节省硬盘空间(比如相比于一堆包一人打包一个electron,全部共用系统的electron库明显更节省空间)。
另外,yay是go语言编写的,国内网络环境可能会拉取依赖困难。yay-bin就能避免这一问题。

pamac是Manjaro团队开发的另一套辅助性的包管理软件,在Manjaro系统中默认预装,ArchLinux也可以从AUR中获取到;
pamac提供了另一套不同于pacman的命令,命令的整体特征更类似于apt等常见的包管理器(例如pamac install foo等等),命令的用法参照Manjaro Wiki - pamac (此wiki的汉化约等于没有)
此外pamac也提供了图形化操作界面,预览同样可以在前述的wiki界面找到。
下面列出在AUR中pamac不同包的区别:
pamac-cli –只提供命令行;
pamac-aur –提供图形界面,包含基本的软件包和AUR包支持;
pamac-flatpak –提供图形界面,在上一个的基础上增加了flatpak支持(需要自己配置安装flatpakpkg);
pamac-all –提供图形界面,在上一个的基础上增加了snap支持(需要自己配置安装snapdaur);

3.关于显卡驱动

Linux内核已经集成了至少能亮机的modesetting驱动,所以驱动可以先不装;配置好能正常点亮的桌面,然后把快照等措施准备好了,再来大战驱动也不迟。
另外由于咱目前还只是在虚拟机做的测试,就不写驱动的配置啦,三家显卡分别参考各自的wiki就好了(包括核显):
IntelNVIDIA
AMD: 先参考 这里 根据显卡架构确定安装的驱动类型,然后参考 AMDGPUATI由于RX400系已经属于GCN4架构了,现在能见到的常见A卡只要比RX400系新,就装AMDGPU就行

安装开源的open-vm-tools以及必要的驱动,然后启动相应的服务:

1
2
3
pacman -S open-vm-tools xf86-input-vmmouse xf86-video-vmware mesa
systemctl enable --now vmtoolsd.service
systemctl enable --now vmware-vmblock-fuse.service

如果主机和客户机间复制粘贴功能无法正常工作,尝试安装gtkmm3pkg

3.5.大战NVIDIA驱动(2025年6月8日更新)

在N卡物理机上安装时(配置为RTX2080Ti),由于当前版本的mesa/nouveau驱动链有一点问题(无论安装xf86-video-nouveau还是使用默认的modesetting驱动都一样),xorg会启动失败,需要稍微经过一点配置才能亮机;但是反正N卡最后要换到nvidia驱动的,因此这里并不值得单独为了nouveau折腾一通,直接上得了。

  1. 先确认自己的显卡架构;咱整理了一份简单的表:
    架构名 代表型号(只收录常见的)
    Maxwell GTX745, 750, 750 Ti; 8系9系全系; GTX Titan X
    Pascal 10系; Titan X和Titan Xp
    Volta Titan V和V100
    Turing 16系和20系; T4
    Ampere 30系; A100
    Ada Lovelace 40系; L40
    Hopper H100
    Grace Hopper GH200
    Blackwell 50系; B200
    比Maxwell更老的架构已经不受NVIDIA支持;建议根据ArchWiki自行选择,是安装不受nv支持但是可能图形性能更好的旧驱动,还是使用xorg社区支持的nouveau。

    Nvidia不再积极为这些显卡提供驱动。这意味着这些驱动不正式支持现在的Xorg版本。因此使用 Nouveau 驱动可能会更方便,因为它依然为这些老显卡提供对当前Xorg的支持。但是,Nvidia 提供的 legacy 驱动依旧可用,并且或许拥有更好的 3D 性能(稳定性)。

  2. 根据显卡架构和系统内核,选择合适的驱动分支:
    • 从Maxwell到Hopper之间的GPU受nvidia闭源驱动分支支持:
      linuxpkg内核:使用nvidiapkg
      linux-ltspkg内核:使用nvidia-ltspkg
      其它内核:使用nvidia-dkmspkg
    • 从Turing到最新的所有GPU受nvidia-open开源驱动分支支持;且在两个分支都支持的情况下,nv建议使用开源驱动:
      linuxpkg内核:使用nvidia-openpkg
      linux-ltspkg内核:使用nvidia-open-ltspkg
      linux-zenpkg内核:使用nvidia-open-zencn
      其它内核:使用nvidia-open-dkmspkg

    dkms驱动会在每次更新内核或者驱动的时候,动态地把驱动编译成相应的内核模块;务必确保安装了内核相应的headers头文件。
    在咱的e3 1230v2物理机上,对每个内核的dkms编译,需要cpu满载大约4~5分钟;如果不用dkms可以省出一些时间和电费。cpu性能好的话,cpu火力全开应该会很快,所以根据实际需求了。

    目前咱使用的配置是只安装nvidia-open-dkmspkg,它会在安装后为zen和lts两个内核分别动态编译;正在考虑切换成nvidia-open-ltspkg和nvidia-open-zencn,等待验证是否可行。

  3. 根据选择的驱动分支安装驱动包以及必须的其它支持:nvidia-utilspkg提供了大部分图形功能的必要组件,包括OpenGL和Vulkan的支持;lib32-nvidia-utilspkg用于支持32位应用(例如steampkg
    1
    pacman -S nvidia-open-dkms nvidia-utils lib32-nvidia-utils

    nvidia-utils软件包包含一个文件,其将会在重启后屏蔽 nouveau 内核模块。

  4. 安装完毕后,重启,然后使用nvidia-smi命令确定驱动是否正常运行。
  5. 此时xorg应该已经可以正常运行了。对于x11(cinnamon桌面目前仍然默认使用x11,wayland模式仍在测试中),为了便于配置,进行下面步骤:
    • 执行:
      1
      nvidia-xconfig

      该命令会自动检测并根据现有硬件的情况创建(或修改)/etc/X11/xorg.conf

    • nvidia-settingspkg提供了一个图形界面。
      1
      pacman -S nvidia-settings

      似乎wayland下还不支持使用这个工具。

      更多x11配置以及wayland配置参见ArchWiki

4.优化AUR编译参数

编辑/etc/makepkg.conf,主要做三个方面的修改:

  1. 启用多核编译:
    定位到MAKEFLAGS处,取消注释,并把-j2改成需要的线程数(这里咱给虚拟机分配了6核)。有一种说法是,如果希望CPU能彻底吃满,应当设定成比CPU线程数多1的超负荷。所以咱最终给了-j7

  2. 更改软件包的压缩格式:
    默认情况下打好的软件包使用兼顾速度和压缩率的zstd压缩格式(Arch官方的pacman源也使用这种格式),这里只列举两种极端需求。两种需求均是定位到PKGEXT处。

    • 对速度有极端需求,不介意占用空间的:直接不压缩
    • 对硬盘空间有极端需求,不介意压缩和解压速度的:改用xz压缩格式
  3. 阻止生成debug包:
    正常情况下,makepkg会生成一个正常包和一个debug软件包;对于普通用户而言,debug包没有任何意义,因此取消掉以节省时间:
    定位到GLOBAL PACKAGE OPTION处,然后把最下面的括号中的debug前面加上!

cinnamon桌面环境

1.安装桌面环境和中文字体等必要组件

安装cinnamonpkg桌面本体以及一些属于cinnamon的软件:

功能 应用
文字编辑器 xedpkg
图片查看器 xvieweraur
文档阅读器 xreaderpkg
媒体播放器 xplayeraur
图像管理器 pixaur
1
pacman -S cinnamon xed xreader gnome-terminal

这里AUR包先不装,由于AUR包的发布特点无法做镜像站,因此总会遇到点网络问题,所以先去基本的桌面解决了网络问题再回来整这些。

当Cinnamon发生崩溃事件时, 会激活其后备模式。要控制此模式下打开的窗口,需要安装metacity软件包以及gnome-shell以显示任务栏。

但是存在两个问题:

  1. 信息矛盾:参见cinnamon包页面, 被标记为可选依赖,并提供”fallback mode”的包是metacity和gnome-panel,而不是gnome-shell;
  2. 引入大量无关依赖:无论是gnome-panel还是gnome-shell,均会引入大量gnome桌面相关的依赖(甚至包含gnome-desktoppkg,然后再间接引入nautiluspkg等等一大堆gnome应用)。

综合考虑这些信息,并去Linux Mint预装的软件包中一顿搜索后,咱决定只安装metacitypkg,等触发了后备模式再看看能不能正常运作。

1
pacman -S metacity

然后安装一些常见的开源字体:

1
2
pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei
pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra

中文字体的设置只能通过配置文件;如果不想在这上面花时间,就只安装一套字体(下文的微软字体也不配置)。例如,如果想开箱就有类似mint的字体,就只安装第二行的noto一系。

当然还有cinnamon的语言包:

1
pacman -S cinnamon-translations

在这里直接把ntfs-3gpkg安了,提供ntfs文件系统的完整支持:

1
pacman -S ntfs-3g

1.5.微软字体

参考ArchWiki
只建议把Windows的字体文件复制到Linux系统下,不建议使用软链接;因为按照咱的使用习惯,咱并不喜欢开机自动挂载Windows分区(甚至希望尽量完全避免挂载Windows系统盘分区)。
首先挂载Windows的系统盘(这里考虑直接挂载到/mnt目录,并假设Windows的系统盘分区是/dev/nvme0n1p3)。

1
2
3
#以下两行二选一
mount -t ntfs3 /dev/nvme0n1p3 /mnt #使用内核自带的ntfs3驱动挂载必须显式指定
mount /dev/nvme0n1p3 /mnt #在安装ntfs-3g后会默认使用ntfs-3g驱动

然后复制相应的字体文件到对应目录,并设定好权限:

1
2
3
4
mkdir /usr/local/share/fonts
mkdir /usr/local/share/fonts/WindowsFonts
cp /mnt/Windows/Fonts/* /usr/local/share/fonts/WindowsFonts/
chmod 644 /usr/local/share/fonts/WindowsFonts/*

最后重新生成字体缓存:

1
fc-cache --force

以及卸下挂载的Windows分区:

1
umount /mnt

2.startx启动桌面环境

安装启动图形环境的脚本:

1
pacman -S xorg-xinit

然后使用脚本启动桌面环境(此处应切换到非root用户):

1
2
startx /usr/bin/cinnamon-session #启动常规的cinnamon桌面
startx /usr/bin/cinnamon-session-cinnamon2d #或者,启动遇到问题时,启动禁用图形加速的cinnamon桌面

初始状态下的cinnamon真的很丑:

xinit的更多用法参考ArchWiki
使用这个脚本启动桌面可以绕开桌面管理器(以下简称dm),在桌面崩溃的时候,可以使用这个脚本排除问题(xorg/dm/桌面三者均可能出问题,用这个可以排除dm的问题,不过大部分时候都是xorg在抽风
这里不装dm还有一个比较难绷的理由,曾经有一段很长的时间,lightdm-slick-greeterpkg这个包是坏的或者只是单纯是咱那会wiki没看全没配置对,启动lightdm会无法显示登录界面;而这个greeter是mint主题的默认登录界面,而且有些mint相关的应用程序直接硬依赖这个greeter,因此只能去AUR里面取两个包曲线救国: lightdm-slick-greeter-mint-themeaurlightdm-guestaur。不过现在这个包已经好了,所以跳过xinit环节也行,但是咱还是更喜欢留着xinit脚本在排查故障的时候用。

2.5.一点必要的小手段

AUR是源码发布机制,从源码可以发现很多开源包的source是直接从github上面拉的,所以难免遇到网络问题,需要一些必要的小手段。
pacman上面有一些已经打包好的客户端可以直接用(善用pacman -Ss多做搜索)。
总之就是现在有了一只可爱的小猫来解决网络问题:

3.安装桌面管理器

1
pacman -S lightdm lightdm-slick-greeter

lightdm-guestaur: 除了提供lightdm本体外,额外支持访客用户登录。
lightdm-slick-greeter-mint-themeaur: 额外提前设置好了一些选项,具体参考AUR页面的置顶评论。这个包强制依赖lightdm-guestaur。由于这个包还会使用wget命令下载当日的微软壁纸并设置为锁屏壁纸,因此确保系统安装了wget否则会打包失败。
如果使用了这两个包,下面的配置greeter可以不做,这两个包会自动配置好。

然后还要配置greeter:编辑/etc/lightdm/lightdm.conf,找到[Seat:*]模块,然后修改greeter-session变量,就像这样:

1
2
3
[Seat:*]
...
greeter-session=lightdm-slick-greeter

这个配置过程不是可选的,不设置的话会导致greeter无法启动,如果配置了自动登录会无法切换用户,如果没配置自动登录就会直接导致lightdm启动失败。
但是作为lightdm默认的lightdm-gtk-greeter例外。

最后把lightdm设置为开机自启,由于现在还开着桌面就不立即启动lightdm了:

1
systemctl enable lightdm.service

4.设置中文

编辑/etc/locale.conf,把LANG=en_US.UTF-8改为LANG=zh_CN.UTF-8
但是这样修改之后,tty终端就会试图显示中文(但是只会显示菱形方块),当桌面崩溃需要tty救急时这会导致tty输出完全不可读。
所以在/etc/profile.d/路径下新建一个空文件,取一个喜欢的名字(例如tty-en.sh),然后填入以下内容:

1
2
3
4
5
6
7
8
9
10
# Set tty English

for ttyi in {1..6}; do
if [ "$(tty)" = "/dev/tty$ttyi" ];
then
export LC_ALL="en_US.UTF-8"
export LANGUAGE="en_US.UTF-8"
export LANG="en_US.UTF-8"
fi
done

这会当检测到窗口处于tty时,把语言设为英文。添加在这里和把代码追加在/etc/profile文件中等效,并且对所有用户生效。

mintlocaleaur会在cinnamon桌面的设置菜单中添加一个语言设置菜单,允许设置当前用户或者所有用户的语言,其中设置所有用户时会修改/etc/locale.conf
这个包无论在什么语言环境下安装,最终菜单都会以英文显示,无法完美的像原生Mint系统下变为中文菜单。

完成设置语言之后重启计算机。

1
reboot

重启后就能看到登录界面了:

为防止系统用户出现在登录界面,安装可选依赖accountsservicepkg, 或者把这些用户名添加到/etc/lightdm/users.conf下的hidden-users里。前者优势在于添加/删除用户时不用更新列表。

4.5.配置自动登录:

编辑/etc/lightdm/lightdm.conf,同样找到[Seat:*]模块,然后修改autologin-user变量,改为想要自动登录的用户名;
然后还需要确保自动登录的用户在autologin用户组中:

1
2
groupadd autologin #创建autologin组
gpasswd -a username autologin #把用户username添加进去

或者可以使用cinnamon桌面的图形化设置操作用户组:

5.cinnamon配置

terminal

编辑首选项,把字体改为source code pro且大小为10号,颜色主题改为Tango 暗色

桌面与主题

安装以下包:

包名 内容
bibata-cursor-themeaur 鼠标指针
mint-y-iconsaur 图标主题
mint-artworkaur 壁纸和开始菜单图标,顺便绑定了一堆mint常用的主题、字体等等

事实上,mint-artworkaur已经包含了bibata-cursor-themeaurmint-y-iconsaur作为依赖,因此直接安装mint-artworkaur即可。

1
paru -S mint-artwork

全部安装完成之后,进入系统设置,主题菜单已经发生了变化:

点开高级设置展开可以看到以前的界面,然后做一些想要的调整就行。

此外还有壁纸:

调整一下字体(pacman -S ttf-dejavu):

到这一步后,基本的设置大体完成,但是中文字体似乎还没统一。针对中文字体的更详细配置参考ArchWiki

此外,还有一份 半透明主题 可以安装:

1
git clone https://github.com/licyk/cinnamon-theme-transparent

然后把三个主题文件夹放在~/.themes/(对单用户生效)或者/usr/local/share/themes/(对所有用户生效),之后就可以使用了。

不通过包管理器而是自行安装的东西都放在/usr/local/目录下。

“开始”菜单

在左下处右键,然后选择配置:

勾选“使用自定义图标和标签”,根据图示选图标,文本删空:

6.补齐系统应用

到这一步,cinnamon桌面的外观已经基本没有问题了,但是系统设置里面还缺少了很多项。
(左ArchLinux, 右LinuxMint22.1)

接下来逐一补充。

  1. 输入法:与apt高度耦合,无法补充,自行配置。
  2. 语言:安装mintlocaleaur
  3. 在线账户:安装gnome-online-accounts-gtkaur
  4. 磁盘:安装gnome-disk-utilitypkg
  5. 打印机:安装system-config-printerpkg
  6. 蓝牙:安装bluemanpkg
  7. 驱动管理和软件源:与apt高度耦合,无法补充,自行配置。
  8. 防火墙:安装gufwpkg
1
paru -S mintlocale gnome-online-accounts-gtk gnome-disk-utility system-config-printer blueman gufw

其中大部分应用安装即可使用,但也有一些只是前端窗口,使用需要额外配置后台服务(如打印机可能需要配置cupspkg

此外还有一些其它的系统软件:
重要的:
nemo-filerollerpkg: 压缩与解压文件,同时提供Nemo文件管理器的右键压缩与解压支持
其它的Linux Mint预装软件:

软件 在Arch Linux的包名
归档管理器 file-roller-linuxmintaur取代默认的gnome主题的fileroller;留意fileroller的可选依赖,其中包含对其它各种压缩格式的额外支持,自选安装
便笺 stickyaur
磁盘使用情况分析器 baobab-gtk3aur
电源统计 gnome-power-managerpkg
计算器 gnome-calculator-gtk3aur
截图 gnome-screenshotpkg
密码和密钥 后端gnome-keyringpkg,前端seahorsepkg
日历 gnome-calendarpkg只有gnome版,没有与cinnamon契合的旧版咱自己移植了一下,目前能用,仓库地址 gitee / github
书库 thingyaur
网络电视 Hypnotix hypnotixaur或者hypnotix-waylandaur
文档扫描仪 simple-scan-linuxmintaur
文件重命名工具 bulkyaur
系统监视器 cinnamon版本gnome-system-monitor-linuxmintaur显示效果更好,但是gnome版本gnome-system-monitorpkg在系统参数页面多显示一项磁盘读写速度
字符映射表 gucharmappkg
Web应用 webapp-manageraur

未列在此表中的内容:
libreoffice全家桶,以及下图:

电源模式(平衡,节能,以及只在部分设备开放的高性能)由power-profiles-daemonpkg提供。

搜索时优先寻找gtk3后缀的AUR老版本,通常会跟cinnamon桌面的契合度更高。

错误日志:

1
2
3
4
5
6
7
8
Dependency glib-2.0 found: YES 2.82.4 (cached)
Program /usr/bin/glib-mkenums found: NO

gnome-system-monitor/src/meson.build:79:22: ERROR: Dependency 'glib-2.0' tool variable 'glib_mkenums' contains erroneous value: '/usr/bin/glib-mkenums'

This is a distributor issue -- please report it to your glib-2.0 provider.

A full log can be found at /home/lasombra/.cache/paru/clone/gnome-system-monitor-linuxmint/src/build/meson-logs/meson-log.txt

解决方案:安装glib2-develpkg

关于应用主题的另一种方案:AUR搜索libadwaita-without-adwaita, 当前的包名为libadwaita-without-adwaita-gitaur, 但是根据规范该包不应该带有-git后缀。因此后续可能改名。
用这个包替换掉原生的libadwaita后,直接安装gnome应用也能融入桌面,不再会出现“一股gnome味”的情况。
对比:

gnome-system-monitorwithout-adwaitagnome-system-monitor-linuxmint

7.挂载硬盘设置

还有一个问题:Nemo挂载硬盘时,会要求输入密码,而不是像mint一样直接挂载:

Nemo挂载硬盘使用的是udisks2服务,因此在Nemo中挂载硬盘等价于:

1
udisksctl mount -b /dev/nvme0n1p1

需要配置一项放行规则:

1
2
3
4
5
6
7
8
9
10
/* 把这个文件复制到 /etc/polkit-1/rules.d/allow-mount-internal.rules */

polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
action.id == "org.freedesktop.udisks.filesystem-mount-system-internal") &&
subject.local && subject.active && subject.isInGroup("storage"))
{
return polkit.Result.YES;
}
});

这个规则会给用户组storage中的用户放行挂载;然后还需要把用户添加到storage组中。把规则中的用户组直接给wheel组也行。
或者,按需取用这份更详细的规则

此外,默认会把硬盘挂载到/run/media/<username>目录下,路径太长很不优雅,添加这份配置可以把挂载目录改为/media
文件路径:/etc/udev/rules.d/99-udisks2.rules

1
2
3
4
5
# UDISKS_FILESYSTEM_SHARED
# ==1: mount filesystem to a shared directory (/media/VolumeName)
# ==0: mount filesystem to a private directory (/run/media/$USER/VolumeName)
# See udisks(8)
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"

更多设置项参见ArchWiki-udisks

8.家目录

现在的家目录下只有“桌面”一个文件夹。
xdg-user-dirspkg可以帮助创建一套默认的家目录文件夹。

1
2
sudo pacman -S xdg-user-dirs
LC_ALL=C.UTF-8 xdg-user-dirs-update --force #强制让目录为英文命名;不然当心在特殊情况下输不了中文路径

此外还有一些少量的自定义配置参见ArchWiki
Nemo的侧边栏可以一个一个手动添加,并且可以把侧边栏单独重命名成中文而不影响实际路径。

安装桌面之后

1.常用软件

浏览器

开源的:firefoxpkg,chromiumpkg
闭源但是常用的:microsoft-edge-stable-binedu,google-chromeedu,或者在AUR上获取更新更快的版本以及beta测试版等等(arch4edu源通常同步会慢些)

下载器

主力: freedownloadmanageraur
FDM浏览器插件: edge/chrome (需要科学上网),firefox

2025年6月8日更新:fdm无法启动,在命令行中输入fdm执行,报错日志为:

1
2
3
4
5
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, wayland-egl, wayland, xcb.

解决方法:安装xcb-util-cursorpkg

1
sudo pacman -S xcb-util-cursor

备用:motrixaur
Motrix上次更新时间已经是2023年5月,有一个现在持续维护的fork版imfileaur

微信/QQ

为了避免扫盘,可以使用flatpak精细地控制权限。 flatpak配置指南 以及SJTU镜像源
个人喜欢直接使用简单版本。

软件 纯净版(简单破事少) 沙盒版(使用bubblewarp做简单的沙盒隔离,但是系统文件访问可能不便,例如收发其它目录的文件) 备注
QQ linuxqqaur linuxqq-nt-bwrapaur 直接去官网下载appimage版也可运行;还有 基于portable的另一种沙盒版 可选
微信 gitee / github wechat-universal-bwrapaur以及备用的github仓库 直接去官网下载appimage版也可运行; 2024年12月,AUR上的微信包所有权争夺撕了很久,最终留下了一地鸡毛;现在的Kimiblock维护者维护的版本引入了一大堆无用依赖,不建议使用

文本编辑器

cinnamon桌面配套的xed已经可以满足基本的需求;

官方仓库里的codepkg是对 开源vscode仓库 编译而来,可能不包含一些微软增加的功能;由微软发布的版本可以通过visual-studio-code-binaur安装。

轻量的文本编辑器,notepadqqpkg本来是个好选择,但是该项目最后一次有实质的更新已经是2021年的事了,而现在的版本在ArchLinux中会频繁闪退;降级之后似乎可以稳定运行,或者根据 github issue ,禁用自动保存可以解决闪退问题,但这需要在启动后15s之内完成设置;

notepad--( gitee / github )曾经是个开源的文本编辑器,但是现版本已经转向闭源;notepad---gitaur从git拉取开源的版本然后编译安装,目前还算好用,但是UI内鼠标指针会变,跟系统鼠标指针不一致;

notepadnext 是个很有潜力的好项目,可惜现在还不支持转换文件编码。

  • 降级到2.0.0beta-1:可以直接使用下文软件包降级的downgrade脚本。以root权限运行:
    1
    downgrade notepadqq
    然后在跳出的页面选择2.0.0beta-1版本即可。下载可能有困难,准备好网络加速或者多尝试几次;
    最后downgrade脚本会提示是否把降级后的包加入IgnorePkg,选择y加入,阻止滚动更新的时候被升级回去。这个修改会保存在/etc/pacman.conf里面。
  • 降级到1.4.8-6或者更早的版本(2.0.0beta-1如果上述方法失效也可以采用这种方式):旧版的包由于年代过于久远,签名已经失效,因此获取官方的PKGBUILD仓库自己重新编译打包:
    1
    2
    3
    4
    git clone https://gitlab.archlinux.org/archlinux/packaging/packages/notepadqq.git #获取仓库
    cd notepadqq
    git checkout 1.4.8-6 #切换到需要的版本
    makepkg -si #获取依赖,打包,安装
    为了避免失效,咱在 gitee 上镜像了一份这个仓库,作为备份地址。以及原始仓库的备份:notepadqq CodeMirror

其它软件多在AUR上面搜索基本都能搜到。

2.脚本update-grub

在Debian/Ubuntu系统上,修改了grub配置后只需要简单地以sudo权限运行:

1
update-grub

就可以完成配置更新,但是Arch上面却需要:

1
grub-mkconfig -o /boot/grub/grub.cfg

实际上update-grub就是一个简单的脚本,因此可以很简单地移植过来:
可以直接安装update-grubaur包来实现,或者手动创建这个脚本:
/usr/local/bin目录下,以root权限创建文本文件,命名为update-grub,然后把权限设为755(所有者可读、写、执行,其他用户可读和执行):

1
chmod 755 /usr/local/bin/update-grub

然后填入以下内容:

1
2
3
#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"

保存即可。

3.timeshift快照

安装:

1
pacman -S timeshift

timeshift快照分为两种类型,在页面上都有介绍,这里提取其中的几个关键要素:

快照类型 特点
RSYNC 适用于任何文件系统,不依赖文件系统特性;基于全盘复制,因此占用空间较大,但是可以把快照储存在非系统盘上;第一次快照的时候是完全复制整个系统,此后的快照中与前面的快照相同的文件使用硬链接保存,不同的文件直接复制。快照占用的空间一经创建就确定下来;可以精细地选择需要快照和不需要快照的文件夹
BTRFS 仅适用于btrfs文件系统,且仅支持@@home的子卷布局;由于基于文件系统,因此只能把快照储存在同一个盘上;快照在刚刚创建的时候不占据任何空间,随着系统本身的文件和快照的差距越来越大,占用的空间也越来越大,但是占用的空间一定不会大于RSYNC类型。

按照页面向导操作即可,其中定期快照需要启用cron服务:

1
systemctl enable --now cronie.service

或者,根据 ArchWiki ,安装timeshift-systemd-timeraur可以替代cron服务。

此外,timeshift-autosnapaur提供了一个钩子,可以在检测到pacman执行了更新操作时,在更新前创建一份快照。
但是注意,使用AUR助手更新时,来自AUR的软件包是逐一打包安装的,因此每有一个AUR包被更新就会创建一个快照;不过不必担心空间不足,两份快照由于绝大部分内容是一致的,因此几乎不会占用额外的空间;适时清理即可。

btrfs快照

  • 配置btrfs快照之后,检查/etc/fstab文件,如果存在subvolid项则去除:回滚快照后subvolid会发生变化,这一项的存在会导致系统盘无法正确挂载;只靠subvol名称已经足以让系统分辨子卷;

    在2025.02.01镜像中,genfstab脚本生成的fstab文件已经不再会包含subvolid项。

  • 由于/boot分区并不属于btrfs文件系统的一部分,因此回滚快照的时候不会跟着回滚;有时候这会导致/boot分区的initramfs内核版本与系统linux内核版本不一致,从而导致进不去系统。

    内核日志会输出Failed to mount /boot一类的日志,如果使用journalctl -xb查看具体日志,会看到unknown filesystem type 'vfat' error报错。通常情况下,这会导致无法进入图形界面,而是只能启动到emergency mode。

    解决办法是,在回滚快照后,重启计算机之前,立即执行以下两项中的一项:
    1
    2
    mkinitcpio -P #保守的选择:重新生成全部initramfs,这样就与系统内一致了;也可以使用mkinitcpio -p <内核名,例如linux>只生成其中一个内核的,然后启动的时候选择这个内核
    pacman -Sy <内核,例如linux> <相应的头文件,例如linux-headers> #激进的选择:先把其中一个内核更新了,这会在更新的同时为这个内核生成initramfs;然后启动的时候选择这个内核
    如果重启的手速太快,忘记执行这些,导致进不去系统的话,就只能用liveCD启动,挂载硬盘,然后arch-chroot进去执行。不过这时由于/etc/fstab是完好无损的,可以只挂载根分区,chroot后执行mount -a一次性挂载上所有分区。
  • grub-btrfspkg提供了一项独特的功能:开机的时候直接引导进入快照。
    如果安装了timeshift-autosnapaur,则这个包会在自动创建快照的同时,更新grub配置文件。
    手动增删快照后也要刷新一次grub配置以让启动列表中的快照列表与实际的快照一致。
    启动到快照的时候,同样要注意/boot分区挂载的问题;不同的是,/boot分区只有一份,不可能让其中的initramfs放弃跟随系统盘,去跟快照中一致。因此,要直接启动到快照,必须确保目标快照中的内核版本与当前系统的内核版本一致。
    一个保险的方法是在执行pacman -Syu之前,先单独更新一个内核(例如pacman -Sy linux-lts linux-lts-headers);然后重启到这个内核;
    或者在滚的时候忽略其中一个内核的更新(例如pacman -Syu --ignore linux-lts,linux-lts-headers);重启后确认无问题再启动到这个内核。

    通常其实没必要这么谨慎。Arch Linux现在的稳定性已经很强,滚挂进不去系统已经是非常少见的了;而且即使挂了,在手头有USB启动盘的情况下,启动到liveCD然后使用arch-chroot进入系统执行修复永远是最直接最有效的方法。

  • 如果最初分区的时候,不为/boot单独分区,则以上两个问题均不存在;但是这样就没法让grub菜单记住上次选择的启动项。取舍在这。

如果一个子卷内存在活动的swap文件,btrfs会拒绝对这个子卷快照;所以务必确保为swap文件单独准备了一个子卷(例如@swap

4.缩短关机等待时间

有时候关机时可能会出现类似A stop job is running for...(1m30s)这样的提示,这是因为有的进程在关机的时候没有主动停止,需要等待90秒超时强制关闭。
90秒的时间太长了,可以缩短到30s;这个时间足以多数应用正常关闭了。

Linux Mint 22.1版本把这个时间缩短到了10s”,非常激进。这里附上相应的配置文件,Arch Linux也可以考虑用这种在/etc/systemd/system.conf.d/目录下新建文件的方式,避免直接修改系统文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# To override these values, create your own file in /etc/systemd/systemd.conf.d/60_custom.conf.
# Reload configuration with "sudo systemctl daemon-reload"
# Test with "systemctl show"

[Manager]

# Reduce shutdown timeout from 90s to 10s.
# If you rely on important tasks to successfully finish during the shutdown sequence, set the timeout to something greater than 90s.
DefaultTimeoutStopSec=10s

# Rationale:
# This is done for the following reasons:
# - 90s is too long for users to wait (they think it's hanging indefinitely, and they eventually just use their power button)
# - Cups, minidlna have made this a buggy mess for years now and there's no sign of improvement for the near future
# - This is a workaround many people have used in Mint, Ubuntu, Arch, Fedora and many other distributions, although reducing the start
# timeout is known to possibly affect the journal, no adverse effects were reported after reducing the stop timeout.
# - For our audience (desktop users), this makes a lot of sense. It would be different for a server, or a machine which relies on shutdown
# scripts to perform important tasks, but for most people this fixes a very important issue and is unlikely to create new ones.

修改方法:编辑/etc/systemd/system.conf,找到DefaultTimeoutStopSec项,取消注释并改为想要的时间(30s)。

然后执行:

1
systemctl daemon-reload

5.command-not-found提示

pkgfilepkg可以查询某个命令属于哪个软件包;使用root权限运行:

1
2
pacman -S pkgfile #安装
pkgfile -u #更新数据库

pkgfile可以手动使用,用法参见ArchWiki
也可以在输入未安装的命令时,提示需要安装的包:

  1. bash
    ~/.bashrc中加入一行:
    1
    source /usr/share/doc/pkgfile/command-not-found.bash
  2. zsh
    ~/.zshrc中加入一行:
    1
    source /usr/share/doc/pkgfile/command-not-found.zsh
  3. fish
    无需额外配置,安装后会被自动调用。

6.软件包降级

pacman并不支持包降级,并且arch社区也不对降级包的行为作支持。部分升级是不受支持的。
但是,如果有软件包确实出现了问题不得不降级,也有工具提供了这一功能。
安装downgradecn/aur

1
pacman -S downgrade

然后使用root权限运行:

1
downgrade <想降级的包>

选择想要降级的版本即可。注意标注的来源,来自/var/cache/pacman/pkg的是本地缓存的包,优先使用;远程包则来自 Arch Linux Archive ,没有镜像源,可能需要下载比较长时间。官方提供了 亚洲 , 欧洲 , 美洲 三个地区的镜像,可以手动下载然后用pacman -U安装,可能会稍微快一点。

Arch Linux还支持把整个系统完全降级到某个时间点的状态。有关降级的更多内容,参见ArchWiki

这些方法只支持降级官方源中的软件包;第三方源(如archlinuxcn源或者arch4edu源)的软件包,远程源似乎并没有旧版本的存档;因此如果缓存里面存有,就可以提取缓存降级(从/var/cache/pacman/pkg目录);如果没有就是没法降级了。AUR中的包可以尝试使用git reset回退到之前的某个版本然后手动makepkg打个旧版本的包降级。


到这里咱已经把目前能想到的,日用的Arch Linux系统必需的配置(除了显卡驱动)之外都配置完成了。由于目前还是在虚拟机上面整,暂时没有条件配置显卡驱动;不知道是虚拟机的问题还是其它什么问题,休眠目前也没配置成功。这两个问题以后在物理机上解决了另开一篇。
显卡驱动参考前述章节根据显卡品牌不同分列的wiki;
休眠配置参考 ArchWiki


Arch Linux配置cinnamon桌面与常用应用
http://silvertuanzi.github.io/2025/02/11/arch-cinnamon/
作者
silver-lasombra
发布于
2025年2月11日
许可协议