A fully modular window manager, extremely extensibile and easily approachable.

Overview

AquariWM is a fully modular window manager, allowing extreme extensibility while remaining easily approachable.

Installation

AquariWM is currently in early development and has yet to have a public release. You can clone the repository and build the code locally if you wish to contribute or test that which has been completed so far.

Contributing

Contributions to AquariWM are heavily appreciated and encouraged! AquariWM aims to be a very community-oriented project, and we believe that that should mean AquariWM is owned and developed by the community too. You can find more information about contributing to AquariWM in the contributor's document. Every issue, pull request, from simple spelling corrections to large codebase overhauls, and everything in between, is very much welcome! Even a small contribution can go a long way!

How does AquariWM compare to other window managers?

A welcoming community

We believe community is one of the most important aspects of any project, and that's why we strive to create a friendly and welcoming community for all, regardless of your level of experience and free from discrimination, bigotry, arguments, or disrespect. The AquariWM community is a place to share tips, suggestions, and friendly discussions in general.

Universal communication

Most other window managers only allow configuration through a limited selection of formats or languages, typically just one. AquariWM, on the other hand, communicates with departments (and therefore configuration too) through a universal method of communication, supported by nearly every single programming language, called Inter Process Communication (IPC for short) sockets. You are free to use whatever language and/or way of communicating with the window manager you prefer.

Use it your way

Due to AquariWM's modular approach, there's no limit to the features you can use. If something you'd like to do doesn't exist, make it! You could even release it as a module under the AquariWM GitHub organization if you would like, or you could distribute it separately (or even just use it yourself!) - the choice is yours.

Complete documentation and extensive guides

AquariWM guarantees that all features and all APIs are fully and thoroughly documented before they can be merged with the development branch, and that guides have been written for all features before they can move from the development branch to main. Everything you need to know is available to read.

However...

Please keep in mind that AquariWM is still a small project. AquariWM is in early development, and may not yet provide the full experience of more established window managers. If you would like to help us change that, why not contribute to the project - we're always looking to improve what we have, and everything - big or small, even if this is your first time contributing - is welcomed and appreciated.

Departments

Unfortunately, there are no departments available for AquariWM at this time.

Comments
  • Bump actions/checkout from 2 to 3

    Bump actions/checkout from 2 to 3

    Bumps actions/checkout from 2 to 3.

    Release notes

    Sourced from actions/checkout's releases.

    v3.0.0

    • Updated to the node16 runtime by default
      • This requires a minimum Actions Runner version of v2.285.0 to run, which is by default available in GHES 3.4 or later.

    v2.4.2

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2...v2.4.2

    v2.4.1

    • Fixed an issue where checkout failed to run in container jobs due to the new git setting safe.directory

    v2.4.0

    • Convert SSH URLs like org-<ORG_ID>@github.com: to https://github.com/ - pr

    v2.3.5

    Update dependencies

    v2.3.4

    v2.3.3

    v2.3.2

    Add Third Party License Information to Dist Files

    v2.3.1

    Fix default branch resolution for .wiki and when using SSH

    v2.3.0

    Fallback to the default branch

    v2.2.0

    Fetch all history for all tags and branches when fetch-depth=0

    v2.1.1

    Changes to support GHES (here and here)

    v2.1.0

    ... (truncated)

    Changelog

    Sourced from actions/checkout's changelog.

    Changelog

    v3.0.2

    v3.0.1

    v3.0.0

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    v2 (beta)

    • Improved fetch performance

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • xcb-wm dependency, Cargo.toml metadata updates, docs for GitHub pages

    xcb-wm dependency, Cargo.toml metadata updates, docs for GitHub pages

    Added xcb-wm as a dependency. Changed the crate name from aquariwm to aquariwm-server. Changed crate-level doc comments to describe what the future for AquariWM might look like.

    opened by Antikyth 0
  • Window manipulation - moving and resizing windows

    Window manipulation - moving and resizing windows

    This is an early implementation of moving and resizing (floating) windows. Currently, there are issues with this PR, primarily that far too many ConfigureWindow requests are sent to the X server when manipulating windows, causing serious performance concerns. A way of limiting the frequency of updating the window when manipulating windows would ease these performance concerns. Additionally, the window manager should translate the coordinates stored for the current window manipulation if the window is reparented. It should probably also deny ConfigureWindow requests from other sources for the duration of the window manipulation, and handle situations like the window being manipulated requesting to be unmapped, for instance.

    enhancement implementations 
    opened by Antikyth 0
  • Refactor layout of codebase

    Refactor layout of codebase

    I have made multiple significant changes to the layout of AquariWM's codebase in this PR:

    • Moved the window manager setup/initialization to main.rs, as main() acts as an entrypoint.
    • Moved the event loop and event handlers into an AquariWm struct, so that the state of the window manager can easily be controlled from one centralized location.
    • WIP: Added log messages using the tracing library for better troubleshooting. I have more to learn here: extra information relevant to a particular log message should be included in a structured manner, as supported by tracing, and the codebase should make use of tracing's spans where applicable.

    My hope is that these changes will lay a better foundation to build the window manager around; that placing the initialization and the running of the window manager in two distinct places can make the code easier to maintain, as well as facilitate control of the window manager's current state when that is implemented in the future.

    opened by Antikyth 0
  • Correct and format comments after change from wrappers.rs to extensions.rs

    Correct and format comments after change from wrappers.rs to extensions.rs

    Some comments were no longer accurate after changing the wrappers made for ConfigureRequestEvent to trait extensions, so I have fixed those in this PR.

    opened by Antikyth 0
  • Bump github/codeql-action from 1 to 2

    Bump github/codeql-action from 1 to 2

    Bumps github/codeql-action from 1 to 2.

    Changelog

    Sourced from github/codeql-action's changelog.

    Commits
    • 1725087 Update default CodeQL to 2.9.2
    • e655565 Merge pull request #1076 from github/henrymercer/fix-changelog-typo
    • c38e41c Fix a typo in the CHANGELOG
    • 0658e4b Merge pull request #1075 from github/henrymercer/update-actions-tool-cache
    • 54b4854 Bump @​actions/tool-cache to 2.0.0
    • 1fae5bf Merge pull request #1051 from github/henrymercer/run-atm-on-windows
    • 533ce91 Merge remote-tracking branch 'origin/main' into henrymercer/run-atm-on-windows
    • ace076b Merge pull request #1070 from github/mergeback/v2.1.10-to-main-2f58583a
    • 97847a4 Merge branch 'main' into mergeback/v2.1.10-to-main-2f58583a
    • f8c88ab Update changelog and version after v2.1.10
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Bump actions/dependency-review-action from 1 to 2

    Bump actions/dependency-review-action from 1 to 2

    Bumps actions/dependency-review-action from 1 to 2.

    Release notes

    Sourced from actions/dependency-review-action's releases.

    2.0.0

    Major version update! We are introducing a few configuration options to make the action more useful in a broader set of scenarios:

    • fail-on-severity: Specify the minimum security vulnerability threshold before failing workflow runs.
    • allow-licenses: An allowlist for dependency licenses.
    • deny-licenses: A blocklist for dependency licenses.

    You can read more about these options in the "Configuration" section of the README.

    1.0.2

    • Clarify error messages for private repos
    • Update NPM dependencies.

    v1.0.1

    We're starting to use semantic versioning for our project.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Bump actions/dependency-review-action from 2 to 3

    Bump actions/dependency-review-action from 2 to 3

    Bumps actions/dependency-review-action from 2 to 3.

    Release notes

    Sourced from actions/dependency-review-action's releases.

    3.0.0

    Breaking Changes

    By default the action now expects SPDX-compliant licenses everywhere. If you were previously using license names in the allow or deny lists make sure they're valid!

    What's Changed

    Support for external configuration files

    You can now specify a configuration file external to your repository. This allows organizations to have a single configuration file for all their repos.

    Broader license support

    We've added support for a much broader set of project licenses by using GitHub's Licenses API.

    SPDX Compliance

    All of our license-related code now expects SPDX-compliant licenses or expressions. This allows us to standardize on a license naming scheme that already supports OR/AND expressions.

    Disable individual checks

    You can now use the boolean options license-check and vulnerability-check to disable either one of the checks. More information in our configuration options.

    Thanks

    Contributors for this release include:

    Thanks everyone! Full Changelog: https://github.com/actions/dependency-review-action/compare/v2...v3.0.0

    2.5.1

    Adding some quality-of-life improvements to the local development experience. You can now pass a flag to the scripts/scan_pr script using the -c/--config-file flags to use an external configuration file:

    Example:

      scripts/scan_pr https://github.com/actions/dependency-review-action/pull/294
    

    2.5.0

    Fallback on GitHub Licenses API data for missing Dependency Review API Licenses. This should improve our license coverage.

    2.4.1

    This patch release fixes the bugs below:

    • Display the dependency name instead of the manifest name in the detailed list of dependents.
    • Fix an issue where undefined GHSAs would remove filter out all changes.

    ... (truncated)

    Commits
    • 30d5821 Bumping version number
    • 6e42c33 Remove defaults from the recently added fields.
    • a3074cd Merge pull request #327 from actions/adding-extra-options
    • 51a29d6 Updating action.yml to include *-check config
    • 235a221 Merge pull request #324 from actions/readme-update
    • 9b3a7f6 Minor README tweaks.
    • a476131 Add pull_request to the list of events that don't need refs.
    • 28c7c8c Set the correct default for license-check in README.
    • 9da0fd4 Merge pull request #325 from actions/dependabot/npm_and_yarn/eslint-plugin-je...
    • fe45fd6 Merge pull request #326 from actions/dependabot/npm_and_yarn/esbuild-register...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Window focus 'flickering'

    Window focus 'flickering'

    It seems that there is a 'flickering' effect of the window focus.

      2022-07-30T09:32:09.907897Z TRACE aquariwm::aquariwm: Bringing the newly focused window to the top of the stack, window: 4194308
        at src/aquariwm.rs:149
    
      2022-07-30T09:32:09.908112Z TRACE aquariwm::aquariwm: Bringing the newly focused window to the top of the stack, window: 4194306
        at src/aquariwm.rs:149
    
      2022-07-30T09:32:09.908193Z TRACE aquariwm::aquariwm: Focusing window entered by cursor, window: 4194308
        at src/aquariwm.rs:135
    
      2022-07-30T09:32:09.908282Z TRACE aquariwm::aquariwm: Focusing window entered by cursor, window: 4194306
        at src/aquariwm.rs:135
    
      2022-07-30T09:32:09.908322Z TRACE aquariwm::aquariwm: Bringing the newly focused window to the top of the stack, window: 4194308
        at src/aquariwm.rs:149
    
      2022-07-30T09:32:09.908537Z TRACE aquariwm::aquariwm: Bringing the newly focused window to the top of the stack, window: 4194306
        at src/aquariwm.rs:149
    
      2022-07-30T09:32:09.908633Z TRACE aquariwm::aquariwm: Focusing window entered by cursor, window: 4194308
        at src/aquariwm.rs:135
    
      2022-07-30T09:32:09.908711Z TRACE aquariwm::aquariwm: Focusing window entered by cursor, window: 4194306
        at src/aquariwm.rs:135
    

    The window manager can get into a state where two different windows are brought to the top in short succession, which generates two 'enter window' events, causing those two windows to be focused and then brought to the top, continuing the cycle. Obviously, there wouldn't be any problem if the window manager didn't focus windows based on 'enter window' events generated in reaction to that window coming to the top after being focused.

    bug 
    opened by Antikyth 0
Owner
AquariWM Window Manager
It's time for a tiling window manager everyone can use.
AquariWM Window Manager
Create, reorder, group, and focus workspaces easily in i3. Fully configurable with enhanced polybar modules.

Create, reorder, group, and focus workspaces fast and easily in i3. Features Focus Mode: Eliminate Distractions Enable Focus Mode: Use groups and focu

i3-wsman 15 Sep 2, 2023
skyWM is an extensible tiling window manager written in Rust. skyWM has a clear and distinct focus adhering to the KISS and Unix philosophy.

Please note: skyWM is currently in heavy development and is not usable as of yet. Documentation and versions will change quickly. skyWM skyWM is an ex

MrBeeBenson 74 Dec 28, 2022
Simple and lightweight tray icon that shows the current workspace for the Komorebi window manager.

komotray Simple and lightweight tray icon that shows the current workspace for the Komorebi window manager. This is a Rust rewrite of the original Aut

Joshua Park 8 Sep 27, 2024
My Window Manager

mwm My window manager that is a work in progress. Currently hacky Installation Clone this repo then: cargo build --release Put the binary in your pat

Monroe Clinton 5 Dec 14, 2022
Neovim Configuration Manager (Swap/Backup/Try Configurations Easily)

ncm-rs Neovim Configuration Manager (Swap/Backup/Try Configurations Easily) I created this package because I wanted to try out Lazyvim (which is why i

instance.id 4 Mar 5, 2023
Maccha is an extremely extensible and themable power menu for Windows, macOS, and Linux.

Maccha I hate coffee. Maccha is an extremely extensible and themable power menu for Windows, macOS, and Linux. Plugins Plugins are written in Rust (ot

Kyza 9 May 13, 2023
⚡ An extremely fast reimplementation of gmad.exe and gmpublish.exe

⚡ fastgmad Download An extremely fast reimplementation of gmad.exe and gmpublish.exe. Prefer to use a GUI? Check out gmpublisher! Features Up to x100

William 16 Sep 18, 2023
Nodium is an easy-to-use data analysis and automation platform built using Rust, designed to be versatile and modular.

Nodium is an easy-to-use data analysis and automation platform built using Rust, designed to be versatile and modular. Nodium aims to provide a user-friendly visual node-based interface for various tasks.

roggen 19 May 2, 2023
⚡ An extremely fast cross-compatible system information tool.

Lightfetch A extremely fast command-line system information tool written in Rust ⚡ . Gallery Sadly there isn't much to showcase right now. Download Av

bwtecode 2 Sep 12, 2022
⚡ An extremely fast cross-compatible system information tool.

Lightfetch A extremely fast command-line system information tool written in Rust ⚡ . Gallery Sadly there isn't much to showcase right now. Download Av

bwtecode 2 Sep 12, 2022
An extremely fast Python linter, written in Rust.

Ruff An extremely fast Python linter, written in Rust. Linting the CPython codebase from scratch. ⚡️ 10-100x faster than existing linters ?? Installab

Charlie Marsh 5.1k Dec 30, 2022
An extremely fast glob matching library in Rust.

glob-match An extremely fast glob matching library with support for wildcards, character classes, and brace expansion. Linear time matching. No expone

Devon Govett 247 Jan 27, 2023
RedMaple offers an oppinionated yet extremely flexible data modeling system based on events for back-end applications.

RedMaple offers an oppinionated yet extremely flexible data modeling system based on events for back-end applications.

Amir Alesheikh 4 Mar 5, 2023
Extremely simple http rust servers :snowboarder:

Snowboard ?? An extremelly simple library for fast & simple TCP servers in rust [Request a feature/Report a bug] Quick start To get started with Snowb

null 3 Oct 23, 2023
An extremely high performance logging system for clients (iOS, Android, Desktop), written in Rust.

Pinenut Log 中文文档 ・ English An extremely high performance logging system for clients (iOS, Android, Desktop), written in Rust. Overview Compression Pin

Tangent 4 Dec 1, 2023
A Rust library for building modular, fast and compact indexes over genomic data

mazu A Rust library for building modular, fast and compact indexes over genomic data Mazu (媽祖)... revered as a tutelary deity of seafarers, including

COMBINE lab 6 Aug 15, 2023
A small Rust library that let's you get position and size of the active window on Windows and MacOS

active-win-pos-rs A small Rust library that let's you get position and size of the active window on Windows and MacOS Build % git clone https://github

Dmitry Malkov 21 Jan 6, 2023
A library that creates a terminal-like window with feature-packed drawing of text and easy input handling. MIRROR.

BearLibTerminal provides a pseudoterminal window with a grid of character cells and a simple yet powerful API for flexible textual output and uncompli

Tommy Ettinger 43 Oct 31, 2022
Cross platfrom window and framebuffer crate for Rust

minifb is a cross platform library written in Rust and that makes it easy to setup a window and to (optional) display a 32-bit pixel buffer. It also m

Daniel Collin 771 Jan 1, 2023