Hello friends!

I posted an update for this project some time ago, and I'm back today to announce quite a big release and also highlight some of the cool work that has been completed since the last update!

https://github.com/LGUG2Z/komorebi/tree/v0.1.9

Here is a bullet point rundown of the features added since the last update:

* Move focused workspace to monitor

* Resize window container on axis

* Set custom resize delta

* Quicksave and quickload layouts with resize dimensions

* Save and load layouts with resize dimensions to/from specific files

* Main half-height window with vertical stack layout (`horizontal-stack`)

* Main half-width window with horizontal stack layout (`vertical-stack`)

* 2x Main window (half and quarter-width) with horizontal stack layout (`ultrawide-vertical-stack`)

* Load custom layouts from JSON and YAML representations

* Dynamically select layout based on the number of open windows

* Configure work area offsets to preserve space for custom taskbars

* Toggle mouse follows focus

* Subscribe to event and message notifications

If you want to see what komorebi looks like in action, there are two great little demos from komorebi users on the project readme.

For me personally, the coolest new features in this period have been:

* Being able to define custom layouts in YAML and JSON, this is really awesome and has been a total game changer for me, and in many cases space can be used way more efficiently than a traditional BSP layout on wider-than-average monitors. There is also a visual custom layout generator[1] that you can play with to generate the JSON for your custom layouts!

* Being able to set rules to automatically change between different built-in and custom layouts depending on the number of windows open on a screen. This is one of those things that seems so simple in retrospect but I haven't seen it implemented in other tiling window managers. Maybe you think BSP works well with up to 3 or 4 windows on the screen, but once you go over that, you want the workspace to switch to a different custom layout that you think is more space-efficient and productive for a higher number of windows. No problem! Just tell komorebi which layout to switch to once a certain threshold of open windows has been reached!

* A push-based event subscription API that allows other applications to subscribe to the latest komorebi events. This is in particular super useful if you want to write your own status bar. yasb[2] is a great example of a status bar written in Python that subscribes to the latest events from komorebi to always show the most up-to-date information about workspaces and application windows to the user.

* Introducing a decoupled library of application-specific fixes[3] in YAML that can be used to generate the majority of configuration options[4] for applications that are uncooperative-by-default. The goal is to eventually just be able to run one command to generate 99% of your configuration, leaving you to focus on the other 1% which should essentially be your preferred shortcuts and workspace layout options.

If you're interested in trying out komorebi for the first time, it is now easier than ever as you can now install it directly from the extras bucket with Scoop!

If you have any questions about using Rust to develop for Windows, writing your own tiling window manager, or even anything you spot in the project code that you'd like to discuss I'll do my best to answer in the comments.

[1]: https://lgug2z.github.io/komorebi-custom-layout-generator/

[2]: https://github.com/denBot/yasb

[3]: https://github.com/LGUG2Z/komorebi-application-specific-conf...

[4]: https://github.com/LGUG2Z/komorebi#generating-common-applica...