What does HackerNews think of komorebi?

A tiling window manager for Windows

Language: Rust

#113 in Rust
#51 in Windows
This is pretty depressing. I'm pretty involved in the ricing side of the Windows ecosystem[1] and there is a lot of work going on in this space to allow users to get rid of the start bar entirely and replace it with something more functional. I would love for the day when there could just be a user friendly drop-in replacement.

[1]: I develop one of the two main Windows twms (https://github.com/LGUG2Z/komorebi)

I ended up using AHK for komorebi[1] because I was still new to Windows when I started writing it and I didn't wanna have to write a tiling window manager AND a hotkey daemon. I even ended up generating a nice little AHK library to wrap around CLI commands that sent socket messages to the window manager to make it easier to write a configuration.

Ultimately the syntax changes make it impossible to fully reproduce the same library for AHKv2, which is being installed by default on all mainstream package managers now.

I ended up biting the bullet and making my own hotkey daemon[2] for use with komorebi based on skhd[3] and I haven't looked back since. This will be the "blessed" hotkey daemon recommended for use in the next release of komorebi.

I'm still using AHK (v1) for the stuff that it's good at (and there is a lot of stuff that it's good at!), but ultimately I've found that it's not the right tool as a hotkey daemon for a socket-based tiling window manager (or just generally, for triggering CLI commands).

[1]: https://github.com/LGUG2Z/komorebi

[2]: https://github.com/LGUG2Z/whkd

[3]: https://github.com/koekeishiya/skhd

This is a bit of a PITA for me as most people use AHK to handle shortcuts for komorebi[1], which led to me generating an AHK library[2] to help people write their configs. Turns out every single line of that generated library (not to mention the entire sample config for newcomers) is now invalid syntax in v2.

I'm taking a month off from development while I'm traveling, maybe I'll feel less salty about this when I get back.

The biggest issue right now is that the Run and RunWait commands require strings for the commands to be executed, and AHK v2 has absolutely garbage support for string interpolation.

Honestly I'm not sure if I'll continue supporting AHK or just develop my own sxhkd (swhkd?) and recommend that for users going forward.

[1]: https://github.com/LGUG2Z/komorebi

[2]: https://github.com/LGUG2Z/komorebi/blob/master/komorebic.lib...

Quite a few people posting about the Windows experience as well in here although you only mentioned macOS and Linux, so I figured I'd chime in as well.

I posted a day or so ago about wanting to migrate from Windows to Linux[1] after the incredibly positive experience I've had using NixOS on WSL2.

I've spent the last week or so exploring both X11 and Wayland options for DEs and WMs to hold me over until I can port my tiling window manager[2] to work with either X11 or Wayland, however, there is just so much table-stakes-level stuff missing, like setting per-monitor scaling, rotations and positioning in a way that doesn't require cracking open a dotfile.

I keep oscillating between wanting to port my twm to Linux so I can just go full NixOS and developing an idea I have[3] for Windows to be able to quickly and reliably configure settings for a new Windows machine.

Honestly, if NixOS supports Windows in the future (and the ability to configure it in a similar way to nix-darwin's ability to configure macOS), that would be perfect.

Who knows, maybe SerenityOS will be running rings around all other OS-es on hardware by then and have a "nix-serenity" module set to allow for sane declarative configuration management.

[1]: https://news.ycombinator.com/item?id=33946559

[2]: https://github.com/LGUG2Z/komorebi

[3]: https://github.com/LGUG2Z/Nazm

I maintain a tiling window manager for Windows[1]. It's the only thing still keeping me on Windows right now. I run NixOS on WSL, and I have a separate NixOS desktop partition that I iterate on from time to time.

Once I can make my tiling window manager X11-compatible, I think that will be it for me and Windows. The last update totally screwed me to the extent that I had to go into the registry and manually set my user profile path to get all my settings back, all because the update couldn't handle a symlink in the C:\Users dir, which I had to use because there is no sane way to do something as simple as changing the user directory name.

[1]: https://github.com/LGUG2Z/komorebi

Right now I'm quite humbled by the number of people who are using Notado[1] to liberate their Twitter Liked Tweets before the collapse that everyone is worrying about.

There are also thousands of people using a tiling window manager for Windows which I originally built for myself and decided to share publicly for free.[2] I still can't believe how popular it has become.

[1]: https://notado.app

[2]: https://github.com/LGUG2Z/komorebi

There are multiple different default layouts and you can even define your own custom layouts[1] and set rules on when to activate them[2].

In any layout, you can always use the `komorebic.exe move ` command to place a window in the desired tile to achieve the desired size.

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

[2] https://github.com/LGUG2Z/komorebi/#dynamically-changing-lay...

If anyone is interested, there are a couple of features that I developed based on my own needs that I have not seen in similar tiling window managers (including on other platforms):

* Rules to automatically change the layout depending on the number of windows on the screen[1]

* A custom layout definition format with an interactive custom layout generator[2]

* A subscription service so that applications that wish to do something with komorebi's state don't have to continuously poll[3]

* A frequently updated repository which contains configuration tweaks for problematic applications so that if someone fixes it once, it is fixed for good[4]

* A code generator that is able to consume the application-specific configuration tweaks mentioned in the last point and generate a valid configuration file[5]

* A more general library generator for the main configuration format preferred by the community[6]

Most interestingly for me, I used the subscription service to write an automatic application-aware keyboard layer-switcher[7], which means that I never have to store a key binding to switch between programmable keyboard layers ever again; whichever window I switch to with my tiling window manager, if there is an application-specific keyboard layer that I have defined with custom bindings or shortcuts etc specifically for that application, they get automatically applied without me even having to think about it.

It's such a huge productivity booster, a real "the future is now" moment for me personally.

[1] https://github.com/LGUG2Z/komorebi/#dynamically-changing-lay...

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

[3] https://github.com/LGUG2Z/komorebi/#window-manager-event-sub...

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

[5] https://github.com/LGUG2Z/komorebi/#generating-common-applic...

[6] https://github.com/LGUG2Z/komorebi/#autohotkey-helper-librar...

[7] https://github.com/LGUG2Z/komokana