随心所欲的配置 Hyprland

随心所欲的配置 Hyprland

本文翻译自 https://itsfoss.com/configuring-hyprland/

你已经安装了 Hyprland,现在你希望体验它简洁的平铺窗口管理功能以及炫酷的视觉效果了吗?

Hyprland 是高度可定制的,这个项目提供了一份非常详尽的用户手册。

但是你可能不想从一开始就阅读完整文档,因此,我分享了一些基本的 Hyprland 配置,作为初学者指南。

📋 本文假设你安装的是原始版本的 Hyprland。如果你通过其他用户的配置文件安装了 Hyprland,可能无需执行本文提到的所有步骤。

1. 移除自动生成配置的警告

首次登录全新安装的 Hyprland 系统时,你会看到一条提示“你正在使用自动生成的配置文件”。

自动生成的配置警告

要移除该警告,请打开 Hyprland 的配置文件:

1
nano ~/.config/hypr/hyprland.config

找到以下行并删除:

1
autogenerated = 1

它通常位于文件的开头位置。删除后保存文件,你会立即看到效果。

💡 Hyprland 的配置文件路径是 /home/$USER/.config/hypr/hyprland.config

2. 使用 Hyprpaper 设置壁纸

如果你使用 archinstall 脚本安装 Hyprland,可能会发现没有壁纸。

一开始我也以为我的安装失败了,因为登录后只看到一片漆黑的屏幕和自动生成配置的警告。

在 Hyprland 中,可以使用 Hyprpaper 工具设置壁纸。它支持多屏幕壁纸设置及其他有趣功能。

在 Arch Linux 中安装 Hyprpaper:

1
sudo pacman -Syu hyprpaper

安装完成后,检查 ~/.config/hypr/hyprpaper.conf 是否存在。如果不存在,请手动创建:

1
nano ~/.config/hypr/hyprpaper.conf

打开终端,运行以下命令以获取显示器名称:

1
hyprctl monitors
显示器名称

📋 之后提到“列出显示器”时,表示运行 hyprctl monitors

假设我的显示器名称是 Virtual-1,在 Hyprpaper 配置中预加载壁纸并应用:

1
2
3
4
preload = <壁纸路径>

# wallpaper = <显示器名称>, <壁纸路径>
wallpaper = Virtual-1, /home/team/Pictures/wallpaper.png
简单的壁纸设置

📋 需要设置的壁纸必须预加载。建议限制加载的图片数量以降低内存占用。

完成配置后保存文件并退出。然后,打开 Hyprland 配置,添加以下行:

1
exec-once hyprpaper
在 Hyprland 中自启动应用

📋 exec-once 关键字用于定义在 Hyprland 启动时自动运行的应用。可以使用 & 操作符在一行中启动多个应用。

重新登录 Hyprland 以查看效果。

💡 使用快捷键 Super+M 退出 Hyprland 会话并返回登录界面。

3. 配置显示器

此部分更适用于双屏或多屏设置。

首先列出已连接的显示器并获取其名称。获取名称后,打开 Hyprland 配置文件,在 MONITORS 部分添加如下内容:

1
2
3
# monitor=<显示器名称>,<分辨率>@fps,<位置>,<缩放比例>

monitor=Virtual-1,1920x1080@60,0x0,1.5
设置显示器

在此配置中,<位置> 是指在多屏环境中当前显示器的位置。例如,假设有一台分辨率为 3860×2160 的主显示器,另一台分辨率为 1920×1080 的次显示器,则次显示器的位置可以设置为 3860×0,以使其位于主显示器的右侧:

1
monitor=monitor2-name,1920x1080@60,3860x0,1

💡 位置 的值可以为负,例如 -1080,这用于将一台显示器放置在另一台的上方。

4. 添加面板

面板是任何窗口管理器或桌面环境的核心部分。任务栏、系统托盘、工作区指示器等重要工具都在面板中显示。

在 Hyprland 中可以使用面板/工具栏应用,例如 Waybar

Waybar 面板

🚧 Hyprland 是纯粹的 Wayland 环境,因此建议使用适配 Wayland 的面板应用。

我们有一篇详细的 Waybar 安装和配置指南,可以参考以获取更多信息。

5. 设置通知守护程序

像 GNOME、KDE Plasma 等主流桌面环境会自动处理通知功能,但在 Hyprland 中需要手动配置。这是必须的

如果没有通知守护程序,你会错过现代桌面计算中的重要部分。

我发现 dunst(一个高度可定制的通知守护程序)已被自动安装,我决定继续使用它。你也可以通过以下命令安装:

1
sudo pacman -Syu dunst

安装完成后,通过发送测试通知来验证:

1
notify-send "Hello World!"
Dunst 消息测试

如果工作正常,就完成了。如果没有,请在 Hyprland 配置中添加以下内容以自动启动:

1
exec-once dunst

然后重新登录系统。

6. 配置剪贴板管理器

剪贴板管理器是任何系统的重要工具。我推荐使用 CopyQ,一款简单且功能强大的剪贴板管理器。

安装 CopyQ:

1
sudo pacman -Syu copyq
CopyQ 剪贴板管理器

在 Hyprland 配置中添加以下内容以自动启动 CopyQ:

1
exec-once copyq --start-server

然后,打开 CopyQ,进入 File → Preferences,在 Layout 选项卡中勾选 Hide Main Window(隐藏主窗口)

隐藏主窗口

7. 设置截图工具 Hyprshot

谁不想与社区分享他们的 Hyprland 设置呢?为了截图,你需要一个工具,而 Hyprshot 是个不错的选择。

🚧 Hyprshot 的正常运行依赖于已配置的通知守护程序(如上所述)。

在安装 Hyprshot 前,确保安装以下依赖项。在 Arch Linux 中运行:

1
sudo pacman -Syu jq grim slurp wl-clipboard libnotify

然后通过 AUR 安装 Hyprshot。可以使用 AUR 助手(例如 Yay):

1
yay -S hyprshot

或者遵循 传统 AUR 安装方法

如果你使用其他发行版,可以访问 Hyprshot GitHub 页面,从发布页面下载脚本并将其放置在 PATH 环境变量指定的目录中。

接着,打开 Hyprland 配置文件,滚动到 KEYBINDINGS 部分,在末尾添加以下内容:

1
2
# 截取窗口
bind = , PRINT, exec, hyprshot -m region
设置快捷键

💡 你可能注意到命令前有个逗号。这表示未使用任何修饰键(例如 SUPER)。只需按下 PrtScr 键即可截图。如果想使用快捷键 SUPER+PrtScr,可以将 SUPER 加在逗号前,例如:

1
bind = SUPER, PRINT, exec, hyprshot -m region

这会绑定 PrtScr 键以选择区域截图。

区域截图

截图文件默认保存到 ~/Pictures 文件夹中。

截图保存通知

如果只想将截图复制到剪贴板而不保存,可以使用以下命令:

1
hyprshot -m region --clipboard-only

我们将在后续部分深入探讨键绑定设置。

8. Hyprland 动画效果

为窗口打开、工作区切换设置酷炫的动画效果,是让 Hyprland 更加吸引人的一种方式。

要设置动画效果,你需要获取贝塞尔曲线的参数值。可以访问以下网站设计曲线或选择预设:

贝塞尔曲线生成器

使用红点调整曲线,并通过按钮预览动画,如下图所示:

选择曲线

复制过渡值

完成设置后,你将获得 4 个值,例如 0.19, 1, 0.52, 0.35。记录下这些值。

在 Hyprland 配置中,找到 LOOK AND FEEL 部分,滚动到动画设置部分。

将贝塞尔曲线参数设置为如下格式:

1
2
# bezier = 贝塞尔名称, 复制的值
bezier = customBezier, 0.19, 1, 0.52, 0.35
自定义动画

定义动画过渡后,可以应用到需要的部分,如窗口打开(windows)、关闭(windowsOut)等。在此示例中,我们将该动画应用于工作区切换:

1
2
# animation = 动画部分, 开启/关闭, 速度, 贝塞尔名称
animation = workspaces, 1, 6, customBezier

参考 动画 Wiki 获取详细设置说明。

9. Hyprland 的变量配置

Hyprland 使用变量控制系统的多个方面。

这里展示一些变量设置示例,帮助你更轻松地理解其他变量的使用。

首先,访问 Hyprland 的变量 Wiki 页面:

Hyprland Variables Wiki

你可以找到变量名称及其类型(如布尔型、整型等),分类详尽,并含有子类别。要定义一个变量,你需要在大括号内打开一个类别。

例如,如果想在平铺模式下通过边框拖拽调整窗口大小,有一个名为 resize_on_border 的选项,属于 general 类别。定义方式如下:

1
2
3
general {
resize_on_border = true
}

注意事项

🚧大多数类别(如 general)已在默认 Hyprland 配置中定义。因此,在定义新类别前,先检查该类别是否已存在。如已存在,请在该类别中定义变量。

对于有子类别的部分,使用嵌套结构。例如,general 类别下有一个子类别 snap,定义如下:

1
2
3
4
5
6
7
general {
general 类别的变量定义。

snap {
子类别的变量定义。
}
}

调整浮动窗口大小

在平铺模式下,有些窗口(如应用首选项或文件选择器)是浮动窗口。可以通过 general 类别的 resize_corner 变量启用角落拖拽调整大小功能:

1
2
3
general {
resize_corner = 3
}

这里,值 3 表示可从右下角拖拽调整大小。

调整角落
1 左上角
2 右上角
3 右下角
4 左下角
0 禁用角落调整大小

自定义装饰

decorations 部分包含透明度、模糊等设置。查看默认 Hyprland 配置,你会发现一些预设值。以下是几点建议:

  • active_opacity 设置为 0.8,使活动窗口稍微透明,同时调整 inactive_opacity
  • 增加模糊 passes 数量可让效果更酷炫,但会增加 GPU 负担。
  • 建议开启 new_optimizations 以提升性能。

工作区与触控板

Hyprland 支持通过触控板手势切换工作区,但默认禁用。需要启用以下设置:

1
2
3
4
gestures {
workspace_swipe = true
workspace_swipe_fingers = 3
}

自定义变量

像其他编程语言一样,Hyprland 支持为自定义变量赋值。

例如,为变量 myLauncher 指定一个命令来打开 Wofi 启动器:

1
$myLauncher = wofi --show drun

这样,在需要时直接使用变量名,而无需每次输入完整命令。对于分类默认应用定义,这尤其有用。

例如:

1
2
$myPersonalBrowser = firefox
$myKeyboardBrowser = nyxt

10. 环境变量设置

Hyprland 的许多设置依赖环境变量,例如光标主题、QT 和 Wayland 特定配置等。

定义环境变量需使用 env 关键字,格式如下:

1
env = 环境变量名称, 值

例如,为了让某些 QT 应用在 Wayland 下运行,若不可用则回退到 X11,使用以下变量:

1
env = QT_QPA_PLATFORM,wayland;xcb

🚧不要在值周围加双引号。

11. 配置 Hyprcursor

Hyprcursor 是一种为 Hyprland 提供的高效光标集。以下是设置 rose-pine-hyprcursor 主题的步骤:

首先,从 AUR 安装:

1
yay -S rose-pine-hyprcursor

安装后,在 Hyprland 配置中设置环境变量:

1
env = HYPRCURSOR_THEME,rose-pine-hyprcursor

或者使用 hyprctl 命令仅为当前会话设置:

1
hyprctl setcursor rose-pine-hyprcursor 24

📋其中,24 表示光标大小。

12. 设置键盘快捷键

没有快捷键的平铺窗口管理器会少很多乐趣!

Hyprland 提供简单的方法定义自定义快捷键。在默认配置中,有一个专门的 KEYBINDINGS 部分。建议初学者在此部分定义快捷键。

定义快捷键的语法如下:

1
bind = 修饰键, 所需按键, 执行器, 参数

例如,我们希望通过快捷键 SUPER+O 打开 Nautilus 文件管理器,设置如下:

1
bind = SUPER,O,exec,nautilus

使用变量简化

可以将 SUPER 键设置为变量以使代码更简洁:

1
$mainMod = SUPER

Bonus: 自动启动应用程序

有时需要在登录时自动启动某些应用。Hyprland 使用 exec-once 命令实现应用的自动启动,例如:

1
# exec-once 应用程序名称

以下是在登录时启动 Hyprpaper 和 Waybar 的示例:

1
exec-once hyprpaper & waybar

总结

正如开篇所说,Hyprland 的自定义设置无穷无尽。参考 官方 Wiki 获取更多详细信息。

希望本指南能帮助你更好地配置和优化 Hyprland! 😊