发表于

Hyprland 安装与配置超详细教程 (Arch Linux):含 Waybar 及一键脚本

Authors

Hyprland 不仅仅是一个窗口管理器,它是一个基于 Wayland 的动态平铺式合成器,以其丝滑的动画、极致的可配置性和惊艳的视觉效果,在 Arch Linux 极客圈中迅速封神。如果你厌倦了千篇一律的桌面环境,渴望一个性能与美学兼备、完全由你掌控的个性化空间,那么 Hyprland 将是你的终点站。

作者的话: 我个人在尝试了 GNOME、KDE 以及多种平铺窗口管理器后,最终选择了 Hyprland。因为它在动画流畅度和自定义性上达到了完美的平衡,真正做到了“颜值”与“效率”兼得。这篇指南是我数周折腾和优化的心血结晶,一份完整的 hyprland配置 心得,希望能帮你绕过我踩过的坑,快速上手。

本指南将带您走过从安装到精通的每一个细节,在 Arch Linux 上构建一个功能完备、外观绚丽且高效实用的 Hyprland 桌面。

一个配置好的Hyprland桌面截图,包含Waybar状态栏和透明终端

〇、飞行前检查:必备环境

在起飞之前,请确保您的 Arch Linux 系统满足以下条件:

  1. 一个基础的 Arch Linux 环境:已安装、可联网。
  2. 安装 AUR 助手:我们将使用 yay 来安装一些社区维护的软件包。如果尚未安装,请执行:
    sudo pacman -S --needed git base-devel
    git clone https://aur.archlinux.org/yay.git
    cd yay && makepkg -si
    
  3. 安装登录管理器 (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)

  1. 登录后黑屏,只有鼠标指针?

    • 原因: hyprland.conf 加载失败或存在语法错误。
    • 解决方案: 按 Ctrl + Alt + F2 进入 TTY 文本终端,登录后执行 Hyprland -c ~/.config/hypr/hyprland.conf。仔细阅读终端输出的错误信息,通常会明确指出哪一行的配置有问题。修改后重启即可。
  2. Waybar 状态栏不显示图标?

    • 原因: 缺少 Nerd Fonts 字体,或者 Waybar 的 style.css 未正确指定字体。
    • 解决方案: 确认已安装 ttf-jetbrains-mono-nerd 或其他 Nerd 字体。检查 ~/.config/waybar/style.css 中的 font-family 设置是否正确无误。
  3. 部分应用(如 Steam、VSCode)出现窗口闪烁或渲染问题?

    • 原因: 这是 Wayland 与某些使用 Electron/CEF 框架应用之间的兼容性问题。
    • 解决方案: 为这些特定应用添加窗口规则 (window rule),禁用模糊和阴影可能会有所帮助。或者,尝试寻找在 Wayland 下运行它们的特定标志(例如,VSCode 的 --ozone-platform-hint=auto)。

六、未来的资源

这套配置是我个人在长期使用中不断打磨的结果,它平衡了美观、性能与实用性。在未来,我计划将我完整的个人 dotfiles 开源到 Gitee / Github,包含更多定制化的脚本和主题,敬请期待。

学习与探索的资源:

祝您在 Hyprland 的世界里,打造出真正属于自己的那片天地!