Hacker News new | past | comments | ask | show | jobs | submit login
Using Xmonad on OS X (haskell.org)
91 points by brudgers on Jan 12, 2016 | hide | past | web | favorite | 54 comments

The reasonable solution is to use one of the many native tiling applications for OSX. I personally use Spectacle[0], but there are many others[1]. They aren't xmonad, but then again OSX isn't Linux.

[0]: https://www.spectacleapp.com/ [1]: https://apple.stackexchange.com/questions/9659/what-window-m...

Disclaimer: I run OS X at work and Linux on all of my personal machines.

> The reasonable solution is to use one of the many native tiling applications for OSX.

As an i3 user (and former wmii user, and former xmonad user), I find it really frustrating to use tiling window management that doesn't support focus-follows-mouse. This rules out things like Spectacle, Divvy, etc. At a second level, I find that all of OS X's tiling applications have inferior support for workspaces on dual-monitor setups compared to i3/wmii[0] and xmonad.

Unfortunately, on Aqua (OS X), there's basically no way to do proper focus-follows-mouse support. There is one app that fakes it (I think Amethyst), but the latency is annoyingly high.

[0] heck, wmii has better support for workspaces on dual-monitor setups, which is saying something, because it literally doesn't have support for dual monitors at all - you can only run dual-head X11, which is a terrible hack.

fairly early stages, but kwm (https://github.com/koekeishiya/kwm) is an OS X tiling WM that supports focus-follows-mouse.

Off-topic, why did you switch from xmonad to i3?

Not a deal breaker but Xmonad brings a large dependency (1GB+ is the price of Haskell) where most TWMs on Linux are in comparison laughably lightweight and blazing fast.

For me i3 strikes the sweetspot of dead simple config, incredible feature set, and performance. This after coming from Awesome WM where I found myself spending way too much time tweaking Lua script to get things pixel perfect, which you basically get out of the box for free with i3.

This gives the false impression that xmonad is not as fast as other twms. Xmonad is very lightweight, the package is below 500kb, which is below i3 and awesome. It has a very minimal and clean interface. The configuration file IS the twm (similar to DWM) xmonad is just a library. You write your WM which might be a turnoff for users that don't want to spend the time doing so.

Since xmonad is a Haskell library, you need the compiler. There's a reason why ghc is so big compared to other compilers, but just because it is a big dependency, it doesn't make xmonad any less lightweight

Yes, it only a really major inconvenient if you have very very limited HD space, which is a rare thing these days. And you can always uninstall ghc after configuring xmonad.

> This after coming from Awesome WM where I found myself spending way too much time tweaking Lua script to get things pixel perfect, [...]

This is why I use dwm, because I don't know C and thus I can't configure it, and thus I use what I have and use the time I'd spend to configure it to do other things. Another reason is that I can just check it in to my dotfiles.

Are you implying xmonad is slow?

Sadly all the tiling window managers i've tried suck on multi monitors though. When i switched to 3 monitors i gave up on tiling wm (for once with 3 monitors i had A LOT more space).

XMonad has the feature that you can freely swap workspaces between screens. For example, you can show workspace 1 on screen 1, 2 on screen 2, and then switch them around to 3->1, 1->2, or any other combination you prefer.

This is a killer feature for me, and I've never found any other WM capable of doing that.

That's amazing, I would love if OS X did that natively.

Are you talking about tiling window managers on OS X or in general? If it's the general case, I have to disagree. XMonad is absolutely fantastic on multi monitors.

The two things I liked to most were Mod+e or Mod+w to change focus to the previous and next monitor, and the ability to actually move an entire workspace to another monitor with the press of a button.

This is obviously just my opinion. In the end, it's a mere matter of personal choice.

Try awesomeWM, the multi monitor support is great, it works with pretty much every setup I've tried from xinerama to multiple xorg servers/screens. The config is all lua and can be a bit annoying but overall I've found it to be the best setup for multiple monitors.

> Sadly all the tiling window managers i've tried suck on multi monitors though. When i switched to 3 monitors i gave up on tiling wm (for once with 3 monitors i had A LOT more space).

Even i3? I've only ever used i3 on two monitors[0], but it's been great for that. I'd also be a little surprised, just because multi-monitor support was quite literally the reason that i3 was created (wmii does not support dual monitors).

[0] I'd love to hook up my third monitor, but I much prefer having 2 4K screens at 60Hz to having 3 4K screens at 30Hz

i3 works great with three monitor. It's my work setup.

I've found stumpwm to be a real joy to use on multiple monitors. It feels like the future of human-computer interaction, today.

I had the exact opposite experience. I coped with stacking WMs until I got a third monitor -- then it became virtually impossible not to use a tiling WM. :)

How on earth do you throw windows from the leftmost monitor to the rightmost easily?!

I figure I'll just ask this here. Why can't you use something other than Aqua?

> I figure I'll just ask this here. Why can't you use something other than Aqua?

Aqua is the default window manager[0] for OS X, so any default OS X applications will be using Aqua-based windows. When I say "focus follows mouse doesn't work in Aqua", I'm saying that you can't get (proper) focus follows mouse behavior on "regular" OS X application windows, no matter what other user-level program you install to handle window management.

You can decide to use something that only manages X11 windows (which is what XMonad does), but then you're stuck using only X11 applications. (Back when I tried it, even getting an up-to-date X11 build of Firefox on OS X was a pain).

[0] I don't think the term "window manager" is quite correct here, but since OS X divides things up differently from how Linux/X11 work, it's the most analogous concept.

Focus-follows-mouse in what sense...system-wide? I've certainly implemented it on OS X within a single application (for my terminal). And latency is not an issue.

AFAIK there is only one sense: you move the mouse over a window and that window gain focus

just a nitpick: I'm pretty sure Aqua hasn't been a thing for years now.

It's in reference to the native OS X window manager. AFAIK it's still called Aqua.

I'm fairly sure it's never been called Aqua; "Aqua" is the name of the standard UI look (cf. the NSAppearance class). But the window manager is Quartz: "Quartz Compositor is the display server (and at the same time the compositing window manager) in OS X."


(Hence the name "XQuartz" for the X11 display server.)

People always reply citing spectacle et al, but the only window manager that actually has full tiling features I've come across is kwm, which has only recently been developed and is experimental and prone to crashing. Amethyst was passable, but it was very laggy when I last used it. Maybe I should give it another try.

I used xmonad a lot when I was using linux but haven't tried it out on OS X. I'll give this a try.

What about Hammerspoon?


It's the successor to Mjolnir listed on that Stackexchange post. A group of people forked it because Mjolnir was a bit fiddly since you need to use a Lua package manager to install extensions for Mjolnir. Plus, Hammerspoon is pretty actively developed while I don't think Mjolnir has had an update in a very long time.

Spectacle is more about moving and tiling individual windows whereas xmonad is more about automatically controlling and tiling your entire desktop space with less direct user management over the windows.

I use spectacle as well, but it's drastically different from xmonad. One is a tiling helper, the other is an auto-tiling window-manager replacement.

> Native Aqua windows do not support any kind of window manager mechanism; Apple scattered the functionality around within Core Graphics, WindowServer, and the application frameworks and didn't make any part of it replaceable. Neither XMonad nor any other X11 window manager will ever be able to manage native windows.

Nuf said.

Note that XMonad, as the name implies; will only work with Mac windows that are being managed by X. Standard mac windows will not be affected.

In case anyone missed it - here's another tiling window manager for OS X that popped up a few weeks back on HN:


It's quite pretty: http://imgur.com/a/tWBSg

Impressive project! Still has a good amount of bugs before things could feel smooth but it has a lot of potential. I'll try to keep it running the next days to see how I like it. If it just wouldn't crash on my all 5 minutes

Does anyone know what that borderless terminal is?

The iTerm2 beta features the borderless windows. You can grab a nightly build from https://www.iterm2.com/downloads.html.

The settings is Preferences -> Profiles -> Window and then select "No Title Bar" in the drop-down for style.

I really wish we could disable all the title bars.


almost certainly iTerm. You can config an iTerm profile to have borderless windows in recent-ish versions.

Oh, interesting... I just looked for it, and I found that there are patched versions of iTerm that are borderless; is there actually a way to configure standard iTerm in this way? that'd be great.

Yup. Preferences > Profiles > [your profile] > Window > Style > No Title Bar

Awesome, thanks! I just upgraded and it works great.

iTerm 2 probably

It's the closest thing I've seen to XMonad for Mac OS X but it could benefit from some performance tuning (unless Mac OS X is the bottleneck).

I was an avid Xmonad user on my Linux desktop but never was able to get it working quite right on OS X. I would love if that would change. Unfortunately I don't see anything new on the link posted here.

Among all of those, I would write the very same things. Thanks @LukeHoersten.

One of the big drivers for me to switch back to Linux 7 years ago was Xmonad. It's a fantastic and extremely elegant piece of software from many points of view.

The only little glitch is that you need ghc to use it and that's a rather big dependency.

Doesn't have to be an issue with the appropriate PPA.


There are things I miss about Xmonad on OS X, but for the most part, this setup is not for the faint of heart. Largely, relying on [u]xterm (which I thought would be a snap) has pitfalls. Overall, the small annoyances simply sum up to be quite the downer & time-suck. In action, Xmonad is quite the zippy experience; certainly Xmonad on Linux must be a joy. I use tmux now, which I guess is OK.

Why? I found even the basic configuration is good for me. All I need is dmenu, which is already pre-setup.

I think many mac users here would find Phoenix[1] to be a decent solution. I've shared my config as a gist[2], which is somewhat inspired by (a subset of) the features of Optimal Layout[3], which I used for years before recently switching to Phoenix. My config code is not particularly DRY and almost certainly has memory leaks. Mainly, I wanted to get something working, the way I wanted. I'll clean it up... at some point.

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

[&] https://github.com/kasper/phoenix/wiki#examples

[2] https://gist.github.com/michaelsbradleyjr/e641907e3b1576fe34...

[3] http://most-advantageous.com/optimal-layout/

https://wiki.archlinux.org/index.php/xmonad. <-- good xmonad info here

I blogged about my collection of tools here - http://ashishb.net/tech/mac-os-x-primer-part-3-window-manage...

I use Divvy, it works great :<

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