2 个版本
0.1.1 | 2024年5月17日 |
---|---|
0.1.0 | 2024年5月12日 |
#189 in 命令行工具
每月下载量:63
36KB
596 行
SWAY-PLUGINS
赋予 Sway 能力,提升工作区,拥抱效率
概述
Sway-plugins 是一个灵活的项目,通过自动命名、自动平铺和自动透明度功能,增强了 Sway 窗口管理器的功能。它侧重于透明度和与命令行工具的无缝集成,创建了强大的插件生态系统,以改善用户体验。这些插件实现了动态工作区重命名、高效的窗口平铺和动态窗口透明度调整,为用户提供了在 Sway 环境中增强的生产力和定制选项。
功能
功能 | 描述 | |
---|---|---|
⚙️ | 架构 | 该项目采用模块化架构,强调动态配置处理和事件驱动脚本。它侧重于创建一个强大的插件生态系统,以在 Sway 窗口管理器内提供增强的用户体验。 |
🔩 | 代码质量 | 代码库展示了结构良好且易于维护的代码,侧重于模块化。它遵循 Rust 的最佳实践,并强调插件开发的可读性和可扩展性。 |
📄 | 文档 | 该项目包括嵌入在代码库中的详细文档,解释了各种组件的目的和功能。然而,外部文档可以增强,以便更有效地引导新贡献者和用户。 |
🔌 | 集成 | 主要集成包括 Cargo(依赖管理)和各种 Rust 库,如 toml-rs、yaml-rust(配置处理)。这些集成增强了项目的功能并提高了互操作性。 |
🧩 | 模块化 | 代码库展示了高度的模块化,有单独的模块用于配置、插件和模型。这种设计促进了代码的可重用性,并使扩展和自定义插件功能变得更容易。 |
🧪 | 测试 | 该项目使用 Rust 的内置测试框架进行单元测试,以确保代码库的可靠性和正确性。然而,额外的集成和端到端测试可以进一步提高整体代码质量。 |
⚡️ | 性能 | 代码库强调事件处理和插件生命周期管理中的效率。它旨在在 Sway 环境中提供流畅的用户体验,侧重于速度和资源优化。 |
🛡️ | 安全 | 安全措施包括优雅的错误处理、配置验证和动态命令执行,以防止漏洞。然而,建议进行进一步的安全审计和验证检查。 |
📦 | 依赖项 | 关键依赖包括Cargo包管理器,以及如toml-rs和yaml-rust等用于配置处理的依赖项。这些库增强了项目的功能,并有助于其功能实现。 |
仓库结构
└── sway-plugins/
├── Cargo.lock
├── Cargo.toml
├── LICENSE
├── README.md
├── config.yml
└── src
├── main.rs
├── models
└── plugins
模块
.
文件 | 摘要 |
---|---|
Cargo.toml | 定义了Sway窗口管理器的插件依赖项,以增强功能。强调透明度、自动命名和自动平铺功能。便于与命令行实用程序的无缝集成。专注于创建一个强大的插件生态系统,以改善用户体验。 |
config.yml | 在Sway窗口管理器插件中启用自动命名、自动平铺和自动透明度配置。在config.yml文件中定义了各种应用的自定义图标。这些设置增强了Sway环境中的用户体验和生产力。 |
src
文件 | 摘要 |
---|---|
main.rs | 根据单实例模型执行基于事件的脚本。使用动态配置处理管理插件生命周期。通过信号终止/中断来优雅地结束进程。强调模块化插件架构和高效的事件处理,以优化SwayPlugins存储库。 |
src.models
文件 | 摘要 |
---|---|
config.rs | 读取并解析YAML配置文件到结构体。包含自动命名、自动平铺和自动透明度设置。优雅地处理错误。在sway-plugins存储库中定义插件行为方面具有影响。 |
mod.rs | 暴露了sway-plugins存储库的配置、部分、工作区、根和运行器模块。便于访问定义架构的关键组件。对于有效地配置和管理sway插件至关重要。 |
parts.rs | 使用正则表达式捕获将字符串转换为结构化部分;使Parts结构体和字符串表示之间的转换变得容易,以便于操作和显示。 |
root.rs | 递归地检索树节点中的工作区。实例化带有连接详细信息的根节点。通过节点引用查找工作区。 |
runner.rs | 处理多个命令或单个命令,记录结果和错误。为父存储库的插件架构做出贡献,以与Sway窗口管理器交互。 |
workspace.rs | 定义了一个带有检索工作区详情(如名称、编号、ID和应用程序)的方法的工作区结构体。还包括检查聚焦节点和确定特定节点是否存在于工作区内的函数。 |
src.plugins
文件 | 摘要 |
---|---|
autonaming.rs | 实现自动命名插件,根据应用图标动态重命名工作区。启动、更新和撤销工作区名称。接受自定义图标映射和重复处理的配置。由工作区事件控制,确保准确的工作区标签。 |
autotiling.rs | 基于尺寸处理窗口事件,执行分割命令。在Sway窗口管理器中启用动态平铺。 |
autotransparency.rs | 实现自动透明度插件,根据聚焦事件动态调整窗口不透明度。利用配置设置来启用透明度和定义不透明度级别。执行标记、取消标记和调整窗口不透明度的特定命令。 |
mod.rs | 启用自动命名、自动平铺和自动透明度插件的集成。暴露PluginTrait和Plugin以实现可扩展性。为sway-plugins的架构灵活性和模块化做出贡献。 |
plugin.rs | 定义了在Sway窗口管理器配置中处理事件的插件。根据配置协调插件生命周期方法和交互,实现存储库架构的模块化和可扩展性。 |
入门
系统要求
- Rust:
version x.y.z
安装
从 source
- 克隆sway-plugins存储库
$ git clone https://github.com/atareao/sway-plugins
- 切换到项目目录
$ cd sway-plugins
- 安装依赖项
$ cargo build
用法
从 source
使用以下命令运行sway-plugins
$ cargo run
测试
使用以下命令运行测试套件
$ cargo test
项目路线图
-
►插入-任务-1
-
►插入-任务-2
-
►...
贡献
欢迎贡献!以下是一些您可以贡献的方式
贡献指南
- 复制仓库:首先将项目仓库复制到您的github账户中。
- 本地克隆:使用git客户端将复制的仓库克隆到您的本地计算机上。
git clone https://github.com/atareao/sway-plugins
- 创建新分支:始终在一个新分支上工作,给它一个描述性的名字。
git checkout -b new-feature-x
- 进行更改:在本地开发和测试您的更改。
- 提交更改:使用清晰的描述提交您的更新。
git commit -m 'Implemented new feature x.'
- 推送到github:将更改推送到您的复制仓库。
git push origin new-feature-x
- 提交拉取请求:针对原始项目仓库创建一个PR。清楚地描述更改及其动机。
- 审查:一旦您的PR被审查并批准,它将被合并到主分支。恭喜您的贡献!
许可证
本项目受选择一个许可证许可证保护。有关详细信息,请参阅LICENSE文件。
鸣谢
- 在此处列出任何资源、贡献者、灵感等。
依赖项
~15–27MB
~411K SLoC