Hacker News new | past | comments | ask | show | jobs | submit login
Komorebi: Tiling Window Management for Windows (github.com/lgug2z)
124 points by thunderbong 6 months ago | hide | past | favorite | 87 comments



Love the name. For those that are curious:

It's the Japanese word for sunlight, which is filtered through the leaves of the trees. In particular, it means the visible light rays. “Komorebi” is composed of several parts of the word: “Ko” means tree or trees. “More” means: something that comes through, something that shines through or seeps through. “Bi” means: sun or sunlight.

The word “Komorebi” reflects the romantic and emotional love of the Japanese for nature.


Allow me to be pedantic and say that English has a perfectly good two-word phrase for this exact phenomenon, "dappled light."

The internet is very big on Japonisme (not to say Orientalism) so I feel obligated to present a contrary viewpoint once in a while.


Such a self-centered point of view.

It is not a matter of being able to convey a meaning in your language. It is about the story behind what a phrase comes to be in another language. Because of semantic domains and history and culture and all that, the story that comes with it can certainly not representable in a translation.

To claim a language is perfectly fine to represent any concept and hence the use of any other language is some sort of negative trend, is to deny the richness in other cultures and histories, almost to the point of being racist.

The worst thing about this kind of people is their urge to feel obligated to share.


This is not the same thing. "Dappled light" refers to the pattern on the lit objects, while this is referring to the visible beams of light themselves a la https://live.staticflickr.com/3342/3663701610_a5f8e10d7a.jpg

I've heard people call it "sun rays" or "sun beams" in English, but it's definitely not a well defined concept.


A google image search for "木漏れ日" gets me about 50% beams and 50% patterns on the forest floor, so I don't think the difference is as clear cut as all that. But even on that basis, we then have two words--sunbeams for the beams and dappled light for the pattern--where the Japanese have only one. By the logic of the usual breathless linguistic fetishism that we see everywhere online, that means English has twice the reverence for the natural world that Japanese has.


Sir, your racism is showing


Somewhat related, I saw a Reddit post of someone who got a tattoo of 木漏れ日 and the native speakers in comments generally thought it was an odd.

https://www.reddit.com/r/Japaneselanguage/comments/16b8r7c/p...


Contrary viewpoint to what? I don't think anyone claimed that there was no English equivalent.


No but the English equivalent doesn't get accused of reflecting the English' romantic and emotional love of nature.


but it may very well be seen as a mark of English pragmatism, or other more fitting attribution of archetypes, in return.

Interpretations of cultural origins of expressions in either language and romantic admiration for the shapes that words take is neither meant as a qualification of the speakers, nor is the fascination for one culture automatically meant to be entitled or hostile towards another.

You may very well admire the poetic yet observative nature of Japanese composita, as well as take delight in uncommon, inventive and elegantly rythmic English idioms. You may as well interpret freely what you see in them. All without putting one above the other, or regarding them as competitors.

And I'll be happy to have learned both today!


why do you assume that people made shit up? Maybe they learned it from somewhere? Maybe the "romantic and emotional love of nature" exists and there no need for anyone to "accuse" something to be it. You don't sounds like someone who can speak Japanese (or any foreign language really), so why do you think your theory is more plausible than that of people who do?


I love the word (e.g. the movie Perfect Days), but I feel a little sad seeing these beautiful ideas adopted as names for mundane products. I guess there's no harm in it - it's OK, really - but it feels a little cheapening.


There is also a word for this in Icelandic I believe. I remember seeing an interview with the Icelandic band Sólstafir, and they said this is the meaning of their name. I can't find the link now though.


It's fascinating how specific words in different languages can be, yet how they have a range of meaning that still relates them closely.

"solstafir" means almost the same, but more precisely translates as "crepuscular rays" -- the beams of sunlight sometimes emerging right at twilight, when the sun passes clouds just on the edge of the horizon.

how i learned about that: Solstafir was one actually of the first bands i discovered through early-ish open internet. I stumbled upon them on former rokk.is back when i was in school, where they used to distribute their music for free.


So, ”god rays”?


I would also include beams of sunlight going through an opening in the clouds under the term "god ray", rather than it being specific to tree leaves. However, I'm not a native speaker.


There are some space between windows when using this, which create some komorebis


The README says that "komorebi is a free and open-source project", but on the contrary, the software licence that this is released under (the 'PolyForm Strict License 1.0.0') makes it proprietary software, not free and open source (FOSS). The source code is available, but the licence doesn't permit modification, which is a key aspect of FOSS. So if the author is reading this, please change either the README or the licence so that they correspond!


Thought this had been removed when we re-licensed from MIT to Polyform earlier this year - this has been updated.

To add back the more important part of the cherry-picked snippet by the OP:

> [...], and one that encourages you to make charitable donations if you find the software to be useful and have the financial means.

> I encourage you to make a charitable donation to the Palestine Children's Relief Fund before you consider sponsoring me on GitHub.


Thanks for the super-speedy response!


This looks very cool. All other tiling window manager implementations I've seen for Windows fall short in some way, but this looks as close to something like sway or i3 as possible. Keeping the design simple by configuration through message passing is cool.

But the license is a dealbreaker for me. On one hand, I like that the license terms are short and easy to understand. In that regard, it blows other proprietary software out of the water. On the other hand, I know I'd be tempted to tinker with the internals at some point, and the license forbids me from doing that. Even if in practice the maintainer accepts illicit patches, I'd rather not spend my time contributing unpaid to something proprietary, so I'd rather use and contribute to some open source alternative.

But the real non-starter is that I only use Windows at work, and the license forbids me from using the software there in the first place.


You can go back a few versions if you want to use something MIT-licensed; generally all the releases since v0.1.19(ish) are quite stable for mainstream use cases and configurations.


I've been using this for a few months and really like it.

Pros:

  - Simple configuration and built-in keyboard shortcut daemon.
  - Performs very well; no animations, nothing to get in your way.
  - Workspace switching is excellent, doesn't use Windows' built-in system, and each monitor has its own set of workspaces
  - Draws a border around the active window.  This is huge.  I can't tell which window has focus without this and it's essential with focus change shortcuts.
  - Can move the cursor to the newly focused window, minimizing mouse movement.
  - Makes me happy.  That's rare on Windows.
Cons:

  - Doesn't handle DPI changes or laptop dock/undock well.  I usually have to restart.
  - whkd gets stuck occasionally and requires restart.
  - Polyform Strict license is a little unusual; I hope the author stays committed.


gonna try it out. thanks for the overview!


Used to be a bit rougher around the edges but now most of my problems boil down to some niche app not being tiled every once in a while, which can always be fixed by contributing to the repo for application specific tiling rules. The docs are solid and it recently has received a small gui to test configurations and debug applications which dont play nicely.

It takes a bit longer to get configuration up to speed because its not exactly one single program. Hotkeys are facilitated by whkd or an Autohotkey script, but thats because its built to allow other programs like status bars and application specific keyboard daemons can integrate with it. But all that also makes it a good learning experience.

Not sure how to stick in this with the other points, but maintainer is really helpful with any problems.


I recently switched from Linux to Windows 11 and all my problems with bad UI, blurry fonts and terrible quality of update is gone, only what i missed is tiling manager, now I found it, thank you.


This comment is bound to generate controversy here, and I'm all for it, as someone who also moved back to Windows. I dabbled with Arch Linux a couple years ago, found it a pain in the neck to manage because of HiDPI and my NVIDIA graphics card, moved back to Windows where everything works.


What distro / window manager were you using? I've been using Pop!_OS and hadn't really noticed blurry fonts, per se, but neither linux nor windows look as good as my mac.


What sort of code toolchains do you use? I've used a bit of windows before via WSL and Cygwin and it left a lot to be desired. It felt pretty similar to the problems i encountered on OSX when needing to run Linux specific tooling on docker containers. Ie not great.

Curious on what you use, and how your experience might overlap with mine these days?


I can strongly recommend trying out NixOS in WSL; I love this setup so much with komorebi. I have a starter template[1] available if you'd like to try it out. It takes less than 10 minutes in most cases to set up a fully functional NixOS WSL VM.

[1]: https://github.com/LGUG2Z/nixos-wsl-starter


Hah, i use NixOS, Nix Darwin, and Home Manager. Generally love it (as much as i dislike Nix lang lol)

Any reason you specifically like NixOS on WSL?

My issues with WSL was more that it felt like an artificial barrier. The filesystem differences would cause slow churn if expensive operations crossed the barrier, so it just in general was things i had to think about. Wasn't a fan of that.


> Any reason you specifically like NixOS on WSL?

Pretty much the same reason I like NixOS on my Linux laptop and Nix-Darwin on my Macbook - single flake that I can use on all my machines so that they all behave in a predictable way.

I do most of my Rust development (with the exception of komorebi and whkd) on NixOS in WSL, using JetBrains IDEs running on Windows accessing projects in WSL and I haven't noticed anything causing churn, however I think this is probably language-dependent.

Generally I think it's a reasonable heuristic that any language which is a pain to develop with when source directories are mounted in Docker containers (JS/TS and the huge node_modules folders immediately jump out) will also have similar problems in WSL (though probably not _as_ bad).


Not the GP but I use a headless Linux server VM through Virtualbox. I mount the Linux filesystem as a drive in Windows to use whatever editors on the Windows side and run any server processes (or command line utilities) on the Linux side. I've used this setup for over a decade without any complaints and the maintenance is low.


Can you please elaborate? I used to ssh into a Linux VN with VSCode but your setup is more sophisticated.


Here's how I do it. Create an Ubuntu server VM in VirtualBox, I use the bridged adapter for networking, VM will be its own host/IP on the network.

Then install samba.

  sudo apt install samba 
Also install openssh if not already chosen during setup.

Edit /etc/samba/smb.conf to uncomment/set these settings.

  [homes]
     browseable = no
     read only = no
     valid users = %S
Create a user for SMB, use the same username/password as your local Windows user for convenience.

  sudo smbpasswd -a username
Restart smbd, this command can vary depending on the VM OS/version.

  sudo service smbd restart
Mount the home directory (run this from the Windows command line.) You won't have to provide a password when authenticating, if you set the user/pw as I suggested above.

  net use z: \\vm-hostname\vm-username
I run git commands on the Linux side where all code projects live.

You can go in the opposite direction (mount the Windows filesystem from within Linux) but I don't suggest that for the primary use case of code projects, it can introduce problems with permissions. But for one-off use cases I do sometimes mount the Windows filesystem in Linux. That requires following the VirtualBox instructions for installing "Guest Additions" and using the Shared Folders feature.

Run servers on the VM, access web sites/services on the VM hostname through the browser on the Windows side.

Not specific to this setup, but if you want to run a service on port 80 of the VM, run this command on whatever the actualy binary is for the server process. (Not a symlink.)

  sudo setcap 'cap_net_bind_service=+ep' /usr/local/python-3.12/bin/python3.12


Thanks a lot. This is more than I can understand right now. I'll digest and see if I can apply the principle.


Isn't this quite similar to WSL? Is there a reason you prefer this to WSL?


I've been using this setup since before WSL existed. WSL had enough rough edges when it was newer to keep me from switching, but I'm sure it's improved since then.

This setup is simpler in the sense of not requiring a newish and ever-evolving layer from Microsoft. It's lame that Oracle owns VirtualBox now, but there's never been any pain with it so far.


I installed and launched it (komorebi-gui.exe? NOPE, komorebi.exe.. maybe that's right) but it seems like there is some learning curve.. no Welcome screen or post-install onboarding.

It randomly selected and tiled 2 / 50 total windows, and created a big black box for Progress Quest which wasn't there before (which I discovered here on HN last week but haven't started a New Game yet).

Is there a minimal Quickstart guide? I really want to like this but so far it's pretty rough.. I don't want to learn another form of the obscure config language (e.g. tmux) for a tiling window manager.

Edit: Thank you repliers :)


I had a similar experience last time I tried komorebi. The architecture seems smart in theory, with concerns separated between komorebi/komorebic/autohotkey, but in practice it's a lot of fiddling. I also experienced an irritating pixel-border spacing issue.

I've been using Divvy for the past few months and it's suited my needs much better. Instantly intuitive and productive. https://mizage.com/windivvy/


Thanks for the recommendation, I'll give it a shot (even though it is proprietary and definitely not FOSS).


There is both a quickstart guide[1] and a video walking through it step by step[2]. It takes less than 10 minutes of your time.

[1]: https://lgug2z.github.io/komorebi/installation.html

[2]: https://www.youtube.com/watch?v=H9-_c1egQ4g


This seems like it would be helpful for you https://lgug2z.github.io/komorebi/example-configurations.htm...


A while back I have developed https://github.com/ahmetb/RectangleWin which is the Windows equivalent of Spectacle.app/Rectangle.app on macOS. It lets you pin windows to halves and one-thirds of the edges and corners with hotkeys.


I remember when I was young that there was a "theming" app for win98 and it was cool.

It is https://en.wikipedia.org/wiki/LiteStep .


We have lost so much


Wonderful.

Also. Komorebi is a Japanese word for the way light dapples through layers of leaves to illuminate a forest floor. I also made a tool called komorebi (an internal tool used for visuallly highlighting features in genomic comparisons) and deeply appreciate the name.



Thanks! It's worth adding GlazeWM[1] and Whim[2] to this list for Windows too

[1]: https://github.com/glzr-io/glazewm

[2]: https://github.com/dalyIsaac/Whim


Will do, thanks!


Been using this for about a year and it is awesome! allows a lot more control than fancy zones.


Github should probably crack down on these kind of licenses and ask them to pay. This is one of the most restrictive ones I've ever seen, it's essentially all rights reserved, save for them graciously letting you download the application, but only if your non-commercial. You can't modify the code in anyway (even for personal use without distributing, despite what it says in the readme. The license itself says differently), or even share their own code with no changes. It's proprietary software with visible source code.

It doesn't even have an expiry date or some 'if this project dies' clause.


"Capitalism is naturally welcoming to 'open source' (relabeled as: knowledge thievery) but extremely hostile towards Freeware. It's pretty obvious why."


I'm excited to try this out. Fancy zones doesn't always cut it for me.


Another one by myself if you want .NET ecosystem: https://github.com/StackWM


Obligatory FancyZones/PowerToys links if Komorebi doesn't suit your style:

https://github.com/microsoft/PowerToys?tab=readme-ov-file

https://learn.microsoft.com/en-us/windows/powertoys/fancyzon...

FancyZones is a Microsoft tiling window management utility from their PowerToys collection.


A community member put together this great overview[1] for people who are wondering why you'd want to use an automatic tiling window manager with programmatic layouts instead of FancyZones.

[1]: https://www.youtube.com/watch?v=0LCbS_gm0RA


Any plans to make this for linux? I have recently switched away from Windows permanently due to the whole recall thing, but your project looks great.


Wow; I guess I've seen it all. Time to retire I suppose.


Is this tiling manager not worth its salt to bring over to Linux? Or is it because there are already other tiling managers, there’s no point in this targeting Linux also?


I think the feigned shock from GP is that Komorebi was inspired by Linux tiling managers, so porting to Linux maybe feels like a copy of a copy.

I guess it's a little like moving to Mexico and asking if Taco Bell has ever considered opening a location there, as you're interested in dishes that feature tortillas, rice, beans, and cheese. : )


Sorry to give you a hard time :) In the X11 ecosystem, the window manager is traditionally a 3rd party tool chosen by the platform maker or user, so the options for managing the appearance and positions of your application windows are as varied as opinions about how to do it properly. A number of popular ideas have made their way back to Mac or Windows as features to modify the OS's window management to behave more like some particular window manager. On top of that, once upon a time, tiled layouts were basically all you got since you didn't have enough RAM for a render buffer. So it's amusing that you had asked this question.

i3 is the main tiling WM in linux these days but very many more are configurable to support automatic or manual tiling. Your linux distro probably has a straightforward method to change your WM, but do be aware you may lose some behaviors you like; i3 is pretty svelte while most of the default WMs shipped by vendors today make use of quite a bit of eye candy, animations, etc.


There are lots of very well established tiling window managers for linux, there likely would be no advantage in porting a windows one to linux, and it may even be somewhat of a fools errand given the specifics of what its doing; you may as well write one from scratch.

i3 is a very widely used tiling manager on linux


i think you aren't passing @ the gate of speech thing [0]

but anyway, your comment has 12 words or 56 characters! with this amount we could type: "Linux has lots of WMs like: awesome, DWM, i3, xmonad etc"

[0] https://suncoasthospice.org/the-three-gates-of-speech/


The issue is that Windows API is completely incompatible with Linux unfortunately! This wouldn't even be runnable under Wine.

That being said, as my siblings have mentioned, Linux has many (better) tiling managers. For instance Sway and Hyprland for Wayland or Awesome and i3 for X11!

I'd personally recommend Hyprland as the learning curve is small and the extensibility feels the greatest!


> Linux has many (better) tiling managers

I wish. komorebi is pretty much the only thing keeping me on Windows at this point because there is nothing comparable feature-wise on Linux.


Woops, I think "(better)" came off as far too harsh! I love komorebi a lot too, but ultimately it's held back by what Windows allows IMO.


For Linux, why not use one of the many tiling window managers?


I am new to linux, so I don’t know my way around them currently!


X-monad and i3 are two common tiling managers for Linux. They prioritize different ways of working. So one might click with you while the other feels awkward…I connected with x-monad’s interface and not i3 but you might find the opposite.


i'd recommend a cheet sheet for both (i no longer have a url to one i used years-past; there's probably many variants nowadays) - but i can say a background pic of common commands can be quite handy when using tiling wms (esp when not using as a daily driver)


Don't worry, in a couple weeks you will be using i3 as window manager, code in neovim, have a github repo of your dotfiles, and consider switching to Arch Linux


You'd still have to learn this one... Takes 10 minutes to learn all about i3 config.


This is a great windows tiling manager for windows, it is pretty easy to use and they are going to add a stack bar which I am pumped for.


I don't get these Window management s/w, nor the obsession with them. What could you possibly get done in those 4"x4" windows? Get a 2nd, 3rd, or even 4th monitor if you are short of space or just a 34".


I use komorebi on my computers and I rarely ever have more than 1 or 2 windows on any workspace open at once. However, to give the main reasons as to why I use Komorebi is:

1. I love the automatic tiling, even if I 99% of the time only use it to have 2 windows split. It's just such a nice feeling not having to tile windows each time you open them up.

2. It let's me set programs being tied to specific workspaces at launch, so I always get spotify and discord on the first workspace on my second monitor. Again, a nice qol feature.

3. I think komorebi's workspaces are more powerful than virtual desktops. In virtual desktops then you change the desktop for both monitors when you switch, with komorebi you only change one monitor at a time. Which allows me to for example keep a youtube video on my second monitor playing while switching between workspaces on my main monitor.

These are probably the main reasons, I mention most of that in my youtube video that got linked in the thread.


My longstanding theory is that achieving peak *nix nerdom requires having a window manager that makes one's workstation completely unusable to anyone else.

I've long been happy with what Windows provides natively. I kinda wish that Win-Z provided a few more horizontal split options that make sense for 32:9, but reality is that I have Fancy Zones installed to provide the layouts I thought I'd like but I never use them because it's usually for console stuff and Windows Terminal has its own tiling system.


To access a new context a tiling manager requires moving my fingers. Multiple monitors requires moving my eyes, head, and/or torso.

Sometimes one makes more sense, sometimes the other. Fortunately, I can use a tiling manager with multiple monitors if I want.

But, I can use a tiling manager on my laptop anywhere multiple monitors are impractical. For me, that’s most places. YMMV.


I agree. I've only started using them since getting a 49" curved monitor and it's beautiful. Same for workspaces (virtual desktops) actually, never used them before.


Even on one monitor, I just use the built-in stuff (Win key + arrow keys to position windows, Win key + tab to get to virtual desktops, right click taskbar to cascade or tile).

I think some people like to have specific configurations like "open these 4 programs in these 4 positions" though.


they are not there to make squares. good ones have virtual desktops which you can change individually with multiple monitors. you can make programs start in specific desktops. recommended for keyboard heavy users not point and click people.


It's mainly to avoid having to use a mouse, you don't have to create many tiny windows


it is large monitors that make tiling window managers so useful. It makes sense to split them and tiling is more usable than overlapping windows.


Yeah, I don't either. I mean, maybe if I were debugging a console app? But I prefer using multiple workspaces.


Does anyone know what the explorer replacement(?) is that is seen in the videos?


What's up with the nix shell file?


I tend to work on the docs in NixOS; although I have the patience to write a tiling window manager for Windows in Rust, I do not have the patience to deal with the Python dependency management ecosystem directly.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: