Amethyst – A tiling window manager for OS X
ianyh.com
ianyh.com
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://mizage.com/divvy/ http://ianyh.com/amethyst/ http://spectacleapp.com/ https://github.com/fjolnir/xnomad https://itunes.apple.com/us/app/bettersnaptool/id417375580?m.... https://github.com/sdegutis/mjolnir
[0]: https://botbot.me/freenode/hammerspoon/2014-11-25/?msg=26223...
The mjolnir community does have an actively developed fork though called hammerspoon. http://www.hammerspoon.org/
I would recommend either of them, but hammerspoon has a smoother onboarding process.
We'd love to get feedback about Hammerspoon, or suggestions for plugins we could add.
Feel free to drop by #hammerspoon on Freenode, or file issues at https://github.com/Hammerspoon/hammerspoon
I just checked https://github.com/sdegutis/mjolnir, and I don't see any mention of this, and the last commit was from November 15.
http://most-advantageous.com/optimal-layout/
but, I haven't spent much time with Mjolnir.
Do you know if it's possible to have apps start in fullscreen (the real one, as in Yosemite) by default? I would like that as default and only tile on some spaces.
It would be awesome if I could cycle through "spaces" that laid the same code window out next to multiple different things. Like maybe 1 is code | browser and 2 is terminal | code.
Possible?
"tags" are an extension of "workspaces". But rather than being a one-to-one-to-one relation (one window is in one workspace and you view one workspace at a time), tags are many-to-many-to-many. A window can be present in many tags, and you can view more than one tag at a time.
Most of the time, I use tags just like "normal" workspaces.
The GPs use case may be solved in two ways using tags, either by viewing two workspaces at the same time (the other one is code tag, and the other one is switched between docs, browser, tests) or by having the code editor present in several tags.
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.
There's a long thread on github about this (https://github.com/ianyh/Amethyst/issues/254). I'd love to know more about your set up. I've been trying for weeks to make it work for people, but Apple's APIs for this are kind of crap. And by crap I mean non-existent. I've started using private APIs to do things like figuring out whether or not the current desktop is a fullscreen app.
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"
I, maybe, have one or two apps sharing a single workspace. Most apps are in full screen.
There are occasions when tiling features come in handy, however (such as when you want to see more than one window at the same time).
[1] - http://i3wm.org/
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.
I've been told focus follows mouse was impossible on OS X.
"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-...
[2] - http://superuser.com/questions/27306/focus-follows-mouse-or-...
The global menu bar is indeed a problem, but it can be alleviated by adding a small delay before changing focus (so fast mouse movements to reach the menu won't change focus).
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.
The former just means the cursor moves along with window focus. So if you cycle to the next window clockwise, the cursor moves to the center of that window. Or if you focus a window on another display, the cursor moves to the center of that window. This makes it really convenient to do things like navigating between spaces on multiple displays as the display with the cursor is the one who responds to space switching.
The latter is probably what you're thinking of. You move the cursor and the window underneath it comes into focus. It's kind of experimental and still seems to be fairly buggy, though.
The "impossible" thing is that in OS X there is no distinction between the window that is focused and the window that is the keyboard responder, so the classic idea of focus-follows-mouse doesn't work. I haven't found the distinction personally very meaningful.
At the moment, I'm using Spectacle for OSX. 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.
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.
(In preferences look at "Action Settings" in the advanced tab).
http://www.irradiatedsoftware.com/cinch/
So far I've never seen a tool which glued one window to the other though.
http://www.irradiatedsoftware.com/sizeup/
It's a basic snap-to-grid thing. You have commands to send a window to any of the 4 quarters, 4 halves, or full screen, and to send the window to another workspace.
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.
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.
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)
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.
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.
I proposed something like that for spectale some weeks ago. Got refused. 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.
I tend to prefer uneven gaps than no gaps though, considering how unpleasant overlapping drop shadows looks like.