triad: 面向数据的窗口管理器,适用于 River Wayland compositor

Lobsters Hottest 工具

摘要

Triad 是一款动态窗口管理器,适用于 River Wayland compositor,它通过标签、规则、IPC 和嵌入式 Janet 脚本将显示与策略分离,从而实现可脚本化的窗口布局和多布局。

<p><a href="https://lobste.rs/s/hcicuz/triad_data_oriented_window_manager_for">评论</a></p>
查看原文
查看缓存全文

缓存时间: 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-shellDankMaterialShell——无需修改。

功能概览

  • 崩溃弹性: 将策略与合成器解耦意味着布局错误不会影响你的会话。
  • 兼容 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 许可证发布。

相似文章

@wsl8297: 逛 GitHub 时挖到一个狠角色:niri。它直接绕开传统桌面“窗口一多就被挤变形”的老毛病,把窗口管理方式彻底重做了一遍。 niri 采用可滚动的平铺思路:窗口按列铺在一条“无限延伸”的水平条带上。你开新窗口,不会强行压缩现有窗口;多…

X AI KOLs Timeline

文章介绍了开源项目 niri,这是一款基于 Wayland 的新型桌面合成器,通过可滚动平铺布局避免传统窗口拥挤问题,并支持动态工作区、多显示器独立管理及自定义着色器动画等特性。

Xfwl4 的首个预览版发布

Lobsters Hottest

Brian Tarricone 宣布推出 xfwl4 的首个预览版,这是 Xfce 的 Wayland 合成器,经过了六个月的工作,详细说明了已知缺失的功能和未来计划。

TriAdReview:面向多模型技术文档生成的三角对抗评审架构

arXiv cs.LG

本文提出TriAdReview,一种三角对抗评审架构,该架构使用两个独立的评审模型(工程视角和边界视角)以及一个裁决机制,迭代改进生成模型在技术文档生成中的输出。实验表明,相比单模型基线,整体提升了10.1%,在安全审计、代码生成和架构设计方面取得显著提升,但在需求分析上出现下降,表明效果具有任务依赖性。