NixOS部署split-monitor-workspacesflake home-manager完整配置教程【免费下载链接】split-monitor-workspacesA small lua package for Hyprland to provide awesome-like workspace behavior项目地址: https://gitcode.com/gh_mirrors/sp/split-monitor-workspacessplit-monitor-workspaces 是一个为 Hyprland 提供 awesome/dwm 式工作区行为的 Lua 插件包把屏幕工作区拆分到每个显示器并独立编号SUPER数字即可在当前屏幕秒切/秒移窗口。本文带你用 flake home-manager 在 NixOS 上完成部署、配置与验证全程无需手动 clone。一、30秒认识 split-monitor-workspaces 插件 在原生 Hyprland 中所有屏幕共享同一套工作区编号1、2、3…多屏用户常常需要第 11 号工作区这种令人困惑的数字。split-monitor-workspaces 解决了这个问题每屏独立编号每块屏幕各有 1~N 个工作区默认 N10鼠标在哪块屏上SUPER1就切到哪块屏的工作区 1持久工作区开机即为每块屏幕创建空工作区新显示器热插拔时自动分配简单 APIsmw.workspace(n)、smw.move_to_workspace_silent(n)等闭包可直接绑定快捷键hy3 自动适配检测到 hy3 插件后自动使用其调度器移动整组节点版本要求Hyprland ≥ 0.55.0需已切换到新版 Lua 配置系统。旧版本请使用项目中的 C 插件功能相同但已标记弃用。二、为什么用 flake home-manager 部署官方 README 的默认安装方式是手动git clone到~/.config/hypr/plugins。这对普通用户可行但 NixOS 用户更推荐 flake 方案对比项手动 cloneflake home-manager版本可复现❌ 取决于 git pull 时机✅ 锁文件精确锁定 commit声明式管理❌ 裸目录不在声明范围内✅ 一条home.file声明多机同步❌ 每台机器单独操作✅ 同一 flake 重建即可卸载❌ 手动删目录✅ 删掉声明后重建即清理三、第一步为 flake.nix 添加插件输入在项目根目录的flake.nix中声明输入。插件本体是纯 Lua 包无需编译作为源码输入直接取用即可# flake.nix { inputs { nixpkgs.url github:NixOS/nixpkgs/nixos-unstable; home-manager { url github:nix-community/home-manager; inputs.nixpkgs.follows nixpkgs; }; # split-monitor-workspaces 源码纯 Lua无需编译 split-monitor-workspaces.url githttps://gitcode.com/gh_mirrors/sp/split-monitor-workspaces; # 想锁定版本加上 ref例如 # split-monitor-workspaces.ref v0.55.4; }; outputs { self, nixpkgs, home-manager, split-monitor-workspaces, ... }: let system x86_64-linux; # 按需替换为你的系统 pkgs nixpkgs.legacyPackages.${system}; in { nixosConfigurations.your-hostname nixpkgs.lib.nixosSystem { system system; modules [ ./configuration.nix # 你的基础配置 home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs true; home-manager.useUserPackages true; home-manager.extraSpecialArgs { inherit split-monitor-workspaces; }; home-manager.users.your-username ./home.nix; # 见下一步 } ]; }; }; }提示项目自带的 flake.nix 面向已弃用的 C 插件输出基于 Makefile 与 meson 构建。本教程只把它当作源码仓库使用不需要调用它的 package 输出若你同时需要构建 C 插件请按 docs/cpp-plugin.md 的样例补上hyprland输入并用inputs.hyprland.follows hyprland保持一致。四、第二步home-manager 一条声明部署插件新建home.nix核心只有两件事启用 Hyprland把插件源码链接进 Hyprland 配置目录# home.nix { pkgs, config, split-monitor-workspaces, ... }: { # 1. 启用 Hyprland若已启用请忽略 wayland.windowManager.hyprland.enable true; # 2. 将插件部署到 ~/.config/hypr/plugins/split-monitor-workspaces # home-manager 会自动维护这个符号链接升级时指向新 store 路径 home.file..config/hypr/plugins/split-monitor-workspaces.source split-monitor-workspaces; # 3. 声明式管理 Hyprland Lua 主配置0.55 的 Lua 配置入口 home.file..config/hypr/main.lua.text package.path package.path .. ;./?.lua;./?/init.lua local smw require(plugins.split-monitor-workspaces) smw.setup({ workspace_count 5, -- 每块屏幕 5 个工作区 monitor_priority { DP-1, DP-2 }, -- DP-1 拿最低编号段 }) local mainMod SUPER for i 1, smw.get_amount_of_workspaces() do -- 切换到当前屏幕的第 N 个工作区 hl.bind(mainMod .. .. i, smw.workspace(i)) -- 移动活动窗口到第 N 个工作区不抢焦点 hl.bind(mainMod .. SHIFT .. i, smw.move_to_workspace_silent(i)) end -- 滚轮/按键循环工作区 hl.bind(mainMod .. mouse_down, smw.cycle_workspaces(next)) hl.bind(mainMod .. mouse_up, smw.cycle_workspaces(prev)) ; }入口文件 init.lua 会把require(plugins.split-monitor-workspaces)转发到真正的包体 lua/split-monitor-workspaces.lua因此package.path里必须包含;./?.lua;./?/init.lua这两条模板——这是新手最容易漏掉的一行。五、常用配置项速查表smw.setup()支持的全部选项及默认值定义在 lua/globals.lua选项默认值说明workspace_count10每块屏幕分配的工作区数量keep_focusedtrue重载配置后保持当前工作区焦点enable_persistent_workspacestrue空工作区也保持存活工作区栏可见enable_wrappingtrue循环到末尾后回绕到第一个link_monitorsfalsetrue Gnome 式全屏同步切换monitor_priority{}屏幕优先级排前的拿最低编号段max_workspaces{}按屏幕覆盖数量如{ [DP-2] 3 }完整可运行的配置范例见 docs/example.lua包含1/-1相对切换、empty空工作区直达等高级用法。六、第三步重建 NixOS 并验证效果 ✅# 重建并激活首次会拉取插件源码并进入 Nix store nixos-rebuild switch --flake .#your-hostname重启 Hyprland或注销重新登录后验证把鼠标移到第二块屏幕上按SUPER1——应切换到第二块屏的工作区 1而不是全局工作区 1按SUPERSHIFT3移动当前窗口到工作区 3焦点不漂移命令行验证循环调度器hyprctl dispatch split-cycleworkspaces 1如果工作区栏想区分本屏焦点 / 他屏焦点 / 空持久工作区可参考 README 中的 Waybarhyprland/workspaces集成配置配合empty图标格式与split-cycleworkspaces滚动事件。七、常见问题与避坑指南 ⚠️Q1require 报错module ... not found检查两点①package.path一行是否漏写②ls ~/.config/hypr/plugins/split-monitor-workspaces/下是否存在 init.lua。home-manager 管理的是符号链接重建后路径自动更新无需手动 git pull。Q2插件和 Hyprland 版本对不上main分支跟踪 Hyprland 最新 git使用发行版稳定版如 0.55.x时请锁定对应 tagsplit-monitor-workspaces { url githttps://gitcode.com/gh_mirrors/sp/split-monitor-workspaces; ref v0.55.4; # 与 Hyprland 0.55 系列匹配 };版本映射关系可对照 hyprpm.toml 中的 commit 对应表。Q3我的 Hyprland 低于 0.55 怎么办Lua 包不支持。改走 docs/cpp-plugin.md 的 NixOS 路径把项目 flake 的 package 输出加入wayland.windowManager.hyprland.plugins或直接用hyprpm addhyprpm enable。Q4我还在用 hy3无需任何配置——插件会自动检测 hy3 是否加载加载后移动操作会自动走 hy3 调度器、整体搬运节点组。八、项目关键文件速查文件用途README.md安装方式、按键绑定与 Waybar 集成flake.nix项目 flakeC 插件打包与 devShellinit.luaLua 包入口lua/split-monitor-workspaces.lua公共 APIsetup/workspace/move_to_workspace等lua/globals.lua配置项默认值docs/example.lua完整配置范例docs/cpp-plugin.md已弃用 C 插件文档旧版 Hyprland 适用CONTRIBUTING.md贡献指南含 luacheck 与 AI 使用政策按以上三步——加输入 → 写声明 → 重建——你就拥有了版本锁定、可复现的 Hyprland 多屏工作区环境。后续升级只需更新 flake 输入并nixos-rebuild switch告别git pull 玄学。【免费下载链接】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),仅供参考