| ▲ | zdw 17 hours ago |
| I fake a tiling window manager on Mac with Hammerspoon, resizing to fit in specific corners/sizes: -- resize based on ratios
function ratioResize(xr, yr, wr, hr)
return function ()
local win = hs.window.focusedWindow()
win:moveToUnit({x=xr,y=yr,w=wr,h=hr})
end
end
-- 4 corners, different sizes
hs.hotkey.bind({"cmd", "ctrl"}, "w", ratioResize(0, 0, 2/5, 2/3))
hs.hotkey.bind({"cmd", "ctrl"}, "e", ratioResize(2/5, 0, 3/5, 2/3))
hs.hotkey.bind({"cmd", "ctrl"}, "s", ratioResize(0, 2/3, 2/5, 1/3))
hs.hotkey.bind({"cmd", "ctrl"}, "d", ratioResize(2/5, 2/3, 3/5, 1/3))
And to throw windows to other monitors: -- send to next screen
hs.hotkey.bind({"cmd", "ctrl"}, ";", function()
local win = hs.window.focusedWindow()
local screen = win:screen()
local next_screen = screen:next()
win:moveToScreen(next_screen)
end)
|
|
| ▲ | comboy 17 hours ago | parent | next [-] |
| I highly recommend Aerospace[1], went through a few approaches, I cared about not completely compromising security either, it works really well if you come from something like i3 1. https://github.com/nikitabobko/AeroSpace |
| |
| ▲ | idle_zealot 15 hours ago | parent [-] | | Seconding this. I find MacOS unusable without it. I'll ask here because websearch is failing me: is there a way to fix the focus stealing that happens when you have multiple windows of an application on different displays? Specifically, say workspace 1 and 2 are on monitor Left, while 3 and 4 are on Right. Application A has a window on workspace 1, B has one window on 2 and another on 3, and C has a window on 4. Workspace 1 is active on display Left, workspace 4 is active on Right. If I switch to workspace 3 the following happens: - the switch goes through, Left displays workspace 1, right displays 3 (desired state) - Application B is focused, presumably because its window on 3 becomes active (also desired) - Display Left switches to display workspace 2, presumably because it contains a window belonging to the newly focused application B? (I don't want this) - the window of application B on workspace 2 steals focus from the one on workspace 3 (???) | | |
| ▲ | airstrike 15 hours ago | parent | next [-] | | Thirding the recommendation, and I also have this same issue. It's quite frustrating—but still better than no Aerospace! | |
| ▲ | JSR_FDED 15 hours ago | parent | prev [-] | | So what you’re saying is: Charlie's paternal grandfather Reginald married twice—first to Mildred, mother of Charlie's father Arthur and his siblings Beatrice (a nun with spiritual godchildren) and Cecil (whose widow Dorothy married Charlie's maternal uncle Edward). What is the name of Charlie's goddaughter? |
|
|
|
| ▲ | jeberle 17 hours ago | parent | prev | next [-] |
| I use it similarly, but I add spots for side x side as well as left, center, right. I only use Hammerspoon for this and a couple tiny things, but it's completely worth it for this alone. Use math to specify window sizes & location. Insanity. local mode = hs.screen.primaryScreen():currentMode()
local mods = {"ctrl", "alt", "cmd"} -- mash those keys
-- regular app windows
do
local w = 1094 -- no clip on GitHub, HN
local h = 1122 -- tallish
local x_1 = 0 -- left edge
local x_2 = math.max(0, (mode.w - w - w) / 2) -- left middle
local x_3 = (mode.w - w) / 2 -- middle
local x_4 = math.min(mode.w - w, x_2 + w + 1) -- right middle
local x_5 = mode.w - w -- right edge
local y = 23 -- top of screen below menu bar
hs.hotkey.bind(mods, "2", function() move_win( 0, y, mode.w, mode.h) end) -- max
hs.hotkey.bind(mods, "3", function() move_win(x_1, y, w, h) end)
hs.hotkey.bind(mods, "4", function() move_win(x_2, y, w, h) end)
hs.hotkey.bind(mods, "5", function() move_win(x_3, y, w, h) end)
hs.hotkey.bind(mods, "6", function() move_win(x_4, y, w, h) end)
hs.hotkey.bind(mods, "7", function() move_win(x_5, y, w, h) end)
end
function move_win(x, y, w, h)
hs.window.focusedWindow():setFrame(hs.geometry.rect(x, y, w, h))
end
|
|
| ▲ | ackfoobar 14 hours ago | parent | prev | next [-] |
| https://github.com/peterklijn/hammerspoon-shiftit I use ShiftIt (a lovely project, but dead) reimplemented in Hammerspoon. It is very comprehensive. |
|
| ▲ | mortar 10 hours ago | parent | prev | next [-] |
| I do this too, really happy with my setup - I use hyper+arrow keys to move windows around a monitor (split in thirds on 40”+ or halves on the built-in screen), or jump to another monitor, and hyper+enter to fullscreen. When you push against an edge in full screen it reduces the window size in stages, it all feels natural. |
|
| ▲ | apazzolini 16 hours ago | parent | prev | next [-] |
| I like the miro windows manager plugin: https://github.com/miromannino/miro-windows-manager It's nice to be able to iterate through the halves/thirds configurations for different cases. |
|
| ▲ | piskov 16 hours ago | parent | prev [-] |
| Moom is really the best |