I’ve been working on a window manager since Dec 2019 and it’s finally at a point where I feel ok making it public. Even though I am using it as my daily driver this should still be considered very alpha software and you should expect issues/unwanted behaviour, if you do experience this please post an issue here on or on the tracker linked below, I use a limited set of applications so many issues will go unnoticed unless others bring them to my attention.
It’s a dynamic, layout based tiling window manager, loosely based off dwm (from scratch, not forked) so you kinda know what to expect. yax has more features and supports more freedesktop standards so integration with other programs should be less problematic.
Some noteworthy features are:
Traditional workspaces, each is assigned a monitor, each monitor can have 1-n workspaces
n = num workspaces / num monitors.
RANDR extension support for multi-monitor setups.
Regex based client window matching and callback function support.
Dynamic gaps and borders, meaning they can be changed on the fly.
No built-in bar, no text drawing, and no window title support (whether this is a feature or not is up to you).
Master/dual-stack with dynamic stack, eg. for a workspace with 6 windows,
nmasterset to 1 and
nstackset to 2, we would get:
------------------- | | | s2 | | | s1 |----| | M |----| s2 | | | s1 |----| | | | s2 | -------------------
Check the project README for installation instructions and more info.
I’ll continue to update this post as things change.
Known Issues/ Things being worked on:
Moving windows around with keybinds for both floating and tiled windows (currently all we have is swapping clients to/from master) Partially complete, tiled windows can be moved around
Better support for bars displaying the correct windows/workspace on the correct monitor regardless of whether it’s active or not.
_NET_ACTIVE_WINDOWclient messages from another managed window currently have a focus/stacking order error eg. steam client on one workspace with friends window on another, then activate friends with the button inside the steam client, the workspace will switch, but the friends window isn’t drawn.
I learned almost everything I know about window management from dwm and that was only possible because of how short and well written it is, I’m doing my best to keep yax like that. Currently, yaxwm.c is around 2000 sloc, it’s not limited to that and I like features as much as the next guy but keeping it short and understandable is crucial.
Make a post here or on the issue tracker.