[1]: I develop one of the two main Windows twms (https://github.com/LGUG2Z/komorebi)
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
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...
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
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.
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
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...
* 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...