hy3 × split-monitor-workspaces强力组合:如何整组移动窗口跨工作区
【免费下载链接】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是一个 Hyprland Lua 包,提供 awesome/dwm 风格的工作区行为——把工作区按显示器切分、独立编号。再搭配hy3窗口分组插件,你可以一键把整组窗口跨工作区移动。本文带你 3 步完成这套组合配置。
为什么这个组合这么香 💪
- split-monitor-workspaces:工作区按显示器切分并独立编号。鼠标在左屏时按
SUPER+1就是左屏的工作区 1,右屏有自己独立的编号段,再也不用担心跳错屏。 - hy3:把多个窗口归为一个"组",支持把整组窗口当成整体操作。
- 关键点:split-monitor-workspaces 会自动检测 hy3,一旦发现已安装,所有"移动窗口到工作区"操作都会改用 hy3 的调度器(dispatcher)——移动的不是当前焦点的单个窗口,而是整个节点组一起跨工作区迁移。
1️⃣ 三步安装 split-monitor-workspaces
要求:Hyprland ≥ 0.55.0 且使用新版 Lua 配置。(更老版本可用已弃用的 C++ 插件,见
docs/cpp-plugin.md。)
第一步:克隆到插件目录
mkdir -p ~/.config/hypr/plugins cd ~/.config/hypr/plugins git clone https://gitcode.com/gh_mirrors/sp/split-monitor-workspaces第二步:在 Hyprland Lua 配置中引入
package.path = package.path .. ";./?.lua;./?/init.lua" local smw = require("plugins.split-monitor-workspaces")第三步:调用 setup() 初始化
smw.setup({ workspace_count = 5, -- 启动时在每个显示器创建 5 个持久工作区 })💡 小技巧:分支要和你的 Hyprland 版本对应(例如release/0.55.x),Hyprland 小版本更新后记得git pull,保证兼容性。
2️⃣ 键位绑定:一键整组移动 ⌨️
在 Lua 配置里加上键位绑定:SUPER+数字切换到当前显示器的第 N 个工作区;SUPER+SHIFT+数字把活动窗口(也就是整个 hy3 组)移动过去,且不抢占焦点:
local mainMod = "SUPER" for i = 1, 5 do local n = tostring(i) hl.bind(mainMod .. " +" .. n, smw.workspace(n)) -- 切换工作区 hl.bind(mainMod .. " + SHIFT +" .. n, smw.move_to_workspace_silent(n)) -- 移动窗口 end现在加载 hy3 的情况下,在左屏按SUPER+SHIFT+3,当前窗口组里的所有窗口会一起搬到左屏第 3 工作区——右屏的工作区编号和状态完全不受影响。
完整 API 示例可以参考docs/example.lua,还支持+1/-1相对跳转、empty(跳去第一个空工作区)等用法;另外grab_rogue_windows()可以一键把"孤儿窗口"收回到当前工作区,建议绑定为SUPER+SHIFT+G。
3️⃣ 它是怎么自动检测 hy3 的 🔍
核心逻辑在lua/dispatchers.lua的do_move_to_workspace中:
- 检测到
hl.plugin.hy3存在 → 调度hy3.move_to_workspace(目标工作区, { follow = true }),整组移动并跟随过去;静音版本(silent)则不改变焦点。 - 未检测到 hy3 → 回退到 Hyprland 原生
window.move,只移动焦点窗口。
也就是说无需任何额外配置:装好 hy3,组合即生效。各模块路径一览:
- 公开 API 入口:
lua/split-monitor-workspaces.lua - hy3 检测与移动逻辑:
lua/dispatchers.lua - 显示器-工作区范围分配:
lua/monitors.lua - 默认配置项:
lua/globals.lua
多屏编号与优先级
两块屏、workspace_count = 5时:第一块屏分 1–5,第二块 6–10。可在setup()里用monitor_priority指定哪块屏拿小号,用max_workspaces给每块屏设置不同数量;设link_monitors = true则切换时所有显示器同步切到同号工作区(Gnome 风格)。
❓ 常见问题
Q:没装 hy3 还能用吗?可以,会自动回退到 Hyprland 原生移动命令,只是移动单个焦点窗口。
Q:我的 Hyprland 版本较老(< 0.55)或还在用传统 conf 配置?请改用 C++ 插件,配置方法见docs/cpp-plugin.md;官方说明该方式将在 Hyprland 0.57.0 发布后弃用。
Q:装完看不到工作区?默认enable_persistent_workspaces = true会为每块屏创建空工作区;打开终端查看插件输出的映射日志(每块屏分到哪段编号)即可确认。
总结 🚀
split-monitor-workspaces 让 Hyprland 拥有按显示器独立编号的工作区,而 hy3 让窗口可以成组迁移——两者自动衔接,一次按键即可整组窗口跨工作区移动。无需复杂规则,约 3 分钟完成全部配置。
【免费下载链接】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),仅供参考