- 发表于
Hyprland 安装与配置超详细教程 (Arch Linux):含 Waybar 及一键脚本
- Authors
- 作者
- 间窗 (Vindo)
- X / Twitter
- @DvorakZhou
Hyprland 不仅仅是一个窗口管理器,它是一个基于 Wayland 的动态平铺式合成器,以其丝滑的动画、极致的可配置性和惊艳的视觉效果,在 Arch Linux 极客圈中迅速封神。如果你厌倦了千篇一律的桌面环境,渴望一个性能与美学兼备、完全由你掌控的个性化空间,那么 Hyprland 将是你的终点站。
作者的话: 我个人在尝试了 GNOME、KDE 以及多种平铺窗口管理器后,最终选择了 Hyprland。因为它在动画流畅度和自定义性上达到了完美的平衡,真正做到了“颜值”与“效率”兼得。这篇指南是我数周折腾和优化的心血结晶,一份完整的 hyprland配置 心得,希望能帮你绕过我踩过的坑,快速上手。
本指南将带您走过从安装到精通的每一个细节,在 Arch Linux 上构建一个功能完备、外观绚丽且高效实用的 Hyprland 桌面。
〇、飞行前检查:必备环境
在起飞之前,请确保您的 Arch Linux 系统满足以下条件:
- 一个基础的 Arch Linux 环境:已安装、可联网。
- 安装 AUR 助手:我们将使用
yay
来安装一些社区维护的软件包。如果尚未安装,请执行:sudo pacman -S --needed git base-devel git clone https://aur.archlinux.org/yay.git cd yay && makepkg -si
- 安装登录管理器 (DM):推荐使用 SDDM,它轻量且配置简单。
sudo pacman -S sddm sudo systemctl enable sddm.service
小贴士: 为什么选择 SDDM?因为它基于 Qt,与 Hyprland 生态中的 Dolphin、KDE Connect 等应用能更好地融合,避免了主题和图标的割裂感。
一、奠定基石:安装 Hyprland 与核心生态
一个完整的桌面体验,需要一个由核心与周边应用组成的生态系统,其中 Waybar 是不可或缺的一环。
# 更新系统
sudo pacman -Syu
# 核心组件
sudo pacman -S hyprland
# 核心生态应用 (一次性安装所有推荐应用)
sudo pacman -S kitty waybar wofi mako grim slurp swww \
swaylock-effects swayidle polkit-kde-agent \
qt5ct qt6ct nwg-look-bin papirus-icon-theme \
ttf-jetbrains-mono-nerd noto-fonts-cjk \
dolphin --needed
- kitty: 强悍的 GPU 加速终端。
- waybar: 高度可定制的状态栏。
- wofi: 轻量高效的程序启动器。(为什么不用 Rofi?因为 Wofi 是为 Wayland 原生设计的,兼容性更好。)
- mako: Wayland 通知守护程序。
- grim & slurp: 截图工具。
- swww: 高效的动态壁纸应用。
- swaylock-effects & swayidle: 带特效的锁屏及空闲管理工具。
- polkit-kde-agent: 图形化权限验证代理。
- qt5ct, qt6ct, nwg-look-bin: GTK/QT 主题统一工具。
- papirus-icon-theme, nerd-fonts, noto-fonts-cjk: 必备的图标与字体包。
- dolphin: 强大的文件管理器。
安装完成后,重启电脑,在 SDDM 登录界面的左下角选择 "Hyprland" 会话,然后登录。
hyprland.conf
深度剖析
二、赋予灵魂:首次进入,您将面对一个纯黑的屏幕。现在,让我们通过配置文件赋予它生命。这份 hyprland配置 文件是整个桌面的大脑,理解它至关重要。
创建配置文件: mkdir -p ~/.config/hypr/ && nano ~/.config/hypr/hyprland.conf
以下是一份功能完备且经过详尽注释的 hyprland配置 模板,您可以直接使用并逐步修改:
# ~/.config/hypr/hyprland.conf
# 本配置文件在 Hyprland v0.40.0 版本下测试通过
#################
# 显示器设置 #
#################
monitor=,preferred,auto,1
# 示例: monitor=eDP-1, 1920x1080@60, 0x0, 1
#################
# 自启动程序 #
#################
exec-once = waybar &
exec-once = swww init &
exec-once = mako &
exec-once = /usr/lib/polkit-kde-authentication-agent-1 &
exec-once = fcitx5 -d
# 启动后延迟设置壁纸
exec-once = sleep 2 && swww img ~/Pictures/wallpapers/your-favorite-wallpaper.png
#################
# 环境变量 #
#################
env = XCURSOR_SIZE,24
env = GTK_THEME,Adwaita:dark
env = QT_QPA_PLATFORMTHEME,qt5ct
# Fcitx5 输入法环境变量
env = GTK_IM_MODULE,fcitx
env = QT_IM_MODULE,fcitx
env = XMODIFIERS,@im=fcitx
env = INPUT_METHOD,fcitx
env = SDL_IM_MODULE,fcitx
#################
# 输入与手势 #
#################
input {
kb_layout = us
follow_mouse = 1
touchpad {
natural_scroll = no
}
}
gestures {
workspace_swipe = on
}
#################
# 视觉与动画 #
#################
general {
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
layout = dwindle
}
decoration {
rounding = 10
blur {
enabled = true
size = 5
passes = 2
}
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
}
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = workspaces, 1, 6, default, slide
}
dwindle {
pseudotile = yes
preserve_split = yes
}
#################
# 按键绑定 #
#################
$mainMod = SUPER # Windows 键
# 核心应用
bind = $mainMod, Q, exec, kitty
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, dolphin
bind = $mainMod, R, exec, wofi --show drun
bind = $mainMod, V, togglefloating,
# 截图 (全屏 / 选区)
bind = , Print, exec, grim -g "$(slurp)" - | wl-copy # 选区截图到剪贴板
bind = SHIFT, Print, exec, grim - | wl-copy # 全屏截图到剪贴板
# 锁屏
bind = $mainMod, L, exec, swaylock-effects
# 窗口与工作区管理
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
# 音量控制 (需安装 pamixer)
# sudo pacman -S pamixer
binde=, XF86AudioRaiseVolume, exec, pamixer -i 5
binde=, XF86AudioLowerVolume, exec, pamixer -d 5
binde=, XF86AudioMute, exec, pamixer -t
# 亮度控制 (需安装 brightnessctl)
# sudo pacman -S brightnessctl
binde=, XF86MonBrightnessUp, exec, brightnessctl set 5%+
binde=, XF86MonBrightnessDown, exec, brightnessctl set 5%-
#################
# 窗口规则 #
#################
windowrulev2 = float, class:^(pavucontrol)$
windowrulev2 = float, class:^(blueman-manager)$
windowrulev2 = float, class:^(org.kde.polkit-kde-authentication-agent-1)$
三、精雕细琢:配置周边应用
一个完整的桌面,需要各个组件协同工作,尤其是 Waybar 状态栏。
1. Waybar:你的专属状态栏
// ~/.config/waybar/config
{
"layer": "top",
"position": "top",
"height": 30,
"modules-left": ["hyprland/workspaces", "hyprland/window"],
"modules-center": ["clock"],
"modules-right": ["pulseaudio", "network", "backlight", "cpu", "memory", "tray"],
"hyprland/workspaces": {
"format": "{name}: {icon}",
"format-icons": {
"1": "",
"2": "",
"3": "",
"default": "",
"urgent": ""
}
},
"tray": {
"icon-size": 18,
"spacing": 10
},
"clock": {
"format": "{:%Y-%m-%d %H:%M:%S}",
"tooltip": false
},
"cpu": {
"format": "CPU {usage}% ",
"tooltip": false
},
"memory": {
"format": "MEM {used:0.1f}G "
},
"network": {
"format-wifi": "{essid} ({signalStrength}%) ",
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
"format-disconnected": "Disconnected ⚠"
},
"pulseaudio": {
"format": "{volume}% {icon}",
"format-muted": "Muted ",
"format-icons": {
"default": ["", "", ""]
}
},
"backlight": {
"device": "intel_backlight",
"format": "{percent}% {icon}",
"format-icons": ["", ""]
}
}
/* ~/.config/waybar/style.css */
* {
border: none;
border-radius: 0;
font-family: 'JetBrainsMono Nerd Font';
font-size: 14px;
}
window#waybar {
background-color: rgba(30, 30, 46, 0.8);
color: #cdd6f4;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #cdd6f4;
}
#workspaces button.active {
background-color: #89b4fa;
color: #1e1e2e;
}
创建 Waybar 配置文件: mkdir -p ~/.config/waybar && nano ~/.config/waybar/config
别忘了创建样式文件: nano ~/.config/waybar/style.css
2. Fcitx5:流畅的中文输入
安装 Rime 引擎:sudo pacman -S fcitx5-rime
。配置方法与前文所述相同,确保 hyprland.conf
中的环境变量已设置,然后使用 fcitx5-configtool
添加 Rime 输入法。
3. Swaylock-effects:炫酷的锁屏
#!/bin/sh
# ~/.config/hypr/lock.sh
swaylock-effects \
--screenshots \
--clock \
--indicator \
--indicator-radius 100 \
--indicator-thickness 7 \
--effect-blur 7x5 \
--effect-vignette 0.5:0.5 \
--ring-color 89b4fa \
--key-hl-color 1e66f5 \
--line-color 00000000 \
--inside-color 00000088 \
--separator-color 00000000 \
--grace 2 \
--fade-in 0.5
您可以创建一个脚本来简化锁屏命令: nano ~/.config/hypr/lock.sh && chmod +x ~/.config/hypr/lock.sh
然后修改 hyprland.conf
中的锁屏绑定为 bind = $mainMod, L, exec, ~/.config/hypr/lock.sh
。
四、一键配置:自动化部署脚本
对于希望快速体验的用户,我编写了一个自动化脚本。它会安装所有必要的软件包,并从我的 Gitee 仓库拉取一套预配置好的 dotfiles(包括 Hyprland, Waybar, Kitty, Wofi 等)。
警告:此脚本会覆盖您 ~/.config
下的同名配置文件。请务必在纯净的环境下或备份后运行。
# 下载并赋予执行权限
wget -O hyprland-install.sh "https://gitee.com/jellyfishkngiht/v2raya/raw/master/hyprland-install.sh"
chmod +x hyprland-install.sh
# 运行脚本
./hyprland-install.sh
这个脚本将引导您完成大部分的繁琐工作,让您在几分钟内拥有一个功能齐全且美观的 Hyprland 桌面。
五、常见问题与故障排除 (FAQ)
登录后黑屏,只有鼠标指针?
- 原因:
hyprland.conf
加载失败或存在语法错误。 - 解决方案: 按
Ctrl + Alt + F2
进入 TTY 文本终端,登录后执行Hyprland -c ~/.config/hypr/hyprland.conf
。仔细阅读终端输出的错误信息,通常会明确指出哪一行的配置有问题。修改后重启即可。
- 原因:
Waybar 状态栏不显示图标?
- 原因: 缺少 Nerd Fonts 字体,或者 Waybar 的
style.css
未正确指定字体。 - 解决方案: 确认已安装
ttf-jetbrains-mono-nerd
或其他 Nerd 字体。检查~/.config/waybar/style.css
中的font-family
设置是否正确无误。
- 原因: 缺少 Nerd Fonts 字体,或者 Waybar 的
部分应用(如 Steam、VSCode)出现窗口闪烁或渲染问题?
- 原因: 这是 Wayland 与某些使用 Electron/CEF 框架应用之间的兼容性问题。
- 解决方案: 为这些特定应用添加窗口规则 (window rule),禁用模糊和阴影可能会有所帮助。或者,尝试寻找在 Wayland 下运行它们的特定标志(例如,VSCode 的
--ozone-platform-hint=auto
)。
六、未来的资源
这套配置是我个人在长期使用中不断打磨的结果,它平衡了美观、性能与实用性。在未来,我计划将我完整的个人 dotfiles 开源到 Gitee / Github,包含更多定制化的脚本和主题,敬请期待。
学习与探索的资源:
- Hyprland 官方 Wiki (必读)
- Arch Wiki - Hyprland
- Dotfiles 社区: 在 GitHub/Gitee 搜索
hyprland-dots
,汲取无限灵感。
祝您在 Hyprland 的世界里,打造出真正属于自己的那片天地!