diff --git a/README.md b/README.md index 2703b78..59d80c3 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,17 @@ compositor (window managers and compositors being provided by external clients b ## Current state -At the time of writing (November 2023), AquariWM development is in early stages, with the basics of a running X11 window -manager and Wayland compositor achieved. Work is focused on implementing the tiling layout manager design, starting with -simply using traits for layout managers, with the goal of transitioning to use a custom protocol in the future (the -specifics of which are yet to be decided). +At the time of writing (December 2023), AquariWM development is in early stages, though the layout manager system is +implemented in Rust (with the goal of transitioning to use a custom protocol in the future, the specifics of which are +yet to be decided). @Antikyth, the only author of AquariWM at the time of writing, is working on +[`generational-arena-tree`], a tree implementation in Rust that gives the flexibility to implement more complex features +for tiling layouts (e.g. taking windows' minimum and maximum sizes into account). Specifically, it allows: +- nodes to be mutated directly, +- nodes to be iterated over mutably, +- nodes to be split by type into separate branches (nodes that may have children) and leaves (nodes that may not have + children), which each have their own associated data type. + - This is required because, in window layouts, every branch has an orientation, and every leaf has a window. No branch + may have a window, and no leaf may have an orientation. + +Here is a screenshot of a working Main + Stack layout manager implemented in the current state of AquariWM: +![A picture of a Main + Stack layout manager functioning in AquariWM, with window gaps enabled](https://cdn.discordapp.com/attachments/1012049086121246843/1176465058449076294/image.png?ex=657831f7&is=6565bcf7&hm=be348cc7313d69a9da3f1b5bb39dde9ef2261a679034438aa45eefc5d423b0c4&)