【免费下载链接】dotfiles
Hyprland + Quickshell Setup for Arch-based distributions
📦 这篇文章基于43PR/dotfiles项目展开。它是面向 Arch 系发行版(Arch、CachyOS、EndeavourOS、Manjaro)的Hyprland + Quickshell桌面配置集合,支持一键安装、主题生成与动态取色。本文重点拆解它的 Hyprland 配置模块化实践:把hyprland.lua按职责拆分为 5 个文件,并用HyprMod以图形界面方式管理部分设置。
一、项目速览:Hyprland + Quickshell 一体化配置
这套 dotfiles 不只是几个 rc 文件,而是一套完整的桌面环境,主要能力包括:
- 顶部栏(Top bar):基于 Quickshell 构建,支持音量、媒体控制、日历
- 设置菜单:系统、网络、蓝牙、显示、音频、存储、主题等页面
- 壁纸选择器 + 动态取色:
Super + W切换壁纸并自动提取配色 - 预置主题:Monochrome、Nord、Tokyo Night 等,也可自建
- 锁屏、电源菜单、剪贴板历史、快速便签等全套辅助功能
安装方式很简单,克隆仓库后运行安装脚本即可(脚本会自动备份原有配置并建立符号链接):
sudo pacman -S git git clone https://gitcode.com/gh_mirrors/dotfiles3241/dotfiles cd dotfiles chmod +x install.sh ./install.sh完整功能列表见 README.md,全部依赖软件包清单在 packages.txt。
⚠️ 注意:安装后不要移动或删除仓库目录,因为
~/.config中的文件是指向仓库的符号链接。详见 install.sh 中的链接逻辑。
二、hyprland.lua 的 5 文件拆分结构
Hyprland 官方推荐使用 Lua 编写配置(~/.config/hypr/hyprland.lua)。在 43PR/dotfiles 中,主配置文件被拆成了「总入口 + 4 个功能模块」的结构:
| 文件 | 职责 | 关键内容 |
|---|---|---|
| hyprland.lua | 总入口 | 全局变量、自启动、环境变量、输入基础设置 |
| monitors.lua | 显示器 | 多屏布局、Workspace 绑定规则 |
| keybinds.lua | 按键绑定 | 全部快捷键与鼠标操作 |
| look.lua | 外观 | 间隙、圆角、模糊、阴影、动画曲线 |
| rules.lua | 窗口规则 | 按应用类名匹配浮动、透明度等 |
| hyprland-gui.lua | HyprMod 占位 | 由 HyprMod 自动写入 GUI 调整过的设置 |
主入口文件通过require依次加载各模块,核心结构如下(hyprland.lua):
---- SPLIT-OUT FILES ---- require("monitors") require("keybinds") require("look") require("rules") -- HyprMod managed settings require("hyprland-gui")这种写法有几个值得学习的小技巧:
1. 全局变量在拆分文件间共享
主文件开头统一声明了几个「可替换变量」(hyprland.lua):
mainMod = "SUPER" terminal = "kitty" menu = "rofi -show drun" fileManager = "thunar" browser = "brave"想要把终端从kitty换成alacritty?只改这一处即可,keybinds.lua 中所有引用terminal、mainMod的快捷键会全部生效。
2. monitors.lua:显示器配置 + Quickshell 联动
monitors.lua 默认使用「自动扩展」模式,并预留了竖屏、禁用屏幕等注释示例。更巧妙的是文件末尾——它会自动加载 Quickshell 设置页面生成的display.lua:
pcall(function() local path = os.getenv("HOME") .. "/.config/quickshell/state/display.lua" local f = io.open(path, "r") if f then f:close() dofile(path) end end)也就是说,你在图形化设置菜单里调整显示器分辨率和缩放时,其实就是在生成这个状态文件再被 Hyprland 读取,实现了「GUI 配置 → Lua 配置」的闭环。同时 monitors.lua 还把 1~4 号 Workspace 固定绑定到主显示器。
3. keybinds.lua:用脚本化思路管理快捷键
keybinds.lua 是拆分中体量最大的文件,其中两处写法很实用:
- 循环生成 Workspace 快捷键:10 个工作区的切换/移动键由一个
for循环注册,避免手写 20 行重复绑定; - 函数式绑定:
Super + Space切换浮动窗口的同时自动居中并缩放至屏幕 70%(keybinds.lua),这是纯文本配置很难优雅表达的复合逻辑。
常用快捷键速查:
| 快捷键 | 功能 |
|---|---|
Super + T | 打开终端 |
Super + D | 应用启动器(Rofi) |
Super + W | 壁纸选择器 |
Super + I | 设置菜单 |
Super + V | 剪贴板历史 |
Super + Tab | 锁屏 |
4. look.lua 与 rules.lua:外观与窗口规则分离
- look.lua 集中管理窗口间隙(
gaps_in/out)、圆角(rounding = 8)、模糊与阴影参数,并自定义了一条easeOut贝塞尔曲线用于窗口动画; - rules.lua 用正则类名匹配,把
pavucontrol、nm-connection-editor等小工具设为浮动窗口,并给 Kitty 抑制最大化事件。
把「外观」和「规则」拆开后,调整视觉效果时不用在一千行配置里翻找,改哪个文件一目了然。
三、配合 HyprMod:部分设置交给图形界面管理
🎛️ 这套配置没有把一切都写死在 Lua 里。packages.txt 中依赖了HyprMod(hyprmod),它是 Hyprland 的图形化配置工具,支持用 GUI 直接修改按键绑定、动画、模糊等设置,并同步回配置文件。
项目对 HyprMod 的集成方式非常克制:
- 独立占位文件:hyprland-gui.lua 在仓库中是一个空文件,专门留给 HyprMod 写入你通过 GUI 调整过的设置;
- 加载顺序兜底:它在所有拆分模块最后被
require,因此 HyprMod 写入的设置优先级最高,可以覆盖手动配置; - 手动配置保持干净:由于 GUI 调整与手写配置物理隔离,
git pull更新仓库时不容易产生合并冲突。
💡 README 中也明确提示:You can modify keybinds using HyprMod(可用 HyprMod 修改按键绑定),见 README.md。
四、模块化带来的更新体验
得益于「仓库即唯一副本 + 符号链接」的模型(install.sh),模块化的配置更新流程极其轻快:
cd dotfiles git pull ./update.shgit pull拉取的新配置会直接反映到正在运行的桌面上(因为~/.config/hypr/里的文件就是仓库文件的链接)。update.sh 支持以下常用参数:
--dry-run:预览变更而不实际执行--skip-packages:跳过软件包更新--restart-shell:若.qml文件有改动,自动重启 Quickshell(update.sh 相关提示)
如果哪天你需要二次改造自己的 dotfiles,这套「主入口 + 按职责拆分 + GUI 设置隔离」的三分法结构,就是一个值得直接照搬的参考模板。
五、常见问题(FAQ)
Q1:安装后找不到壁纸?把壁纸放入Pictures/Wallpapers目录,然后用Super + W调出壁纸选择器;仓库自带的默认壁纸会在安装时复制到该目录(install.sh)。
Q2:移动了仓库位置,桌面配置全丢了?这是因为符号链接指向旧路径。把仓库移到新位置后重新执行一次./install.sh,脚本会自动重建所有链接(install.sh)。
Q3:想完全卸载这套配置怎么办?配置通过符号链接管理,原有文件在安装时已被备份到~/.config-backups/<时间戳>/目录,恢复备份即可回到系统默认状态。
Q4:HyprMod 需要单独安装吗?不需要。hyprmod已包含在 packages.txt 中,install.sh会自动通过 AUR 助手(paru/yay)完成安装。
【免费下载链接】dotfiles
Hyprland + Quickshell Setup for Arch-based distributions
相关推荐
dotfiles:先进的Hyprland配置与管理
dotfiles:先进的Hyprland配置与管理 项目介绍 在现代Linux桌面环境中,用户对于桌面定制化和效率的需求日益增加。ML4W Dotfiles 是
桌面应用aiomysql 错误处理与异常管理:构建健壮异步数据库应用
aiomysql 错误处理与异常管理:构建健壮异步数据库应用 在构建异步数据库应用时, aiomysql错误处理 是确保应用稳定性的关键。作为Python生态中
深入源码:react-native-video-controls 如何用 PanResponder 实现进度条拖拽与音量调节
深入源码:react native video controls 如何用 PanResponder 实现进度条拖拽与音量调节 如果你用过 React Nativ
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考