Hammerspoon / hammerspoon

Staggeringly powerful macOS desktop automation with Lua
http://www.hammerspoon.org
MIT License
11.86k stars 578 forks source link

Tiling window management like Amethyst #2543

Open josephholsten opened 3 years ago

josephholsten commented 3 years ago

So last week I discovered Amethyst and it's almost everything I want from a tiling window manager on a mac, except that it's not extendable like I've grown to expect with years of hammerspoon.

So it looks like I have to learn how exactly it's doing its thing and port it over. I should mention that I really never got my config much further than what I put in the getting started guide.

I think the best place would be to start with the "tall" layout with the following functions:

Anyone got any tips on where I should start reading in hs to grok what I'll need to know? Anything outside of the core (rocks, spoons) that I should really lean on? Ultimately, I'd like to add a chapter to the GSG that lets anyone come out the other side with something close to dwm/xmonad/awesome/amethyst.

josephholsten commented 3 years ago

ok, before I do that, I'm just going to start a module that does things as naively as possible and just exposes the keybindings. That way I can start shifting back and forth every few days and improve things iteratively.

jwhitley commented 3 years ago

I think this is a great idea. I’ve personally been using Moom for ages, where my usage model is “snap windows into slots named by keyboard shortcuts”. There’s a whole cottage industry of Mac window management helper apps, each of which has a few good ideas. I’d love to see Hammerspoon grow two things 1) a core library which eventually gains all the best “atoms” of window management, and 2) user accessible out-of-box experience(s) so that it’s not rocket science to get up and running with great window management features.

Example one: My terminal-centric setup has long used tmux+vim so that Ctrl+{H,J,K,L} move panes seamlessly within and between vim and tmux. I’d love to extend this to all Mac windows, so that I could navigate focus at the OS level as well. As an easy start, I’d take separate OS vs terminal level shortcuts, with a goal of integrating them seamlessly at some point. This would be a fun combination with Amethyst like tiling features.

Example two: I use an app called Flexiglass for one feature: <MODIFIER>+<two-finger drag> to move the window under the cursor, from anywhere in that window’s bounds, whether or not it’s topmost, without clicking. For me, it’s been a game-changing gesture. But the app’s other features are entirely redundant with other tools (e.g. Moom) I already use. This is another feature I’ve been thinking about migrating to Hammerspoon, and would represent another kind of window management “atom”.

josephholsten commented 3 years ago

One thing I was reminded of while researching awesome: https://github.com/awesomeWM/awesome/blob/master/awesomerc.lua isn't just an empty file with binding overrides. It's a bit overwhelming, but I think that it really encourages users to dig in and make it their own.

It makes me think that we really should be shipping with at least some basic app and window management bindings (MiroWindowsManager.spoon seems like a reasonable default scope, or generally mirroring the feature set of Spectacle.app/Rectangle.app). I <3 tiling, but I think providing reasonable defaults and a way to progressively add more awesomeness would be best.

bviefhues commented 3 years ago

Leaving this here for reference: hhtwm

AtomicNess123 commented 3 years ago

Any ready-made spoon for window tiling yet?