起源于在 Bilibili 上看到的一个关于 Hyprland 使用的视频,作为 Windows、MacOS、Gnome 桌面用惯了的人,在看到视频中展示的新奇的 “平铺式” 桌面交互体验、大量的动画效果时,我对它产生了浓厚的兴趣,于是打算动手装一个 Hyprland 桌面。
Hyprland 官方声明其对 ArchLinux、NixOS 的支持最好。久仰 ArchLinux 大名,我对它的部署充满了好奇心(雾),所以又先安装了 ArchLinux。
0x01. 在 Linux 下制作 PE 引导盘
使用 Ubuntu 系发行版的用户请自行在前面加 sudo。
插入 U 盘。
1 | fdisk -l |
查看 U 盘对应的设备名称:
1 | Disk /dev/sdd:57.3 GiB,61530439680 字节,120176640 个扇区 |
注:磁盘标识符不应该为
0x00000000
,我后来才发现我的 U 盘坏了…
找到挂载点:
1 | df -h |
卸载 U 盘:
1 | umount /dev/<设备名称> |
格式化 U 盘:
1 | mkfs.fat /dev/<设备名称> -I |
然后前往 ArchLinux 下载对应的 .ISO 镜像文件。
1 | sudo dd if=archlinux-2024.08.01-x86_64.iso of=/dev/<设备名称> |
写入 ISO 镜像文件到 U 盘,最终显示如下:
1 | (base) soulter@806dev:~/下载$ sudo dd if=archlinux-2024.08.01-x86_64.iso of=/dev/sdf |
0x02. Boot ArchLinux
进入 BIOS,找到启动顺序设置,然后将 U 盘放在第一位即可。BIOS 会按照启动顺序依次检查每个设备是否有引导记录,如果有则启动。
0x03. Install ArchLinux
参考 ArchLinux Wiki。主要分为以下几步:
注:请参考 ArchLinux Wiki,本文仅提供一个简单的流程。
- 检查网络联通性(更新 pacman 源需要互联网接入)
ping blog.lwl.lol
- 设置时间、时区
timedatectl set-timezone Asia/Shanghai
- 分区(EFI、bootable)
fdisk -l
查看要分区的 disk。- 使用
fdisk /dev/sdX
进入 disk 来分区 - 分别创建两个分区:EFI, Linux FileSystem。EFI 分区大小
512M
,Linux FileSystem 分区大小为剩余空间。
- 给创建好的两个分区挂载文件系统
mkfs.fat -F32 /dev/sdX1
(EFI 分区)mkfs.ext4 /dev/sdX2
(Linux FileSystem 分区)
- pacman 源更新
pacman -Syy
更新 pacman 源pacman -S reflector
- 使用
pacstrap
安装 ArchLinux。mount /dev/sdX2 /mnt
此步骤会将 Linux FileSystem 分区挂载到 /mnt 目录下。pacstrap /mnt base linux linux-firmware nano
此步骤会安装基本的 ArchLinux 系统。
- 使用
arch-chroot /mnt
进入到安装好 Arch 的 Disk。- 更新
/etc/hostname
,/etc/hosts
设置主机名和 hosts。 - 安装/启动 dhcp 服务。
yay -S dhcpcd && systemctl enable dhcpcd
passwd
设置密码- 安装 Bootloader(GRUB)
- 在 non-UEFI 上和在 UEFI 设备上安装方式不同。
grub-mkconfig -o /boot/grub/grub.cfg
生成 grub 配置文件。
- 更新
- 拔掉 U 盘,reboot~
ArchLinux 默认是不带桌面环境的,因此重启之后你会发现只有一个 tty,如果想使用桌面环境,需要自行安装。
0x04. 安装和使用 Hyprland
提到了 Hyprland,就不得不提一下 Wayland。Wayland 是一个计算机图形显示协议,旨在替代 X 协议。由于使用 Wayland 协议的显示服务器也可作为混成窗口管理器,因此被称为混成器。Wayland 本身并不提供图形环境,因此还需要安装混成器。混成器有很多,大致可以分为平铺式和堆叠式两类。Hyprland 就是一个独立的使用 C++ 编写的平铺式 Wayland 混成器。
如果你想自己设计桌面,可以直接使用 yay
安装 hyprland。
1 | yay -S hyprland |
安装完成之后,输入 Hyprland
即可进入 hyprland 桌面。
注意:请不要使用
root
账户或者sudo
启动 hyprland。否则,你需要加一个参数:--i-am-really-stupid
。
网络上有很多提供好的 hyprland 设计配置称为 hyprland dotfiles
,你可以直接使用他们的配置。
一开始我打算自己设计桌面,但是惊讶地发现发现 hyprland 自由度是在太高了,以至于在安装成功之后打开的图形界面是黑屏——壁纸、状态栏等都需要自己安装相应的工具(hyprpaper, waybar 等等)。捣鼓了一会之后觉得太费时(最主要还是效果不好XD),所以最终我还是使用了 end-4/dots-hyprland 的配置。这也是文章一开始提到的 Bilibili 视频中使用的配置。
下面针对这个配置后的 ArchLinux + Hyprland 进行一些简单的个人体验。
0x05. PACMAN + YAY are all you need
ArchLinux 的自带软件包管理器是 pacman
。事实证明,simple is the best。pacman 的本地数据库甚至只是包名的目录树,打包脚本也是 bash script。简单的包管理造就了方便的软件包生态。不管软件包来自官方 Arch 库还是用户自己创建,pacman 都能方便地管理。
ArchLinux 的 AUR(Arch User Repository)是一个非常强大的软件源,它是为用户而建、由用户主导的,每个人都可以往里面发自己创建的软件包。从这里就可以看出,AUR 的包生态是非常丰富的。大到常用的软件 VSCode、IDEA、QQ,小到纳西妲鼠标光标、i-use-arch-btw 编程语言,都可以在 AUR 中找到。
如果想搜索软件包,只需要在 https://aur.archlinux.org/ 搜索即可。或者 yay -Ssq <keyword>
,也会列出相关的软件包。
可以说,要是在 ArchLinux 上找不到你想要的软件包,那么其他发行版上就更不可能有了。
这意味着,你可以直接以一行安装指令安装你想要的软件,而不需要查看软件包官网上冗长的安装和编译教程(Debian!),让你尝到先苦后甜的滋味 😃 。
需要帮助?大多数软件包都会提供一个 ArchWiki 页面,请自己查阅 ArchWiki,或者在 Arch Community 上提问。
0x06. No 鼠标 Anymore!
“平铺式”,顾名思义,就是将窗口平铺在桌面上而不重叠,这种方式的好处是可以最大化地利用屏幕空间,在需要同时使用多个程序的时候非常方便,免去了鼠标频繁移动到任务栏和点击的麻烦。
Hyprland 中,触发指令通常是 SUPER
键 + XXX 的形式,例如 SUPER + T
打开终端。这里的 SUPER
键默认是 Windows
徽标键。当然了,这是可以配置的。
使用 SUPER + Ctrl + /
会打开类似 MacOS 的聚焦搜索,你可以通过键盘输入来搜索程序,然后回车打开。打开的窗口的位置取决于光标的位置。
在 Hyprland 中,光标下的窗口会被自动激活,也就是说,当鼠标移动到某个窗口上时,这个窗口就会被激活,而不需要点击。是不是这样还不够方便?你可以直接使用 SUPER + 方向键
将光标直接移动到相邻的窗口中央。
如何调整窗口呢?当鼠标移动到一个窗口内时,使用 SUPER+;
即可上下/左右调整该窗口的尺寸,使用 SUPER+Shift+方向键
可以将窗口和相邻的窗口交换位置。
悬浮一个窗口也是受支持的。只需要按下 SUPER + Alt + SPACE
即可。你可以通过鼠标拖动窗口来调整窗口的大小,按下 SUPER
和鼠标左键可以拖动窗口。
此外,和 Windows 和 MacOS 类似,Hyprland 也支持多个桌面,可以通过 SUPER + 1/2/3/4/5/6/7/8/9
来切换。
这么多的快捷键使得鼠标的使用频率大大降低,右手可以更专注于键盘上。在一些场景下,比如码字+查资料,甚至可以完全不用鼠标来操作电脑。
对于我来说,我使用这台安装了 Hyprland 的电脑一般就是用来写写代码,浏览网页,因此这种设计非常适合我。
0x07. 高自由度的配置
Hyprland 和其他工具的配置文件都统一到了 ~/.config/
目录下,并且可配置性非常强,可以很方便地个性化你的桌面。例如按键绑定、壁纸、圆角、窗口透明度、模糊效果、动画效果等等。
我们 btw 群体安装 Arch 的一大乐趣就是自己捣鼓桌面(也没人用它来做服务器吧),因此可以在网上看到各式各样的桌面样式。
0x08. TUI ❤️
把这个有点说成是 Hyprland 的特色似乎有点站不住脚,因为 TUI 只是一个和 GUI 相对的设计理念,基于它们的软件可以运行于任何桌面环境,但是我觉得 Hyprland 为 TUI 软件提供了一个很好的展示平台,极大提高了他们的使用频率。TUI 软件的界面一般只包含有效的文本信息(当然,一些协议像是 iterm2 协议也支持在终端中显示图像)而没有多余的装饰。对于那些对图形界面审美疲劳的人来说,TUI 软件是一个很好的选择。
我安装了 musicfox + ncmpcpp + mpd 来播放网易云音乐。musicfox 是基于 TUI 的第三方网易云音乐客户端,支持登录网易云账号、歌词显示、歌单播放。ncmpcpp 是一个 mpd 客户端,我主要用它显示音乐波形,mpd 是一个音乐播放器守护进程。简单配置之后,效果极其优雅 🤤。
还有很多 TUI 软件,比如 btop,一个类似 htop 的系统监视器,可以查看 CPU、内存、磁盘、网络等信息。
还有 neofetch (x)
0x09. 支持远程桌面
同 X 协议一样,Wayland 协议也支持众多远程桌面协议,如 VNC、RDP。我尝试了使用 wayvnc
来实现远程桌面。
首先安装 wayvnc
:
1 | yay -S wayvnc |
然后使用 hyprctl monitors
查看你的显示器信息,将 Monitor
后的 ID 记录下来。
然后新开一个 terminal,输入 wayvnc 0.0.0.0 5900
来启动 VNC 服务,此时 wayvnc 会堵塞当前 terminal。需要再新开一个 terminal,输入 wayvncctl output-set <Monitor ID> 0
来将 VNC 服务绑定到指定的显示器上。
Wayland 是支持多 monitor 的,如果你不想远程控制现有的桌面而想单开一个桌面,你可以创建一个无头 monitor:
1 | hyprctl output create headless test |
然后前往 hyprland 的 config 中设置这个 monitor 的分辨率、位置等信息,比如
1 | monitor=test,1920x1080,auto,1 |
然后将 VNC 服务绑定到这个 monitor 上,再启动 VNC 服务即可。(顺序不能错)
0x0A. 缺点?
平铺式窗口布局确实有很多好处,但是这仅建立在你有一个大屏幕的基础上。如果屏幕太小,那么平铺式布局可能会显得有些拥挤。
此外,在我的使用过程中,发现在系统 Suspend 之后再重新唤醒,会导致花屏的情况,使得我不得不直接强行重启电脑,非常不方便。当然了,可以通过修改 .config/hypr/hypridle.conf
来禁用一段时间后 Suspend 的功能。
0x0B. 总结
i use arch btw.
这句话已经成为著名的 Linux 圈的梗了,甚至官方也在玩梗(x):https://wiki.archlinux.org/title/Frequently_asked_questions