Show HN: A tiling window manager like i3wm written entirely in C#
github.com
github.com
> A tiling window manager for Windows inspired by i3 and Polybar.
I've been having trouble lately finding a good launcher/menu. I use Wayland, so I want to use something Wayland native but I wind up sticking with dmenu because the Wayland alternatives don't quite work right. You can't index aliases, .desktop files and PATH at the same time (aliases are a problem with dmenu too), and you can't just run commands. A wlroots launcher that can handle all of these things would be fantastic, bonus points if it can pop out a terminal for TUI applications.
wofi looked slick but is really slow due to gtk limitations, and it might even be abandoned now.
I am author of Stack WM [1]. Also C#, but all the configuration and layouts are defined in WPF XAML and are generally static (e.g. like PowerToys, but much more flexible due to WPF containers and data binding + you can make WPF-based widgets).
Curious about the license for I am interested in having a common library for window manipulation. I am using VirtualDesktop [2] to handle Windows desktops, and it needs some love.
Your project looks really cool, but unfortunately I'd be looking to limit distribution of the software for profit. GPL seems like it'd be the most appropriate, but I'm by no means an expert on this stuff.
It might just be overthinking on my part, but it'd be a shame to somehow negatively affect the Windows customization community. There's so many paid desktop customization tools out there for Windows and many of the most prominent ricing tools are closed source.
Releasing the source code under GPL implies that if all or part of the code is taken, integrated into another application, and that application is redistributed, then the source code of the application must also be made available under GPL.
Note that:
1. GPL is not distinguishing personal and commercial. However, those selling applications may not want to release their code. Hence, they may not want to integrate GPL code into their application.
2. If someone compiles your code into a binary (or just gets it from you), they may use it for both commercial or personal purposes. GPL is not coming into action here as it was applied to the source code, which hasn't been modified in this case.
3. GPL clicks on redistribution. So if someone has integrated GPL code into their application, however, are using that application for themselves only, or within their company (which is considered a single entity; distribution within a company would not qualify as redistribution), GPL does not come into play. Likewise (not applicable to your case), if someone is using the application only on their servers in the cloud and only serving output to the customers, they are not redistributing the application itself. This, in a manner of speaking, defeats the purpose of GPL in the cloud world, and is sometimes called the server loophole. Alternative licenses like AGPL are more suited against this.
4. If what you are truly looking to do is to make money by selling your application, you may consider not releasing the code openly at all (you can still delete the code if you like prior to attaching an explicit license; once released under GPL or another license, someone can legally copy before you take back). There are alternative ways where dual licensing is used, etc.
I did not understand your second paragraph to be able to comment much. It seems that you are worried that your releasing this as free (or FOSS) would negatively impact sales of similar existing third-party commercial applications.
If I understood correctly (else, please ignore the rest of my comment), while of course the choice is yours, this is a common scenario. Various producers are to be in a healthy competition to serve the consumers. So if a producer can provide the same value to the consumers for less, that would be considered improved economic efficiency.
The challenge usually is that lower quality stuff shows up in the market for cheaper, impacting the market for better quality higher price. This itself is also OK as such, for if the quality is lowered too much, the consumers may naturally prefer the costlier product. However, challenges still result for various reasons.
I should've clarified to mean the open-source Windows community in my earlier comment.
Still haven't found anything truly comparable to i3, though.
I am currently a (mostly) happy user of Yabai. There's some blog posts from folks who made the same transition, lemme know if end up taking a look and still have questions, and I'll try to answer them.
I've been using komorebi[1] but it's rather clunky with the ahk dependency. I'll have to try Glaze and give it a spin.
You can just as easily write your own/use another hotkey daemon or PowerShell scripts to handle komorebi's configuration and keybindings, in that sense there is no dependency on ahk at all. However, the inertia around ahk in the Windows ecosystem is undeniable and it's in the interests of making adoption and onboarding easier that the project provides example ahk files and has invested in an ahk code generation library.
My thoughts on the dominant hotkey daemon in the Windows ecosystem aside, I remain convinced that the famous bspwm socket communication architecture[2] is the best way to handle both configuration and keybindings for a tiling window manager that has been proposed to this day.
Unfortunately I have to concede that there is a certain configuration burden that comes with komorebi, which is amplified in some cases by having to write/maintain ahk. This configuration burden is largely due to the highly fragmented nature of Windows application development that is discussed often on HN and it is inescapable.
With this in mind, the next release of komorebi (currently available on master) will invest even more heavily in automatic configuration generation.
A separate repository of common application-specific configuration tweaks[3] (in YAML!) has been created which I and others from the komorebi Discord server are contributing to, with the goal of having the edge cases for as many applications as possible fully documented so that a comprehensive configuration file can be generated[4] for the user which ensures that every (major) Windows application behaves as expected under a tiling window manager.
I hope that other Windows tiling window manager developers can use these YAML definitions in the future to handle the same edge cases in their projects so that eventually there will be a tiling window manager of every flavour (bspwm, i3wm etc.) available for Windows users where having to manually accommodate and compensate for the non-standard behaviour of individual applications is a thing of the past.
[1]: https://github.com/baskerville/sxhkd
[2]: https://github.com/baskerville/bspwm#description
[3]: https://github.com/LGUG2Z/komorebi-application-specific-conf...
[4]: https://github.com/LGUG2Z/komorebi/#generating-common-applic...
[1]: https://espanso.org/
If you want to try out the new features coming in v0.1.9 (including this one), you can follow the build steps from the readme on the master branch or download a zip containing the compiled binaries of the latest development build[2] by clicking on the green "tick" icon next to the latest commit and downloading the "komorebi-x86_64-pc-windows-msvc" artifact.
[1]: https://github.com/LGUG2Z/komorebi/tree/v0.1.8
[2]: https://github.com/LGUG2Z/komorebi/actions/runs/2192874049
How an operating system named and based on windows never had a sane window manager of beyond me.
Does anyone know of a good tiling wm for Mac?
microsoft gotta be microsoft, bloat everything it touches
Looks interesting. Thanks for sharing.