2 个版本

0.1.1 2024年5月17日
0.1.0 2024年5月12日

#189 in 命令行工具

Download history 130/week @ 2024-05-07 176/week @ 2024-05-14 9/week @ 2024-05-21 1/week @ 2024-05-28 102/week @ 2024-06-11

每月下载量:63

MIT 许可证

36KB
596

project-logo

SWAY-PLUGINS

赋予 Sway 能力,提升工作区,拥抱效率

license last-commit repo-top-language repo-language-count


目录

概述

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

  1. 克隆sway-plugins存储库
$ git clone https://github.com/atareao/sway-plugins
  1. 切换到项目目录
$ cd sway-plugins
  1. 安装依赖项
$ cargo build

用法

source

使用以下命令运行sway-plugins

$ cargo run

测试

使用以下命令运行测试套件

$ cargo test

项目路线图

  • 插入-任务-1
  • 插入-任务-2
  • ...

贡献

欢迎贡献!以下是一些您可以贡献的方式

  • 报告问题:提交在 sway-plugins 项目中发现的问题或记录功能请求。
  • 提交拉取请求:审查开放的PR,并提交您的PR。
  • 加入讨论:分享您的见解,提供反馈或提问。
贡献指南
  1. 复制仓库:首先将项目仓库复制到您的github账户中。
  2. 本地克隆:使用git客户端将复制的仓库克隆到您的本地计算机上。
    git clone https://github.com/atareao/sway-plugins
    
  3. 创建新分支:始终在一个新分支上工作,给它一个描述性的名字。
    git checkout -b new-feature-x
    
  4. 进行更改:在本地开发和测试您的更改。
  5. 提交更改:使用清晰的描述提交您的更新。
    git commit -m 'Implemented new feature x.'
    
  6. 推送到github:将更改推送到您的复制仓库。
    git push origin new-feature-x
    
  7. 提交拉取请求:针对原始项目仓库创建一个PR。清楚地描述更改及其动机。
  8. 审查:一旦您的PR被审查并批准,它将被合并到主分支。恭喜您的贡献!
贡献者图表


许可证

本项目受选择一个许可证许可证保护。有关详细信息,请参阅LICENSE文件。


鸣谢

  • 在此处列出任何资源、贡献者、灵感等。

返回


依赖项

~15–27MB
~411K SLoC