Readit News logoReadit News
sergiotapia · 11 years ago
If you're looking for a window manager for OSX without having to actually configure anything, you can try using Spectacle: http://spectacleapp.com/

For instance on my imac 27'' I have Option+Command+Left|Right keys mapped to side (similar to windows 7.

And I can also have 4 windows open at once using Shift+Option+Command+Up|Down|Left|Right to move them to the different corners. Works really well with less than 2 minutes of setting the hotkey on a simple GUI configuration window.

ansimionescu · 11 years ago
I'm a -big- huge fan of Spectacle, I've been using it for a long time now and couldn't imagine life on a Mac without it. There's worth noting that there's a plethora of similar apps out there:

http://alternativeto.net/software/spectacle/?platform=mac

_fs · 11 years ago
If you are already using Alfred, I'd suggest having a look at the new workflows available, in particular layout, which covers a lot of the features of spectacle.

For instance, typing 'layout left' in alfred will push the window the left side, topleft for the corner, etc.

jsmeaton · 11 years ago
Mind linking to the particular layout workflow you're talking about? Or is it now built in? I currently use spectacle, but would prefer to use Alfred.
superchink · 11 years ago
Might be a good idea sdegutis, to have sample configuration that replicates the setup from Spectacle, Moom, etc., similar to what you did with Zephyros (I think?).
sdegutis · 11 years ago
Ah not a bad idea, thanks! Will look into it.
pwelch · 11 years ago
Agreed! Another long time user of Spectacle.
Cthulhu_ · 11 years ago
I've been looking for this a while ago; all I could find were relatively expensive apps that didn't really work. Thanks <3
m_t · 11 years ago
I can't find the minimum OSX version on the Spectacle site or github. Do you have any idea which one it is?
chriskelley · 11 years ago
ShiftIt is extremely similar to Spectacle (I use both on different machines) and should be functional back to 10.6.

https://github.com/fikovnik/ShiftIt

gurkendoktor · 11 years ago
I haven't tried Spectacle, but I'm happily running Divvy and Cinch on my 10.5 PPC Mac. :)
Cowicide · 11 years ago
According to the info at MacUpdate, it's OS X 10.7 or later.

http://www.macupdate.com/app/mac/41147/spectacle

mikehotel · 11 years ago
Spectacle should work on 10.6+ according to it's Info.plist: <key>LSMinimumSystemVersion</key> <string>10.6</string>
sergiotapia · 11 years ago
Sorry I'm not sure either, I know it works with latest OSX and the one before that.
dpeck · 11 years ago
Its really nice, I wish it could do some auto-tiling, but all things considered it works quite well
RoryH · 11 years ago
Thanks!
colinramsay · 11 years ago
This looks great, but my favourite thing might be the Principles section:

  > Hydra must be stable. It should never crash
  > Hydra must be lightweight... never use more than 10 MB of memory
  > API should be completely transparent
  > API must not be bloated
I think these principles should be the standard to which we all hold our software. Looking forward to testing this out!

Edit to say: it would be really great to see some more complete code samples but I'm sure that'll come in time.

prof_hobart · 11 years ago
I'm not sure I fully agree. For example

> Hydra must be stable. It should never crash

It's clearly better to have an app that never crashes than an equivalent one that crashes all the time.

However, making sure that your app is 100% crash-free isn't a zero cost thing. It takes time and effort to (often, a lot of both) to get to a completely crash-free app, meaning that the app either costs more, takes longer, or has to compromise on features - or possibly all three. In some case, that trade off is clearly going to be worth it - I'd rather a self-driving car took 10 years longer to develop than have one that rebooted itself twice a day, but in others I'm fine living with the occasional crash if it means cheaper or more feature-rich applications.

sitkack · 11 years ago
For a window manager, crashing is kinda a pain depending how it restarts. Maybe another way to state the implicit goal would be

> Hydra must gracefully and rapidly restart should it crash w/o losing any user data.

And then maybe it could do this be serializing state into a sqlite or redis instance. We always to be careful of muddling the goal and the mechanism.

chc · 11 years ago
I don't think "Must never use more than 10 MB of memory" is a reasonable standard to hold all software to.
TD-Linux · 11 years ago
To put this in perspective, a full screen application running on a Retina display needs at least 40MB total for its front and back buffers.
kennywinker · 11 years ago
Nope, but I would venture to guess that most software would be improved by sticking to that.
sdegutis · 11 years ago
Can you give an example of the kinds of samples you would like to see, and where you would look for them? (I presume under the Examples section on the README page?) That will help me know what to put there.
colinramsay · 11 years ago
You have a link to your own config and some screenshots of it in action, maybe it would be good to pull out the relevant sections of your config so people can replicate what they see in the screenshots?
euank · 11 years ago
I do not like the "API should be completely transparent" and "API must not be bloated".

I personally think APIs exist to hide complexity. They should make sense, they should be usable, but they need not be transparent.

Let's have a rather contrived example. In SDL, you can call SDL_Init(). That does a lot of things, and what it does differs on windows, linux, and OSX. I absolutely don't want the more transparent API of SDL_Init_Windows_Video(), SDL_Init_Windows_Audio(), SDL_Init_Linux_Video() .... And so on. Realistically, for absolute transparency, you'd just do away with the API and write every line of code SDL currently hides (Reductio ad absurdum I know)

The entire point of having that one SDL_Init() call that's identical on all platforms, even though it does many opaque things underneath (and different things per platforms) is that it's easier to understand and use. The goal of an API is to be usable and useful, nothing else. Transparency can often get in the way of usability.

As for the "bloated" bit. Well, I'd rather be able to do too many things than too few. It's a great goal to have a purely orthogonal (no method may be accomplished with another combination of methods) API, but it should not be done at the expense of usability.

    > Nothing should be put into it except what's impossible or impractical to do in pure Lua, and what's extremely common and likely to be used in everyone's configs.
The entire quote makes it seem even more damning to me. Why would you cater to what's "likely to be used in everyone's configs"? That's another way of saying "Let's support only the least common denominator" which to me seems like a bad philosophy.

This philosophy would lead to twitter not having a friendship API because the only thing practically every api user does is login and (arguably) tweet, only a few deal with friendships or account settings. It would lead to linux not having a configuration option for running more than one physical CPU or hotswapping ram because the wide majority of people will never use these options.

I'm happy that the author of this software decided to make it simple and it seems to be working here, but in the majority of cases of API design, I'd much rather the API be usable, not transparent, and large, not minimalistic. I'd rather be able to call a method that does some common activity for me which I could technically do myself in a 1000 lines of code than not have such a method because it's "bloat".

geon · 11 years ago
You can't really compare a platform speciffic "window manager" to a multiplatform 3D/2D rendering api.
cheepin · 11 years ago
Hail Hydra!
Vanayad · 11 years ago
Came here for this. Didn't leave disappointed.
rossjudson · 11 years ago
"Bloat" is emotional, not factual. It's meaningless without well-justified examples and alternatives.
Walkman · 11 years ago
I tried a ton of window managers (Divvy [1], Spectacle [2], Alfred worflows, scripts) over the years, but the most advanced, most easy to use and fastest solution is Moom [3]. It's extremely flexible, configurable, have nice design and clever tricks. It has far more features that all of the above. I'm not searching the perfect window manager anymore.

[1]: https://mizage.com/divvy/

[2]: http://spectacleapp.com/

[3]: http://manytricks.com/moom/

saidajigumi · 11 years ago
I'll second the motion for Moom. Great app, but I'm really glad to see some viable OSS solutions in this space. Environment hacking FTW.

I'll also mention a feature I adore from FlexiGlass[1]: the ability to map <modifier>-<1/2/3 finger move> to move the window under the mouse. For example, I use <option>-<2 finger move> for this mapping. No mouse click & hold required, and the entire window is the "hit zone". FlexiGlass can also resize similarly, but I tend to just use my Moom bindings to snap windows where I want them.

I find this to be incredibly pleasant to use for window moves because it's a very immediate experience, more like arranging paper on your desk. Even better, the window being moved doesn't have to be in the frontmost application. This makes it even faster to move background windows. The usual window movement via titlebar or window snapping app requires the moved window be frontmost/focused, so there's a switching back and forth required. Between the giant, whole window, hit area and less focus switching, FlexiGlass' approach is a huge win IMO. I still feel a bit self-conscious about having this app installed for one feature, but it's really that good.

[1] http://nulana.com/flexiglass/

jdechko · 11 years ago
I started with the moom trial, but when it came time for me to make a purchase, I ended up going with BetterSnapTool. It might not be quite as flexible as Moom, but a) it fit my personal needs and b) it was less than half the price.
typicalbender · 11 years ago
I miss my days on Ubuntu with i3 tiling window manager. I currently use an app called Amethyst[1] but find it to be a bit buggy at times and just doesn't live up to i3 or awesome. I wonder if hydra can be used as a launch point to create a better tiling window manager for OSX. I'm not familiar with the APIs that OSX exposes, if any, to do things like window management but it would be awesome to see some more control over workspaces and not just the windows within a workspace.

[1] https://github.com/ianyh/Amethyst

peatmoss · 11 years ago
Amethyst is the first tiling window manager I've used for any substantial length of time. I made my desktop transition from NetBSD -> OSX before tiling window managers were really much used. Amethyst gets props from me in being the first that has worked intuitively and stabily such that I've actually stuck with it for any length of time.

As for Linux, I realize that I'm personally in a place where leaving OSX would cause me no grief whatsoever. I catalogued everything I run on my Mac these days, and was pleasantly surprised to find I have zero local commercial software that I depend on, or indeed any Mac-only software. Generally, when I've used recent Linux desktops, I've discovered that the experience is at least on par with my Mac, with the added bonus that Emacs doesn't have so many quirks.

Battery life on my MacBook Air is really the only thing keeping me from moving back. I have to wonder if there is any movement to achieve power management parity with OSX in Linux.

nextos · 11 years ago
I was in the same position and switched to Arch long ago. Power management in my MacBook Air 11 2013 is as good as in OS X, if not better. This sounds like a bold statement, but mind that it's almost 100% Intel hardware. Intel funded powertop, which is a utility that allows you to track and optimize software and hardware power usage.

Even Linus himself used this machine for quite long. He then moved on to a Chromebook Pixel. These days he seems to be using a Vaio.

sdegutis · 11 years ago
Having emacs-like keybindings by default in all native text fields and text boxes (including this one) is a huge plus for OS X. In Linux, I had to write everything in emacs and copy/paste it into the field in question. Fine for emails, not so great for address bars, impossible for dmenu, etc.
the_gipsy · 11 years ago
I installed Ubuntu with xmonad on my work mac after one terrible month with OSX's pathetic window manager/amethyst/hacks.
dschep · 11 years ago
I also miss awesome, and xnomad wasn't cutting it. Hopefully Amethyst is what I need.
nextos · 11 years ago
What is that you prefer from awesome?
platz · 11 years ago
i3 is great - currently solving my needs quite nicely.
tnorthcutt · 11 years ago
I've been using Slate[1] for a while which may be worth considering as an alternative. Hydra does look pretty slick, though!

[0] https://github.com/jigish/slate

enen · 11 years ago
Been using Slate as well but it's not maintained anymore. I wanted to switch to Phoenix - https://github.com/sdegutis/Phoenix/ which is from the same guy that this Hydra. I think the idea of Hydra was the rewrite it in Lua but I can't speak for him. Will definitely try it out asap!
sdegutis · 11 years ago
Hydra is indeed my successor to Phoenix. Phoenix and Zephyros (and AppGrid if you can find it) are deprecated in favor of Hydra. But I can't just delete those projects, as existing users may not want to port their configs to Lua. Oh how I wish I could though.
mrmch · 11 years ago
I'm another Slate user -- looks like Hydra is a spiritual successor... I'll give it a go.
holyjaw · 11 years ago
Ah I had no clue Slate wasn't actively maintained anymore. I just caught up with the new JS API. Damnit. Well, guess I'll look at Hydra now...
michaelx · 11 years ago
Second that. I’m still happy with Slate, but prefer an active developed solution.
Dirlewanger · 11 years ago
Another amazing OS X WM: Sizeup (https://www.irradiatedsoftware.com/sizeup/)

No config, all shortcuts bound to Ctrl + Option + Command + arrows and a few others. They have an unlimited free trial, but pay for it if you really use it.

Synergyse · 11 years ago
+1 for SizeUp, tried most of them and prefer this app.
kirklove · 11 years ago
+2. Can't live without it. I'm paralyzed on a machine without it (or Alfred)
mahmoudimus · 11 years ago
I use SizeUp, but I miss the extensibility of xmonad.
sdegutis · 11 years ago
Project Author here: Thanks everyone for making Hydra bypass Zephyros as my most starred project! (Especially considering Zephyros is deprecated in favor of Hydra, and I can't really delete Zephyros since people might still be using it.)
btown · 11 years ago
For the "closed-source-but-non-programming-power-user" alternative to this, I'm a huge advocate of BetterTouchTool (http://www.boastr.net/). You can easily bind window snaps to everything from keypresses, to four-finger-sweeps on the trackpad, to dragging window titlebars to the screen corners. Also it's so much fun to infuriate friends when they try to use my trackpad and it moves windows all over the place.
BozeWolf · 11 years ago
I Quickly had a look on all the window manager alternatives mentioned here. Currently I use flexiglass, but I use it for one reason only. It allows me to move windows like in linux.

When holding Mouse button 1 + alt anywhere in the window I can move it. I really like this feature, I never use the titlebar to move windows.

Do any of the alternatives (or hydra it self) allow me to do this? I'd like to try them out. See if it has advantages over flexiglass.

unspecified · 11 years ago
If BetterTouchTool doesn't let you do some custom key/mouse input, it's probably not possible. :-)

You can use keypress + mouse movement:

http://imgur.com/ZeV8grb

...or just with the mouse alone:

http://imgur.com/JNXYf1q

sdegutis · 11 years ago
The 1.1 milestone has plans for "mouse-moved" and "modifiers-changed" events that you can register for, which would let you create a feature very similar to this, where if you hold down option and move the mouse, it will move the window under the mouse with it. I'll file an issue to investigate if it's possible to register for "mouse-clicked" events and override them to be no-ops (so that you don't actually click into the window). That sounds like a fun feature :)
jmgao · 11 years ago
sikhnerd · 11 years ago
For me, the bigger idea to tiling wm, or these psuedo tiling wm is that I never have to use mouse to move/resize/shuffle windows. I too initially missed that feature when I first started using a tiling wm, but that quickly went away as soon as I had the keyboard shortcuts memorized.
sdegutis · 11 years ago
Oh nice! Custom swipes is an excellent idea, I am totally going to have to look into seeing if I can add that to the API.
mitchell209 · 11 years ago
I absolutely love BTT. I've setup my mouse buttons and trackpad gestures to do so many different things in my apps that I'd be lost without them.