Arch + Hyprland 安装美化手册
!TIPS 文中提到的软件配置、dotfiles相关都可以在 zonowry/dotfiles 仓库中找到。
首先展示成果
进入 Arch LiveCD 开始安装
硬盘分区
先使用 fdisk
对磁盘分区,至少需要创建一个 fat
格式分区,存放 efi
引导文件。和一个 btrfs
主分区,存放系统文件。
下文使用 /dev/nvme0n1 作为例子。
fdisk /dev/nvme0n1 # 选择一块硬盘进行分区
> g # gpt 分区表,uefi 启动
> n # 新建分区
> ...
> w # 保存退出
格式化磁盘
# 主分区
mkfs.vfat /dev/nvme0n1p1
mkfs.btrfs -L arch-btrfs /dev/nvme0n1p2 # 建立 btrfs 分区并命名 Label
挂载分区 & 初始化 btrfs
mkdir -p /mnt/efi
mount /dev/sda1 /mnt/efi
挂载主分区安装系统到磁盘。
btrfs 压缩算法区别 Compression
mount -t btrfs -o compress=zstd /dev/nvme0n1p2 /mnt
btrfs subvol create /mnt/@
btrfs subvol create /mnt/@home
btrfs subvol create /mnt/@var-cache
btrfs subvol create /mnt/@var-temp
btrfs subvol create /mnt/@opt
btrfs subvol create /mnt/@swap
umount /mnt
mount -t btrfs -o compress=zstd,subvol=@ /dev/nvme0n1p2 /mnt
mount --mkdir -t btrfs -o subvol=@home /dev/nvme0n1p2 /mnt/home
mount --mkdir -t btrfs -o subvol=@opt /dev/nvme0n1p2 /mnt/opt
mount --mkdir -t btrfs -o subvol=@var-cache /dev/nvme0n1p2 /mnt/var/cache
mount --mkdir -t btrfs -o subvol=@var-temp /dev/nvme0n1p2 /mnt/var/temp
btrfs fi mkswapfile /mnt/swap/swapfile --uuid clear --size 16G
swapon /swap/swapfile
替换 pacman 安装源
加速 pacman
安装速度。用 reflector
自动配置 pacman
使用国内镜像源。
reflector --age 24 --country China --sort rate --verbose --protocol http --protocol https --save /etc/pacman.d/mirrorlist
也可以编辑 mirrorlist 文件,解开 [China]
下的镜像源注释并注释掉官方源,或者用手机上网搜索最新的国内 archlinuxcn 镜像源吧,然后手动敲上。
pacman 配置
如果安装时遇到签名错误,应该可以通过以下方式解决。如果你的 live
不是很新那么大概率会签名错误,所以推荐先执行以下,也没坏处。
pacman-key --init
pacman-key --populate archlinux
# Syy 刷新下
pacman -Syy archlinux-keyring
开始安装:
下载安装系统内核,以及网络管理、ssh 之类的必备软件。
PS:如果是当作日常桌面系统使用,系统内核推荐安装
linux-zen
,看 linux-lqx(zen) 官网介绍 是比较适合桌面/游戏用户的。但会遇到因为不是官方标准内核,所以会碰见部分驱动需要用dkms
自己编译的情况。例如nvidia
,简单起见就先用linux
标准内核吧,以后可以再安装切换到linux-zen
,也不麻烦。
PPS:如果你是 intel 就安装 intel-ucode,amd 就安装 amd-ucode(大概是这个名字,参考 archlinux wiki 吧)。
pacstrap /mnt \
linux \
linux-firmware \
base \
sudo \
neovim \
networkmanager \
openssh \
git \
git-lfs
zsh \
grub \
efibootmgr \
intel-ucode \
base-devel \
devtools \
btrfs-progs
chroot 进入系统
安装完成后,进入系统,方便后续做一些处理。
arch-chroot /mnt
ln -s /usr/bin/nvim /usr/bin/vim
grub 启动项配置
mkdir /efi
# 挂载第一步创建的 vfat 分区
mount /dev/sda1 /efi
# grub uefi 启动项
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
# TODO
vim /etc/default/grub
# loglevel=5, nowatchdog
# grub 引导/菜单配置
grub-mkconfig -o /boot/grub/grub.cfg
添加用户
设置用户密码,配置普通用户 sudo 权限。
用户名「zonowry」改成自己的即可。
useradd -m zonowry
# 为新用户设置密码
passwd zonowry
# 为 root 设置密码
passwd root
# 允许新用户使用 sudo 命令, 这里我设置了 sudo 免密码,可以去掉
echo "zonowry ALL=(ALL) NOPASSWD:NOPASSWD:ALL" >> /etc/sudoers
fstab 配置
设置系统启动时自动挂载的分区,退出 arch-chroot
,通过 arch
安装脚本自动生成 fstab
配置。
exit # 退出 chroot /mnt 环境
genfstab /mnt > /mnt/etc/fstab
建议验证下,生成的是否正确
cat /mnt/etc/fstab
![[image-2023_09_25_16_44_46.png]]
重启进入系统
上边的步骤做完,重启应该就可以引导并进入系统了。
初始化网络
systemctl enable NetworkManager
systemctl start NetworkManager
systemctl enable sshd
systemctl start sshd
时区本地化配置
timedatectl set-ntp true # ntp 同步时间
timedatectl set-timezone Asia/Shanghai
timedatectl # 查看验证
语言本地化配置
可能影响一些系统的提示语言,货币和时间的显示格式。
程序员的话建议就用 en_US.utf8 吧,一些命令报错,英文的话比较好搜索解决方法。
vim /etc/locale.gen
# 解除 en_US.UTF-8 的注释,
# :wq 保存退出
# 生成
locale-gen
localectl set-locale LANG=en_US.UTF-8
Aur 客户端
一般使用 yay
,不过我图新鲜用的 paru
。其实也不知道具体啥区别,到底哪个好用。感觉除了开发语言不同,功能上都差不多吧。
去 paru
的 github
release 页面下载二进制包,然后解压创建 /usr/bin/paru
软链接就好了。
# 或者直接 `wget` ,需要自己判断版本链接。
wget https://github.com/Morganamilo/paru/releases/download/v1.11.2/paru-v1.11.2-x86_64.tar.zst
# tar 解压 paru-v1.11.2-x86_64.tar.zst
tar xvf paru-v1.11.2-x86_64.tar.zst
mkdir /opt/paru
mv ./paru /opt/paru
chmod +x paru
ln -s /opt/paru/paru /usr/bin/paru
paru -Syyu
hyprland 安装
hyprland
,一款平铺桌面管理器。动画流畅,丰富的自定义选项。最好配合 hyprland
官网食用。
pacman -Sy hyprland
安装后可以命令行执行 Hyprland
启动小窥一眼,默认配置比较简陋,win+M
退出继续折腾。
hyprland 的配置例如动画样式、窗口规则、按键绑定、屏幕设置等不是很重要,默认配置也够用了,且个人差异太大,找个自己喜欢的 dotfiles 参考即可。比较重要的配置是环境变量
byprland 环境变量
亲身感受下来是很多疑难杂症都可能和某个环境变量有关,只能靠多搜索多踩坑。
每个人环境不一样,所以也仅供参考。
# Some default env vars.
env = XDG_CURRENT_DESKTOP,Hyprland
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that
# env = LIBVA_DRIVER_NAME,nvidia
env = XDG_SESSION_TYPE,wayland
# env = GBM_BACKEND,nvidia-drm
env = GDK_BACKEND,wayland
# env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = WLR_NO_HARDWARE_CURSORS,1
env = OZONE_PLATFORM,wayland
# env = GLFW_IM_MODULE,ibus
env = QT_IM_MODULE,fcitx
env = XMODIFIERS,@im=fcitx
env = LANG,zh_CN.UTF-8
env = LANGUAGE,zh_CN:en_US
env = JDK_JAVA_OPTIONS,-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
env = _JAVA_AWT_WM_NONREPARENTING,1
env = AWT_TOOLKIT,MToolkit
env = JAVA_HOME,/opt/apps/jdk/jdk1.8.0_261
桌面配置 & 常用应用
以下软件大多都和 dotfiles 配置相关,可以在 dotfiles 找到各个软件对应的配置。例如 ~/.config/fontconfig/fonts.conf
字体配置。
Must Have
中文字体是必备的,但也看个人喜好。不过字体对 waybar 等应用影响比较大,很容易出现在编辑器里很好看,但在 GUI 界面上很难看(对不齐之类的)。需要自己调整或者采用别人的挑选好的字体。
# 权限
pacman -Sy polkit-kde-agent \
dunst \
pipewire \
wireplumber \
xdg-desktop-portal-hyprland \
xdg-desktop-portal-wlr \
xdg-desktop-portal-gtk \
qt5-wayland \
qt6-wayland
# 字体
ttf-lxgw-wenkai \
ttf-iosevka-nerd \
wqy-microhei
paru -S ttf-cascadia-code-nerd \
ttf-lxgw-wenkai-screen \
noto-fonts-emoji \
ttf-firecode-nerd \
ttf-material-design-icons-extended
fc-cache -vf # 刷新字体缓存
输入法
得益于 Hyprland 作者好像也是日语输入法用户,所以 Hyprland 的 input-method 相关协议较其它 wayland 合成器更为完善。现在 Hyprland 安装 chrome,fcitx5 之后,基本是开箱即用了,~~(只需要设置 fcitix5 环境变量与 electron flags)~~好起来了!
pacman -S fcitx5-im \
fcitx5-rime \
fcitx5-configtool \
fcitx5-material-color
强推下雾凇拼音 https://github.com/iDvel/rime-ice
paru -S rime-ice-git
常用软件
下列应用不一定适合所有人,大多都有平替,仅供参考。
pacman -Sy kitty \
wofi \
waybar \
thunar \
nfs-utils
paru -Sy visual-studio-code-bin \
google-chrome
美化
前置软件
paru -Sy kvantum \
qt5ct \
qt6ct \
nwg-look
以下是我采用的主题图标,若不喜欢。也可以去 pling.com 找自己喜欢的,安装方式大同小异。
主题
git clone --depth=1 https://github.com/vinceliuice/Orchis-kde.git
cd ./Orchis-kde
./install.sh
图标
git clone --depth=1 https://github.com/vinceliuice/Tela-icon-theme.git
cd ./Tela-icon-theme
./install.sh -a
指针
paru -S phinger-cursors
# 打开 nwg-look 设置指针即可
安装好主题图标后,依次使用 kvantum
、nwg-look
、qt5ct
、qt6ct
软件应用下主题图标即可,qt5ct/qt6ct 的主题选择 kvantum。最后重启 Hyprland 让主题生效。
命令行美化
pacman -S fzf
- oh-my-zsh
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
- zsh 插件,有些是自带的,第三方插件都有 git 仓库。
以下都可以通过例如 git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestion
来安装。
sudo
git
zsh-autosuggestions
zsh-syntax-highlighting
fzf-zsh-plugin
docker
docker-compose
zsh-shift-select
备份
一系列繁琐操作后,得到了一个纯净的系统,当务之急是备份当前环境,避免重装。得益于 btrfs,备份十分简单。
timeshift 只会备份名为 @、@home 的子卷,够用了。
sudo pacman -S timeshift grub-btrfs
timeshift 需要 root, wofi 调起 timeshift,polkit 输入密码后,没有反应。懒得排查原因了,只能 sudo -E timeshift-gtk 启动了,问题不大。
sudo -E timeshift-gtk
按照操作来即可创建一个快照了。
小技巧
wev
- 命令行工具,查看键码
hyprctl clients
- 查看当前客户端列表信息,可以用来排查是否是 xwayland 启动。