
Amethyst – A tiling window manager for OS X - xj9
http://ianyh.com/amethyst/
======
bombtrack
I posted this yesterday in the thread about the Rust-written window manager,
but it's relevant here as well.

There are plenty of apps that provide varying levels of window-manager
functionality to OS X. I would try a couple out and see which feels right to
you. I have tried most of them, and personally prefer Moom.

[http://manytricks.com/moom/](http://manytricks.com/moom/)
[http://mizage.com/divvy/](http://mizage.com/divvy/)
[http://ianyh.com/amethyst/](http://ianyh.com/amethyst/)
[http://spectacleapp.com/](http://spectacleapp.com/)
[https://github.com/fjolnir/xnomad](https://github.com/fjolnir/xnomad)
[https://itunes.apple.com/us/app/bettersnaptool/id417375580?m...](https://itunes.apple.com/us/app/bettersnaptool/id417375580?m..).
[https://github.com/sdegutis/mjolnir](https://github.com/sdegutis/mjolnir)

~~~
simi_
I swear by Spectacle. After trying a number of other wms, this is the one I
ended up using for more than a year now. It strikes a good balance for me
between features and simplicity, and the keyboard shortcuts are intuitive and
don't clash with other apps (like iTerm, Fantastical, etc).

~~~
ecnahc515
You should try BetterTouchTool. It can do everything spectacle can, but has a
lot more features, and support for trackpad gestures, and other nice things.
It even has draggable window snapping like Windows/Ubuntu Unity.

~~~
simi_
That's what I used for about a year before Spectacle, but it's too heavyweight
for my taste.

------
ianyh
I'm the Amethyst developer. I'm happy to answer any questions people have. I'm
hopping on a cross-country plane flight in about an hour, but I have a
layover. I'll try get back to people as soon as I can.

~~~
nuclear_eclipse
Is there a way to set up custom layouts? Eg, I'd love to have a variant of
tall/wide-tall that puts the main area on the right side of the display,
rather than the left.

~~~
ianyh
Not yet. I've toyed with different ways of doing this, but haven't really
decided on one that I really like. Maybe I should just go the road of other
window managers that expose a scripting interface. Write a javascript file or
something that defines a function that takes a list of windows and some other
parameters and returns frames for the windows, binds to commands for modifying
layout state, etc.

~~~
nuclear_eclipse
Would it be simpler to just define a couple "mirrored" variants of the main
layouts?

~~~
ianyh
Yeah, there's already an issue to track that
([https://github.com/ianyh/Amethyst/issues/129](https://github.com/ianyh/Amethyst/issues/129)),
but in general it seems like people want more flexibility in defining how they
want things to tile.

------
shawn-furyan
I've been using Amethyst as my WM for a couple months now, and have used
XMonad for significant stretches in the past.

Amethyst tries to bring the XMonad experience to OSX. I think it does an
admirable job, but there are some distinctions. Amethyst is simpler to set up,
and is more forgiving to newcomers. It has a GUI for configuration, and an
easily accessible list of commands. It also works on top of OSX's WM, so it's
not so enormous a departure, especially compared to XMonad's fairly extreme
dismissal of the mouse.

On the down side, XMonad really outshines Amethyst when it comes to
performance. Amethyst is downright sluggish, where I've always found XMonad to
be very responsive. Still, it's overall a true enough translation, and the
sluggishness rarely actually hinders productivity. Overally, I think Amethyst
is a capable daily driver, and a great intro to tiled window managers.

~~~
codygman
To me the performance of XMonad detracts from the trope that Haskell isn't
performant (which I've been hearing/seeing lately).

~~~
carterschonwald
I mean, its often slower than hand tuned assembly mixed with Fortran if that's
what you mean.. Otoh,most things are

------
platz
I like tiling managers, but dislike having predefined layouts. Being able to
split any tile horizontally or vertically arbitrarily many times is the way to
go (i.e. i3-style). Would like to see tiling wm authors to consider this
option when starting new projects.

~~~
ianyh
It's on the list of things I want to do. I should have used a tree structure
off the bat and done something like binary space partitioning.

------
robbles
As someone who's relatively new to tiling window managers (I've used manual
ones like Divvy and Moom quite a bit though): is this approach only really
effective with large monitors?

I've given Amethyst and other WMs a shot in the past and been instantly
annoyed when they automatically tucked away windows into unusably small
configurations. Is this part of the learning curve and addressed by proper
configuration, or should be avoiding this for use on small screens? e.g. a MB
Air 13"

------
axotty
Am I the only weirdo who just uses multiple workspaces with ctrl-arrow and
cmd-tab like a mad man? I genuinely enjoy it, especially with a second
monitor.

I, maybe, have one or two apps sharing a single workspace. Most apps are in
full screen.

~~~
chipotle_coyote
You are not. :) I don't usually use full screen mode for apps when my Macbook
Pro is docked, but when I'm just using the laptop screen it's ended up being
surprisingly useful. (At least I was surprised.) Docked I'm usually only using
two virtual desktops, sometimes three.

Mission Control gets slagged on more than it deserves -- it's fast and
functional. On point for the actual link to Amethyst: I use Moom for window
resizing/control from the keyboard, but in practice the mouse is actually
pretty darn efficient when what I want is to make a window _this_ big and put
it over _there._

------
pmoriarty
Wow. This has focus follows mouse! (though they call it "mouse-follows-focus",
for some reason)

I've been told focus follows mouse was impossible on OS X.

~~~
TkTech
Who told you that? You could do it with just applescript if you wanted to,
just need to enable accessibility so you can control windows and the mouse.

~~~
pmoriarty
I've seen this "limitation" mentioned in various online forums, such as the
following.

 _" Mac OS X interface and ergonomy is (as said by apple) not 'compatible'
with the focus-follow mouse mode. Why ? Because a single application interface
is split into lots of different elements. For exemple, you use an application
like photoshop or word, you'll have different panels floating around the main
window. With sloppy focus mode enabled, with an application below, you
would'nt be able to reach them. And how should they consider the desktop,
which is, finally, just a 'root' window managed by the Finder..."_[1]

Here are some more.

 _" Sadly, it seems that for the time being there is no good way to do this in
OS X."_[2]

 _" The fundamental problem with sloppy focus on the Mac is that the menu bar
is always associated with the currently focused application; if you had sloppy
focus, accessing the menu bar for a specific application would be supremely
difficult."_[2]

[1] -
[http://jeremy.zawodny.com/blog/archives/000149.html#comment-...](http://jeremy.zawodny.com/blog/archives/000149.html#comment-14550)

[2] - [http://superuser.com/questions/27306/focus-follows-mouse-
or-...](http://superuser.com/questions/27306/focus-follows-mouse-or-sloppy-
focus-on-mac-os-x)

~~~
rsync
""The fundamental problem with sloppy focus on the Mac is that the menu bar is
always associated with the currently focused application; if you had sloppy
focus, accessing the menu bar for a specific application would be supremely
difficult.""

Well that's the real trick. It _would_ be difficult to access the menu bar if
you had a mess of weirdly placed and sized windows scattered around, like the
OSX UI paradigm assumes you do.

But if you have a tiling window manager, and especially if some of those tiles
are full height, it's quite easy. Just put your mouse in the window you need,
and then go straight up to the menu bar.

Yes, once in a while you need to cross some extra real estate with the mouse
in order to "dodge" a UI element you don't want to switch focus to, but it's
really no problem.

I've been using tiling UI and focus-follows-mouse on snow leopard since 2009.
I couldn't work any other way.

------
dylanz
First off, thank you ianyh!! Tiling window managers are a huge productivity
tool, and when I see people manually resizing windows, it's painful to watch.
I'm on OSX now, but used XMonad extensively when I was on a *n?x distro.

At the moment, I'm using Spectacle for OSX.
[http://spectacleapp.com/](http://spectacleapp.com/). Are there reasons I
should use Amethyst instead? I'd love to see a feature matrix or something in
you FAQ about the other options, and what Amethyst brings to the table.

~~~
ianyh
A feature matrix isn't a bad idea (and I opened an issue to track
[https://github.com/ianyh/Amethyst/issues/267](https://github.com/ianyh/Amethyst/issues/267)),
but it's kind of hard to compare as they are such different pieces of
software. Spectacle is manual window management and Amethyst is tiling window
management.

Manual window management generally gives you better control and generally less
overhead in terms of complexity. So it works well in the case of "I want to be
able to move this window to the upper half of the screen", "I want to be able
to make this window take up the entire screen", etc. You have to trade
simplicity to get flexibility, though. What if I want to be able to move
window to the upper right hand quarter of the screen? Or what if I want my
screen divided into a grid of 3x4 and I want a window in the [0][1] position?
You can accomplish all of those things, but you have to specify how to go
about it, thus adding complexity. Slate, for example, puts that complexity
upfront in writing a config file. Divvy, for example, puts that complexity at
runtime.

Tiling window management gives you a more hands off approach. So things like
"I want all of my windows to be laid out in this orientation, but I don't want
to move them myself", "I want all of my windows to be visible at any given
time", etc. You don't take actions to lay windows out, you just define
algorithms for how they should be laid out and let the software sort them out.
You have to trade simplicity to get control, though. Defining those algorithms
can be complicated if you're not doing something really straightforward, and
if you're not doing something straightforward it can sometimes be non-trivial
to grok what's actually going on. Or you end up doing a lot of runtime
massaging to get things working the way you want.

To each their own, though. I prefer tiling window management, I have coworkers
who prefer manual window management. They're just different tools.

------
DevMonkey
For Windows I just stumbled across MaxTo
([http://maxto.net/](http://maxto.net/)) I've been using it for a couple of
days and I'm really impressed.

~~~
chriswarbo
In a previous life I used [http://code.google.com/p/python-windows-
tiler/](http://code.google.com/p/python-windows-tiler/) for Windows. It's not
the most stable application though.

------
nchuhoai
I've used BetterTouchTool's tiling functionality for the most part, but I just
got a 4K monitor and most granular most tiling managers can do is quarters. I
wish there was an out-of-the-box solution that allows me to just tile my space
more granularly

------
0942v8653
I use a window manager, but really only to have a hotkey that fullscreens a
window (three, actually: one for current, one for left and one for right
display). With 2 displays, I find that I have all I need with just an editor
window and a documentation browser window. I guess I have smaller displays
than most people because if I resize a window (browser windows mostly) beyond
about 2/3 its layout gets messed up or a horizontal scrollbar appears.

------
RussianCow
I really just want a window manager that allows windows to snap to each other
and the edges of the screen when resizing or moving them. Does something like
that exist? I don't care for the pre-defined layouts or hotkeys, I just want
to be able to visually drag/resize my windows and have them take up the most
optimal amount of space.

~~~
cstuder
I personally use Cinch, which is good enough for me: Maximise if I drag a
window to the top, left/right half if I drag a window to the side.

[http://www.irradiatedsoftware.com/cinch/](http://www.irradiatedsoftware.com/cinch/)

So far I've never seen a tool which glued one window to the other though.

~~~
RussianCow
Yeah, that's about as far as I've gotten as well. Snapping to other windows
seems like the natural next step for me--it's weird that not a single app has
taken that approach, though.

------
lingodayz
I wish there was a window manager such as this but where you could put the
application into full screen mode. So have two programs running in full screen
mode side by side. Sublime and others (iterm) look so much less distracting
without their window frames.

------
rcknight
Weird, I was literally just googling for this and found Amethyst. Seems nice.

I've noticed it gets a little slow to rearrange things sometimes with lots of
windows but the functionality I need is all there.

Works great with my three screen setup too, which many tools like this don't.

------
soundjack
No one mentioned this one yet, it's not free but works pretty well with
Windows 7-like snapping too:
[http://www.nulana.com/flexiglass/](http://www.nulana.com/flexiglass/)

------
Vecrios
What's the benefit of using this vs. WMs like SizeUp?

I'm asking this question because I'm quite comfortable with SizeUp and don't
understand if learning how to use a WM is worth it.

~~~
rcknight
Seems to me that there are 2 big benefits over sizeup (though i'm basing this
entirely on their website, i've not used it)

1 - With sizeup you have to manually move your apps around. With this, new
windows are automatically tiled (and you can then move things around
afterwards with the keyboard shortcuts)

2 - This seems like it supports more complex layouts (with various layouts
built in)

~~~
ianyh
That is generally correct. I wrote a longer comment about this but SizeUp is
about manually managing windows and Amethyst is about letting software manage
windows for you. It's generally a matter of personal preference which you
prefer.

~~~
Vecrios
In case anyone looking for the referenced comment:
[https://news.ycombinator.com/item?id=8769044](https://news.ycombinator.com/item?id=8769044)

------
pmoriarty
Does anyone know whether there's any chance i3 could be ported to OS X's
native windowing system (whatever it's called) ?

~~~
thinkmassive
You can probably run i3 in X11, although non-X11 apps won't work with it. Your
best bet is to run i3 in a full-screen VM.

I researched this myself a few months back, since i3 was the biggest thing I
missed when I had to switch to OS X (new company, new computer). Eventually I
gave up and settled on Amethyst. It's not bad once you set up the keyboard
shortcuts to your liking. The main things I miss are the tree structure for
window organization, and window borders that stick together when resized.

I created some bounties on bountysource for features I'd like to see in this
project. Hopefully other people want them enough to contribute as well, and
ianyh will get a nice return on his contributions.

------
oDot
Seeing this (and others like it), what's the benefit of having a tiling-only
WM over a floating WM with tiling capabilities?

~~~
ianyh
Well, Amethyst can float windows so I wouldn't call it a tiling-only WM, but
there's a lot of reasons I prefer it over floating window managers.

I'm really lazy and want software to deal with my windows for me. I used
floating window managers for a long time and found that I spent a lot of my
time arranging windows in the same patterns.

I also found that with floating window managers were just too limited for
things I wanted to do on a daily basis. Two come to mind off hand. I want to
be able to make a window temporarily bigger, but keeping the other windows on
the screen and sized appropriately and I want to be able to easily switch
which window is the "primary window." When I'm doing web development without
external screens I find it very help to have an editor and a browser window
open at the same time. One of them takes up about 80% of the screen and the
other takes up about 20% of the screen, but I switch which is which pretty
often. Make the editor take up most of the screen, make some changes loosely
referencing things in the browser window, make the browser window take up most
of the screen and see effects loosely referencing the code in the editor. And
sometimes I've also got a Hulu or Netflix window open taking 20% of the width
and 50% of the height. The complexity of making that work with a floating
window manager is just too much compared to how easy it is for a tiling window
manager.

I also just like being able to see everything on my screen at the same time.

------
hugg
Looks really weird with the window shadows though.

~~~
jeromenerf
Yep, I like adding some space between windows.

I proposed something like that for spectale some weeks ago. Got refused.
[https://github.com/eczarny/spectacle/issues/290](https://github.com/eczarny/spectacle/issues/290)

I mostly use apps in fullscreen and sometimes need to see 3 /3 apps at the
same time, then switch to fullscreen, then back to tiled mode again...

Small aesthetic gaps around windows may not be such a waste of screen estate.

~~~
ianyh
Window spacing is actually in the works for Amethyst. It just has some issues
because some windows just don't size exactly. Terminal windows, for example,
only size in increments of cursor size, so you're almost always a bit smaller
or a bit larger than you want, which makes the spacing in between windows look
weird.

~~~
jeromenerf
I noticed that with or without my spectacle patch.

I tend to prefer uneven gaps than no gaps though, considering how unpleasant
overlapping drop shadows looks like.

------
salas106
Use it also. Cool tiling manager.

------
anoxic
Use this every day. Works great.

------
gngrwzrd
it's ok, I prefer to be able to set windows where I want them and assign
keyboard shortcuts. I was the original author of Breeze, now autumn apps has
it available -
[http://autumnapps.com/breeze/index.html](http://autumnapps.com/breeze/index.html)

------
cheshire137
Divvy is sufficient for me.

