{"repo":"Asthestarsfalll/piri","free":true,"listed":false,"github":"https://github.com/Asthestarsfalll/piri","clone":"git clone https://github.com/Asthestarsfalll/piri.git","description":"🚀 Piri is a high-performance Niri extension tool built with Rust. It leverages efficient Niri IPC interaction and a unified event distribution mechanism to provide a robust, state-driven plugin system.","language":"Rust","stars":86,"topics":["niri","plugin","scratchpad","desktop","extension","multiscreen","niri-ipc","productivity","quality-of-life","scriptable"],"license":"MIT","category":"productivity","readme_excerpt":"Piri English 中文 --- Piri 是基于 Rust 开发的 Niri 合成器扩展工具，通过高效的 IPC 交互与统一的事件分发机制，提供稳健的状态驱动插件系统。 核心插件 - 📦 Scratchpads : 智能隐藏/显示窗口，支持自动捕获或按需启动，跨工作区与显示器跟随（详见 文档） - 🔌 Empty : 空工作区自动化，切换时自动执行命令（详见 文档） - 🎯 Window Rule : 规则引擎，基于正则匹配实现窗口自动归位与焦点触发命令（详见 文档） - 📐 Workspace Rule : 工作区布局管理，提供自动宽度、平铺、对齐、最大化及 EdgePulse 边缘提示（详见 文档, EdgePulse） - 🔒 Singleton : 单实例保障，确保应用全局唯一（详见 文档） - 📌 Mark : 窗口标记与快速聚焦，绑定存于内存（详见 文档） - 📍 Sticky : 浮动窗口跟随，支持跨显示器（详见 文档） - 📋 Window Order : 按权重自动重排窗口，最小化移动（详见 文档） - 🍽️ Swallow : 窗口吞噬，子窗口替换父窗口位置（详见 文档） 核心特性 - Rust 高性能 ：基于 Rust 构建，低内存占用，异步事件处理 - 高效 IPC 交互 ：通过 Unix Socket 与 Niri 合成器通信，自动重连，批量指令执行 - 统一事件分发 ：单一事件监听器统一接收 Niri 事件，按插件兴趣分发 - 细粒度事件拆分 ：自动将 Niri 粗粒度事件拆分为 WindowOpened 、 WindowChanged 、 WindowToggleFloating 等子事件，插件无需自行追踪窗口状态（详见 文档） - 状态驱动插件系统 ：每个插件实现统一的 Plugin trait，支持配置热更新、事件过滤与 IPC 命令处理 - 配置热重载 ：修改 piri.toml 后自动生效，无需重启 daemon 窗口匹配机制 Piri 使用统一的窗口匹配机制，支持通过正则表达式匹配窗口的 app id 和 title 。多个插件（如 window rule 、 singleton 、 scratchpads ）都使用此机制来查找和匹配窗口。 支持的匹配方式 ： - ✅ 正则表达式匹配 : 支持完整的正则表达式语法 - ✅ 灵活匹配 : 支持 app id 和/或 title 匹配 - ✅ OR 逻辑 : 如果同时指定 app id 和 title ，任一匹配即可 注意 : Window Rule 插件额外支持列表匹配（ app id 和 title 可以是列表），详见 Window Rule 文档。 详细文档 : 窗口匹配机制文档 快速开始 安装 使用安装脚本（推荐） 最简单的方式是使用提供的安装脚本： 安装脚本会自动： - 构建 release 版本 - 安装到 /.local/bin/piri （普通用户）或 /usr/local/bin/piri （root） - 复制配置文件到 /.config/niri/piri.toml 如果 /.local/bin 不在 PATH 中，脚本会提示你添加到 PATH。 使用 Cargo 安装 安装完成后，如果安装到用户目录，确保 /.cargo/bin 在你的 PATH 环境变量中： 可以将此命令添加到你的 shell 配置文件中（如 /.bashrc 或 /.zshrc ）。 配置 将示例配置文件复制到配置目录： 然后编辑 /.con","default_branch":null,"files":null,"tree":[],"storefront":"/r/Asthestarsfalll","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Asthestarsfalll/piri/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}