Crates.io | sway-plugins |
lib.rs | sway-plugins |
version | 0.1.1 |
source | src |
created_at | 2024-05-12 07:42:05.681651 |
updated_at | 2024-05-17 04:43:03.160345 |
description | Some plugins for Sway |
homepage | https://github.com/atareao/swayplugins |
repository | https://github.com/atareao/swayplugins |
max_upload_size | |
id | 1237281 |
size | 71,197 |
Empower Sway, Elevate Workspaces, Embrace Efficiency
Sway-plugins is a versatile project that enhances the functionality of the Sway window manager through autonaming, autotiling, and autotransparency features. With a focus on transparency and seamless integration with command-line utilities, Sway-plugins creates a robust plugin ecosystem to improve user experience. These plugins enable dynamic workspace renaming, efficient window tiling, and dynamic window opacity adjustments, providing users with enhanced productivity and customization options within the Sway environment.
Feature | Description | |
---|---|---|
โ๏ธ | Architecture | The project follows a modular architecture emphasizing dynamic configuration handling and event-driven scripts. It focuses on creating a robust plugin ecosystem for enhanced user experience within the Sway window manager. |
๐ฉ | Code Quality | The codebase exhibits well-structured and maintainable code with a focus on modularity. It follows Rust best practices and emphasizes readability and extensibility for plugin development. |
๐ | Documentation | The project includes detailed documentation embedded within the codebase, explaining the purpose and functionality of various components. However, external documentation could be enhanced to onboard new contributors and users efficiently. |
๐ | Integrations | Key integrations include Cargo for dependency management and various Rust libraries like toml-rs, yaml-rust for configuration handling. These integrations enhance the project's functionality and interoperability. |
๐งฉ | Modularity | The codebase demonstrates high modularity with separate modules for configurations, plugins, and models. This design promotes code reusability and makes it easier to extend and customize plugin functionalities. |
๐งช | Testing | The project uses Rust's built-in testing framework for unit tests to ensure the reliability and correctness of the codebase. However, additional integration and end-to-end testing could further improve overall code quality. |
โก๏ธ | Performance | The codebase emphasizes efficiency in event processing and plugin lifecycle management. It aims to provide a smooth user experience within the Sway environment, focusing on speed and resource optimization. |
๐ก๏ธ | Security | Security measures include graceful error handling, configuration validation, and dynamic command execution to prevent vulnerabilities. However, further security audits and validation checks are recommended. |
๐ฆ | Dependencies | Key dependencies include Cargo for package management, with dependencies like toml-rs and yaml-rust for configuration handling. These libraries enhance the project's capabilities and contribute to its functionality. |
โโโ sway-plugins/
โโโ Cargo.lock
โโโ Cargo.toml
โโโ LICENSE
โโโ README.md
โโโ config.yml
โโโ src
โโโ main.rs
โโโ models
โโโ plugins
File | Summary |
---|---|
Cargo.toml | Defines plugin dependencies for Sway window manager to enhance functionality. Emphasizes transparency, autonaming, and autotiling features. Facilitates seamless integration with command-line utilities. Focuses on creating a robust plugin ecosystem for improved user experience. |
config.yml | Enables autonaming, autotiling, and autotransparency configurations in Sway window manager plugins. Custom icons for various apps are defined in the config.yml file. These settings enhance user experience and productivity within the Sway environment. |
File | Summary |
---|---|
main.rs | Executes event-driven scripts based on a single-instance model. Manages plugin lifecycle with dynamic configuration handling. Signals termination/interruption to gracefully end processes. Emphasizes modular plugin architecture and efficient event processing for the SwayPlugins repository. |
File | Summary |
---|---|
config.rs | Reads and parses YAML configuration file to struct. Contains autonaming, autotiling, and autotransparency settings. Handles errors gracefully. Influential in defining plugin behaviors within sway-plugins repository. |
mod.rs | Exposes configuration, parts, workspace, root, and runner modules for the sway-plugins repository. Facilitates access to critical components defining the architecture. Essential for configuring and managing the sway plugins effectively. |
parts.rs | Transforms string into structured parts using regex captures; enables conversion between Parts struct and string representation for easy manipulation and display. |
root.rs | Retrieves workspaces from a tree node recursively.-Instantiates a root node with connection details.-Finds a workspace by node reference. |
runner.rs | Connection`. Handles multiple commands or a single command, logging results and errors. Contributes to the parent repositorys plugin architecture to interact with the Sway window manager. |
workspace.rs | Defines a Workspace struct with methods to retrieve workspace details, like name, number, ID, and applications. It also includes functions to check for focused nodes and determine if a specific node exists within the workspace. |
File | Summary |
---|---|
autonaming.rs | Implements Autonaming plugin to dynamically rename workspaces based on app icons. Initiates, updates, and reverts workspace names. Accepts configuration for custom icon mappings and duplicate handling. Controlled by workspace events, ensuring accurate workspace labeling. |
autotiling.rs | Processes window events based on dimensions, executing split commands. Enables dynamic tiling in the Sway window manager. |
autotransparency.rs | Implements Autotransparency plugin for dynamic window opacity adjustments based on focus events. Utilizes configuration settings for enabling transparency and defining the opacity level. Executes specific commands for marking, unmarking, and adjusting window opacity. |
mod.rs | Enables integration of autonaming, autotiling, and autotransparency plugins. Exposes PluginTrait and Plugin for extensibility. Contributes to sway-plugins architectural flexibility and modularity. |
plugin.rs | Defines plugins handling events in Sway window manager config. Orchestrates plugin lifecycle methods and interactions based on configuration, enabling modularity and extensibility in the repositorys architecture. |
System Requirements:
version x.y.z
source
- Clone the sway-plugins repository:
$ git clone https://github.com/atareao/sway-plugins
- Change to the project directory:
$ cd sway-plugins
- Install the dependencies:
$ cargo build
source
Run sway-plugins using the command below:
$ cargo run
Run the test suite using the command below:
$ cargo test
โบ INSERT-TASK-1
โบ INSERT-TASK-2
โบ ...
Contributions are welcome! Here are several ways you can contribute:
sway-plugins
project.git clone https://github.com/atareao/sway-plugins
git checkout -b new-feature-x
git commit -m 'Implemented new feature x.'
git push origin new-feature-x
This project is protected under the SELECT-A-LICENSE License. For more details, refer to the LICENSE file.