尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Hyprland键位配置实战:用split-monitor-workspaces打造awesome式工作区切换体系

Hyprland键位配置实战:用split-monitor-workspaces打造awesome式工作区切换体系 Hyprland键位配置实战用split-monitor-workspaces打造awesome式工作区切换体系【免费下载链接】split-monitor-workspacesA small lua package for Hyprland to provide awesome-like workspace behavior项目地址: https://gitcode.com/gh_mirrors/sp/split-monitor-workspaces本教程带你完成一套完整的 Hyprland 键位配置使用 split-monitor-workspaces 这个 Lua 插件让多显示器环境拥有 awesomeWM/dwm 式的独立工作区——每块显示器各自从 1 开始编号SUPER 数字一键切换无需编写任何复杂的 rules 规则。一、为什么多屏用户需要按显示器拆分工作区 ️Hyprland 默认的工作区是全局共享的显示器 A 的 2 号工作区和显示器 B 的 2 号工作区是同一个。对多屏用户来说这很反直觉切到工作区 2时焦点可能跑到另一块屏幕上每块屏幕其实需要自己独立的一套编号空间想要类似awesomeWM 的Mod1~0切屏、ModShift1~0移窗的肌肉记忆却只能靠一堆bindexec和规则硬凑split-monitor-workspaces 正是为解决这个问题而生。它把工作区按显示器拆分并独立编号假设配置 5 个工作区第一块屏拥有 1–5第二块屏拥有 6–10而你只需要在当前显示器上按1~5即可插件自动帮你换算成真实工作区号。 核心原理见 lua/monitors.lua 中的显示器-工作区映射逻辑以及 lua/dispatchers.lua 中的指令分发实现。二、一键安装步骤3 分钟搞定1. 确认版本要求插件要求Hyprland 0.55.0且使用新版 Lua 配置体系。版本过旧可使用项目提供的 C 插件方案已标记为弃用参考 docs/cpp-plugin.md 文档。2. 克隆仓库到插件目录mkdir -p ~/.config/hypr/plugins cd ~/.config/hypr/plugins git clone https://gitcode.com/gh_mirrors/sp/split-monitor-workspaces⚠️ 分支要对齐Hyprland 用maingit 最新版就用main分支用 0.55 发布版就执行git checkout release/0.55.x。每次 Hyprland 小版本更新后记得git pull同步一次。3. 在配置中加载并初始化在 Hyprland 配置文件中加入两行即可见 README.md 第 28~32 行package.path package.path .. ;./?.lua;./?/init.lua local smw require(plugins.split-monitor-workspaces)然后用setup()完成初始化最简配置只有 1 个参数smw.setup({ workspace_count 5, -- 每块显示器启动时创建 5 个持久工作区 })三、核心键位配置数字键切换工作区 这是本教程的主角。利用 Lua 的循环几行代码自动绑定全部数字键local mainMod SUPER for i 1, smw.get_amount_of_workspaces() do local n tostring(i) if n 10 then n 0 end -- 10 号工作区映射到 SUPER0 -- SUPER数字切换到当前显示器的第 N 个工作区 hl.bind(mainMod .. .. n, smw.workspace(n)) -- SUPERShift数字静默移动当前窗口焦点不跟随 hl.bind(mainMod .. SHIFT .. n, smw.move_to_workspace_silent(n)) end绑定完成后你的键盘就有了 awesome 式的完整工作区体系快捷键效果SUPER 1~5切换到当前显示器的第 N 个工作区SUPER SHIFT 1~5把当前窗口移入第 N 个工作区不抢焦点SUPER PAGE_UP / PAGE_DOWN相对切换下一 / 上一个工作区SUPER E跳到当前显示器的第一个空工作区SUPER SHIFT E把窗口移到第一个空工作区SUPER SHIFT G回收所有无主窗口到当前工作区几个实用细节完整示例见 docs/example.lua 第 52~70 行相对跳转smw.workspace(1)、smw.workspace(-2)支持跳过 N 个工作区到达末尾会自动回绕可配置关闭empty魔法参数smw.workspace(empty)会自动找到空闲工作区写新文档、开新聊天窗口时非常顺手循环切换smw.cycle_workspaces(next)可绑定鼠标上下键或滚轮配合N/-N还能一次跳多个四、进阶配置多屏精调与个性化 ⚙️setup()支持丰富的选项覆盖绝大多数多屏场景参数说明见 docs/example.lua 第 13~39 行配置项作用适合谁monitor_priority指定显示器优先级排前面的屏拿小号工作区主副屏固定的用户max_workspaces按显示器覆盖工作区数量如副屏只给 3 个大小屏组合link_monitors开启后所有屏同步切换类似 Gnome想要联动模式的用户enable_wrapping循环切换是否回绕习惯首尾相连的用户keep_focused重载配置时保持当前工作区焦点频繁改配置的用户推荐开启例如双屏配置主屏 DP-1 拥有 5 个、副屏 DP-2 只需 3 个工作区smw.setup({ workspace_count 5, monitor_priority { DP-1, DP-2 }, -- DP-1 拿 1-5DP-2 拿 6-8 max_workspaces { [DP-2] 3 }, keep_focused true, })插件还会自动监听monitor.added/monitor.removed事件见 lua/split-monitor-workspaces.lua 第 70~88 行热插拔显示器无需重启新屏自动获得自己的工作区编号。五、Waybar 状态栏联动工作区一目了然 插件与 Waybar 的hyprland/workspaces模块原生兼容推荐在waybar配置中区分显示状态参考 README.md 第 74~92 行hyprland/workspaces: { format: {icon}, format-icons: { active: , // 当前显示器的焦点工作区 visible: , // 其他显示器上的焦点工作区 empty: ⚪ // 插件创建的持久工作区 }, on-scroll-up: hyprctl dispatch split-cycleworkspaces -1, on-scroll-down: hyprctl dispatch split-cycleworkspaces 1, all-outputs: false }设置all-outputs为false是关键——这样状态栏只显示当前显示器的工作区编号体验与键盘完全一致。六、常见问题排查 ️1. 按数字键没反应检查package.path是否正确、插件是否克隆到~/.config/hypr/plugins下Hyprland 版本低于 0.55.0 需改用 docs/cpp-plugin.md 中的 C 方案。2. 更新 Hyprland 后插件报错进入插件目录执行git pull并切到对应release/0.XX.x分支后重载配置。项目的 hyprpm.toml 中维护了 0.38~0.56 各版本与插件提交的精确对应关系。3. 使用了 hy3 插件会冲突吗不会。插件会自动检测 hy3 是否加载加载了则通过 hy3 的指令移动整个节点组行为反而更完整。4. 窗口消失了去哪找按SUPER SHIFT G调用grab_rogue_windows()把所有未映射到工作区的窗口抓回当前工作区。七、总结通过本文的 Hyprland 键位配置实战你只需要一次git clone、两行require、一个setup()和一小段hl.bind循环就获得了✅ 多显示器工作区独立编号数字键一键直达✅ awesome 式SUPER数字切换 /SUPERShift数字移窗肌肉记忆✅ 热插拔自动适配、空工作区跳转、无主窗口回收✅ Waybar 状态栏无缝联动想要查看完整 API 与所有可选配置的官方示例推荐阅读 docs/example.lua各模块源码位于 lua/ 目录体积小巧、注释清晰非常适合想深入理解 Hyprland 工作区机制的读者。【免费下载链接】split-monitor-workspacesA small lua package for Hyprland to provide awesome-like workspace behavior项目地址: https://gitcode.com/gh_mirrors/sp/split-monitor-workspaces创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表