About three years ago I switched OS from Windows to MacOS. One thing that surprised me was the MacOS lacks a built in feature for quick window positioning. On Windows you can use the Windows key (CMD on MacOS?) and the arrow keys to place the window quickly.
The first solution I found was the free and Open Source application “Spectacle”: https://www.spectacleapp.com/
It’s since been abandoned by the author but there’s the active fork “Rectangle”: https://rectangleapp.com/
It offers a whole bunch of shortcuts:
Personally I’m only interested in “Left Half”, “Right Half”, “Maximize”, and “Next Display”. Some of these shortcuts collide with IntelliJ default shortcuts so removing most of them helps.
Notably I only have two displays. The laptop and an external display. So there’s no difference between “Next Display” and “Previous Display” is there?
Nowadays I’ve moved over to Hammerspoon: https://www.hammerspoon.org/
It’s an automation tool for MacOS. You write your automation scripts in LUA (would have preferred javascript but OK).
I simply make use of the following for quick window positioning:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
local ctrlBind = function(key, fn) hs.hotkey.bind({"ctrl"}, key, fn, nil, fn) end -- FULL ctrlBind("w", function() local window = hs.window.focusedWindow() window:moveToUnit('[0,0,100,100]', 0) end) -- LEFT ctrlBind("s", function() local window = hs.window.focusedWindow() window:moveToUnit(hs.layout.left50, 0) end) -- RIGHT ctrlBind("d", function() local window = hs.window.focusedWindow() window:moveToUnit(hs.layout.right50, 0) end) -- NEXT ctrlBind("e", function() local window = hs.window.focusedWindow() local screen = window:screen() local nextScreen = screen:next() window:moveToScreen(nextScreen, 0) end) |
I also use the MacOS settings to make caps lock behave as the CTRL modifier key:
Hammerspoon may also be used for other neat automation stuff. So if you are already using Hammerspoon (or plan to use it), this approach mitigates installing one more application.
Leave A Comment