triad: 面向数据的窗口管理器,适用于 River Wayland compositor
摘要
Triad 是一款动态窗口管理器,适用于 River Wayland compositor,它通过标签、规则、IPC 和嵌入式 Janet 脚本将显示与策略分离,从而实现可脚本化的窗口布局和多布局。
查看缓存全文
缓存时间: 2026/05/16 17:14
greenm01/triad
来源: https://github.com/greenm01/triad
Triad
https://github.com/user-attachments/assets/27e4bde8-95fc-40cf-9830-5373ac0bcc74
Triad 是一个面向 Wayland 的动态窗口管理器,专为 River 合成器构建。它将显示与策略分离:River 处理 Wayland 协议,而 Triad 管理窗口布局。这种解耦确保了弹性;如果 Triad 重启,你的窗口将保持原位不变。
Triad 将你的会话视为扁平数据。窗口携带标签,而非存在于僵化的层次结构中。这使得条件逻辑高效运行,将窗口管理转变成一个可脚本化的引擎。
需要屏幕锁定?请参阅 LockMe (https://github.com/greenm01/lockme)。
Triad 的构成
Triad 基于 标签、规则 和 IPC 构建。
标签为窗口提供稳定、并发的标签。规则以 KDL 编写,提供声明式默认值。IPC 通过 Unix 套接字暴露模型的快照。三者共同允许外部脚本作为策略层。脚本可以查询某个标签上的窗口数量或当前布局,然后再放置新应用。
使用 Janet 实现可脚本化策略
配置处理可预测的情况;代码处理例外情况。
Triad 嵌入了 Janet——一种小型、面向数据的 Lisp——以支持条件逻辑。Janet 脚本将 Triad 的状态作为原生表接收,并直接执行放置函数,避免了套接字通信和 JSON 解析的开销。
这实现了应用清单:沙盒化的 Janet 脚本,评估桌面上下文以决定布局。它们是 X11 窗口提示的可执行替代方案,允许你的环境根据活动窗口进行调整。
滚动及其他布局
Triad 具有滚动布局,为你的工作流程提供流畅的画布。
它还支持另外 11 种布局模式,包括主从堆叠(Master-Stack)、网格(Grid)和单片(Monocle)。你可以为每个工作区独立切换这些布局。
外壳生态系统
Triad 原生支持 Waybar 和 Quickshell。
虽然它有原生的 JSON 流,但它也会将状态投射为 Niri 形状的 JSON。你可以直接使用现有的 Waybar 配置或 Quickshell 主题——例如 Noctalia-shell 或 DankMaterialShell——无需修改。
功能概览
- 崩溃弹性: 将策略与合成器解耦意味着布局错误不会影响你的会话。
- 兼容 Waybar 与 Quickshell: Niri 形状的 JSON 投射确保了与主流外壳生态系统的兼容性。
- 动态工作区: 按需生成工作区,并在空闲时清理。
- 平滑动画: 使用可配置的帧速率和指数缓动实现窗口移动。
- 速记板(Scratchpad): 作为居中叠加层管理实用窗口。
- 稳定标识: 标签和窗口 ID 保持不变,适用于长时间运行的脚本。
安装
完整的安装和会话设置说明请参阅 INSTALL.md。 对于 Nix 用户的最快路径:
git clone https://github.com/greenm01/triad.git
cd triad
nix develop
nix build .#triad
nix run .#install-session
在非 NixOS 系统上,install-session 默认会将显示管理器会话注册到 /usr/share/wayland-sessions 下。在 NixOS 上,请使用 flake 的 nixosModules.default 模块并设置 programs.triad.enable = true。两种路径请参见 INSTALL.md。
工具链
Triad 通过 choosenim 跟踪稳定版 Nim。
choosenim update self
choosenim update stable
nim --version
在运行完整预检之前,编译器必须报告 Nim 2.2.4 或更高版本。
开发检查
迭代时使用标准任务:
nimble test
nimble build
nimble tidy
发布更改之前,运行本地完整预检:
nimble verify
nimble liveReload
verify 需要干净的工作树,运行测试和构建,整理生成的文件,并确保没有留下可执行二进制文件。对于运行时相关的工作,请在 Live 会话中执行 nimble liveReload。
额外资源:
- 实时测试:
docs/live-testing.md - 配置指南:
docs/configuration.md - 虚拟终端切换与恢复:
docs/qemu-vt-smoke.md - 日常驱动门槛:
docs/daily-driver-gates.md
IPC 与导航
你可以直接通过 CLI 与 Triad 的 IPC 套接字交互:
triad msg focus-next
triad msg toggle-overview
triad msg layout-tile
有关命令和 JSON 状态协议的完整指南,请参见 docs/ipc.md。
许可证
Triad 以 MIT 许可证发布。
相似文章
fht-compositor: 一个动态平铺的Wayland合成器
fht-compositor是一个受dwm和xmonad启发的动态平铺Wayland合成器,提供自动窗口布局和以键盘为中心的工作流程。
@wsl8297: 逛 GitHub 时挖到一个狠角色:niri。它直接绕开传统桌面“窗口一多就被挤变形”的老毛病,把窗口管理方式彻底重做了一遍。 niri 采用可滚动的平铺思路:窗口按列铺在一条“无限延伸”的水平条带上。你开新窗口,不会强行压缩现有窗口;多…
文章介绍了开源项目 niri,这是一款基于 Wayland 的新型桌面合成器,通过可滚动平铺布局避免传统窗口拥挤问题,并支持动态工作区、多显示器独立管理及自定义着色器动画等特性。
Xfwl4 的首个预览版发布
Brian Tarricone 宣布推出 xfwl4 的首个预览版,这是 Xfce 的 Wayland 合成器,经过了六个月的工作,详细说明了已知缺失的功能和未来计划。
TriAdReview:面向多模型技术文档生成的三角对抗评审架构
本文提出TriAdReview,一种三角对抗评审架构,该架构使用两个独立的评审模型(工程视角和边界视角)以及一个裁决机制,迭代改进生成模型在技术文档生成中的输出。实验表明,相比单模型基线,整体提升了10.1%,在安全审计、代码生成和架构设计方面取得显著提升,但在需求分析上出现下降,表明效果具有任务依赖性。
TRINE:一种面向多模态AI的令牌感知、运行时自适应FPGA推理引擎
TRINE是一款单比特流FPGA加速器与编译器,用于端到端多模态推理,统一了多种层类型,并集成了运行时自适应计算模式、令牌剪枝和依赖感知的卸载功能,在20-21W功耗下相比RTX 4090实现最高22.57倍的延迟降低。