Hacker News new | past | comments | ask | show | jobs | submit login
Chunkwm – a tiling window manager for macOS (koekeishiya.github.io)
224 points by firloop on March 5, 2019 | hide | past | favorite | 72 comments

I can't zoom the text on this website. I don't want to generalize to wm design choices but why, why would people do that on some sites, why is this even technically possible.

It's negative accessibility, if you zoom the text gets smaller.

I have compiled a few usability issues from their website: https://github.com/koekeishiya/chunkwm/issues/576

Submitted a PR for the font size issue. Thanks for compiling a list!

Thank you for that, I was curious what in CSS would cause this effect that I don't hear often about so I could avoid making that mistake in CSS, looks like it was vmin versus using em. I don't recall if I've ever used vmin, but now I know now to use it for fonts at least, or to mostly avoid it. Looks like your PR made it in too!

The PR for those curious:


It's from the use of `vmin`, which is better used for padding/margins than text. CSS accepts units of measure, `vmin` in this case, interchangeably wherever a property accepts units of measure. Font sizes accept unit of measure, so the site author decided to use `vmin` for the font size.

It looks like the problem stems from having everything set in terms of viewport units, e.g. font size set to 1.5vmin, and div width set to 100vmin.

literally the first thing I thought. Never even seen that before.

Works as normal on desktop (Safari, MacOS)

Not really. It zooms eventually, but then you get to also see how broken scrolling is. (You can't scroll using the space bar, and you can't read what's at the very bottom of the text, or at least not when using my low res large font setup.)

He's probably talking about trackpad pinch-zoom.

Both pinch and cmd+ work fine for me. Cmd+ makes the font effectively bigger and reflows the text just fine.

font-size: 1.75vmin;

Works fine for me (Linux, Firefox CTRL-+).

That's because the website was changed after that comment was made, to fix this issue.

works ok on firefox desktop

As a tiling WM user coming from Linux, ChunkWM and Amethyst are both incredible projects that allowed me to replicate my familiar and comfortable tiling setup once I had a work-issued laptop running macOS.

For those who haven't used ChunkWM, the closest corollary in Linux is BSPWM. Just like BSPWM, the window manager is a standalone daemon that exclusively handles tiling and window management, and relies on an external hotkey daemon to issue commands to the WM that resize, focus, etc.

Obviously this requires a lot of configuration - if you like the tiling WM idea but don't want to maintain a few hundred lines of config files, I'd highly recommend looking at Amethyst.

I used Amethyst a couple years ago and gave up due to bugs and it often getting in a bad state. Has it improved? I switched to Linux but quite literally i3wm is the only reason. I will give current Amethyst and chunkwm a try.

Amethyst has stabilized a ton in the last few years, I'd definitely considering giving it another shot if it's been a bit.

One issue I had was that it seems that chunkwm only seems to support binary splits out of the box. Eg; if you have three windows it doesn't seem to automatically equalize the three out of the box.

Yeah, same here. As someone who used AwesomeWM for a while, the limitation of binary split for both bspwm and chunkwm always felt a little restrictive.

I struggled a lot trying to get chunkwm up and running a while back. Ended up trying Amethyst: https://ianyh.com/amethyst/ While it still has plenty of configuration options, it ended up being manageable enough for me while showing me the benefits of twm's.

If chunkwm seems like a lot and you still want to try out a tiling window manager, I'd recommend Amethyst simply for the lower barrier to entry.

I amethyst is more usable than chunk im definitely stearing clear of it.

I had the opposite experience; setting up chunkwm was trivially easy and it's been rock solid for the last year and half of me using it.

Something is seriously messed up with the scrolling on the "Screens" page. It causes huge lag on a 2015 MacBook Pro, just to display six gifs, and your mouse focus has to be in the middle of the page in order to scroll.


Why oh why does every page on the internet need a sticky header? Just give me a document already...

Scrolling on that page misbehaves because the images are in a div #contents with overflow-y: scroll, while its parent divs and body have overflow: hidden. Commenting out all the overflow CSS fixes scrolling (but breaks the sticky header and footer).

Hmm, not the creator but the page source looks fine. There's no JS, and the images just have this CSS:

  .scale-img-half {
     width: 46vmin;
     border: 1px solid #404040;
What browser are you using?

scrolling doesn't appear to work at all for me on Chrome 71, macOS

you have to have your mouse over/focus on the main body div, since it appears to be centered and overflow: hidden.

Check out Spectacle[0] if you are coming from a Windows world and actually like the window management in Windows 7.

[0] https://www.spectacleapp.com/

Yet another vote for Spectacle.

I also pair this with Cinch[1] as I regularly switch between inputs and setups (KB & Mouse at the desk, neither on the go) and like to have flexibility with both keyboard and mouse/trackpad control.

The key value-add of Cinch for me is replicating Windows-style 'drag-to-top' for fullscreen, and 'drag-to-side' for half-screen window adjustments.

In short, Spectacle for fine-tuned keyboard controlled window management, and Cinch for mouse/trackpad.


In a similar-but-not-the-same, Phoenix[0] can be used in a the scenarios Spectacle shines, but is scriptable. This way I could define commands for weird layouts (I have for instance a way of setting windows in vertical thirds, or in screen 9ths, or using 70-30 like iPad's split view). Requires some more work, but depending on your use case it can be worth it (otherwise spectacle is a very fine app).

[0] https://github.com/kasper/phoenix

+1 for Spectacle. Works great, first thing I install on any new Mac that I get.

Agreed. Once you get familiar with all Spectacle's shortcuts window management becomes really quick and simple.

Tiling window managers are very fun to use, once you get the hang of them. They're definitely not for everyone, but they make my workflow much simpler.

For anyone who uses a Mac, and has used this - how is it? It looks really cool, but I'm concerned about speed/stability. I used Magnet (http://magnet.crowdcafe.com/) when I had a Mac, because the lack of any sort of tiling or snapping annoyed me, but it was slow and felt very much like a third-party add-on and a hack.

I have never seen a page manage to break browser zoom so thoroughly. Zooming to 300% on Firefox actually makes the text smaller.

And the screenshots (which are 3000px+) can't be zoomed in on or clicked? And you can't scroll the text unless you're directly on it? Weird implementation decisions for this site.. The WM looks awesome though :)

I have to admit to being mostly satisfied with my Divvy setup, which isn't "tiling" per se, but does provide me reasonably granular, keyboard-shortcut-mapped, size-and-position assignment for arbitrary view windows. Wondering if digging into a proper tiling solution would have ROI.

macOS is clearly designed to be used with gestures. I remember the first time I went into the Apple store the salesman tried to show me some fancy gestures to open the app launcher.

Tiling is the complete opposite: keyboard based. I've had fine experiences with both the gestures and tiling, and I find that macOS is easier to use for graphic design, while sway is easier to use for coding.

I think amethyst and chunkwm are both a little clunky, but that's too be expected. I'm wondering which does HN prefer?

This is awesome.

The only thing that keeps me from running Mac as my main machine is that I don't have i3 on mac. (My main systems all run archlinux w/ a heavily customized i3 tiling window manager.)

I'll definitely be looking into this.

Is there any reason why there aren't many alternative shells/wms for Windows and MacOS as there are for Linux. Are there technical barriers, or is it more that the defaults are good enough?

I use dwm-win32 works great. You can find the binaries from release tab. https://github.com/prabirshrestha/dwm-win32

It is based of http://www.brain-dump.org/projects/dwm-win32/ with my patches.

X is designed such that the WM is a user replaceable component with a stable, public interface to the rest of the system. Those other systems not so much.

This is correct. I can only speak to macOS, but window management in this case is actually built on something entirely distinct from the actual system window manager. It utilizes a framework designed for implementing accessibility driven features, but it just happens to provide mechanisms for moving and tracking windows as a part of that.

I myself made one: https://losttech.software/stack.html . You can't completely replace the default one, though. Just override relevant hotkeys and pointer gestures.

I am unsure why do you think Linux has more options? How did you count them?

My guess is that, in general, tiling is less useful in windows because fewer things are command line driven. I'm not saying none, just that in the linux world it is a lot more useful to a lot more people. So there is probably very little demand on the windows side.

Because of some personal preferences - I didn't really like BSP, and the idea of running two window managers - I use Hammerspoon[1] for a lot of other things - I wrote HHTWM[2] - tiling wm library for Hammerspoon.

HHTWM also persists state between reloads, something that chunkwm didn't do last time I checked.

[1] http://hammerspoon.org

[2] https://github.com/szymonkaliski/hhtwm

There is an app called Magnet on the appstore (I'm not affiliated in any way). Anyway, it does 60% of what this does with 0 hassle.

I love the idea of chunkwm, but I don't have a lot of spare time.

Chunkwm combined with Karabiner-elements has completely changed how I interact with a computer. It feels more like an extension of me, similar to the feeling of rapidly iterating through commands in a CLI.

[edit] I have been using it for about 2 years now.

I absolutely love this software. Combined with Alfred (where I've generated a set of Keybindings), I'm able to tile effectively, and haven't thought about Window size in months. Love it.

I think anything that changes macOS UX has a tremendous uphill battle.

As mentioned in a comment I made below, the fact that so many people have to modify and tweak OS X just to make it habitable for a multi-window and multi-instance workflow points to some serious deficiencies relative to Windows. I switch between both interfaces throughout the day and my Mac experience is consistently subpar.

It really is pretty shocking that at this point Apple hasn't invested the time in a window snapping situation. Their other window management utilities (mission control, hot corners, etc.) are all very nice, but all incredibly pointer/mouse-centric.

I'd guess that a lot of macOS users don't care much since the pointer inputs (touchpads, magic trackpad) are really quite nice on Apple hardware. On the other hand, I definitely started using tiling WMs because the trackpads on my Linux laptops were always absolute garbage in the mid-2000s and early 2010s. The first time I used a Macbook touchpad I understood why so many people fell in love with those devices - especially back then, the touchpads felt magic compared to the crap being put out by every other PC manufacturer.

macOS has subtle window snapping already, I think introduced in 10.13 but I'm not certain. Moving and resizing windows tries to snap to edges of other windows, but it's a relatively minor effect (which is good because aggressive snapping is really annoying), and only triggers when you're moving slow enough.

How so? I ask as someone who doesn't consider his macOS install complete without Bartender and Moom, etc.

Could you elaborate on your "etc"? I'm curious :)

I personally use SizeUp instead of Moom, because I was used to using the keyboard and Moom's initial focus on a GUI threw me off. I only discovered later that Moom of course also supports shortcuts.

Some of my other additions:

- Karabiner-Elements, to swap Fn and Ctrl on the macbook's keyboard. I require Ctrl as my corner key!

- Witch, an alternative task switcher (alt-tab), which supports selecting individual app windows (macOS's distinction drives me nuts). Unfortunately it occasionally lags, so I'm iffy about it.

Wow, thank you for the Karabiner-Elements lead! I switch between Mac and PC, so having to use the FN button drives me completely batty. And I will have to try Witch as well.

before i found karabiner so long ago i was considering returning my macbookpro coz the switch was driving my productivity down(i would mentally go "fuck macOS" everytime i tried to copy something)

I use witch, I love it.

The thing that always bothers me when I try polishing my hammerspoon config is that none of the available modifiers are dedicated to window management.

On all my linux systems, I have a separate Mod4 modifier that is exclusively used for key bindings that my window manager interprets.

On Mac, there's control, option/alt, and command, but various programs use various subsets of them, so none of them is available for me to completely commandeer.

Karabiner(-Elements) lets you convert a key to be a cmd-control-shift-option modifier, and I might just end up doing that, but whatever key you choose probably isn't going to be under my left thumb like my muscle memory wants.

For hammerspoon what I ended up doing is making modal keymaps, but modal keymaps are really different from how I handle it on my other systems, so it hasn't stuck yet.

I use Karabiner-Elements to rebind my Caps Lock key to "Super" (actually, F17).

I use Ctrl+Cmd+Alt+numpad keys for ShiftIt. If this conflicts with anything, I've never noticed. Who would be silly enough to choose such a combination for something anyway?

But you can have the initial key show a notification that describes the possible keys to press next. Then if you forget a key combo, you can always look it up.

Bartender and Moom are enhancements of the existing UI. chunkwm is more like wanting to have your desktop managed by X11 and maths, i.e. turning your Mac into not-a-Mac. This has its adherents but they are fewer than the people who want to stick to the Mac part.

It's always amusing to see the hoops you have to jump through to customize your system on non-Linux machines, and even then you don't have half the expected flexibility. Both Windows and Mac laptops are probably great for people whose customization needs end at changing the wallpaper, but not for professionals with established personal workflows worked out over the course of years or decades.

As an alternative to a tiling window manager, I've found phoenix (https://github.com/kasper/phoenix) to be a great window manager. It allows you write custom keybinding in javascript to move windows around.

I tried chunkwm last year or so but I found it to be very lackluster. There were a lot of problems when it was trying to work against the native window manager. How has it improved over the last year or so? I use i3 on Linux, but love to get a window manager on my Macbook as well.

I wish there was a way in stock OS X to have windows float on top in the z-order. I'd love to do more multi-window stuff but I hate how I constantly lose small windows when I focus my larger editor or browser.

Chunkwm on its own, without the key capture daemon is surprisingly easy to use. You do have to mouse between things instead of using keyboard to shift focus but the tile and size behaviour is pretty good.

Have been using and recommending this for the last few months. Found it easier to customize vs. amethyst

simplest install/run cycle for something in this space I've had in a long, long time.

it just works

been using this every day for 2 years! great project!

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