hs: add modules/window.lua stubs
This commit is contained in:
parent
25626ec072
commit
daa614ea43
|
@ -1,2 +1,114 @@
|
||||||
-- TODO: Window management library
|
-- TODO: Window management library
|
||||||
|
|
||||||
|
local window = {
|
||||||
|
direction = {
|
||||||
|
up = 1,
|
||||||
|
down = 2,
|
||||||
|
left = 4,
|
||||||
|
right = 8
|
||||||
|
},
|
||||||
|
|
||||||
|
move = function (x, y, w, h)
|
||||||
|
end,
|
||||||
|
|
||||||
|
slide = function (direction, amount)
|
||||||
|
end,
|
||||||
|
|
||||||
|
resizeIn = function (direction, amount)
|
||||||
|
end,
|
||||||
|
|
||||||
|
resizeOut = function (direction, amount)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
local modes = {
|
||||||
|
position = hs.hotkey.modal.new('cmd-ctrl', 'up'),
|
||||||
|
resizeTL = hs.hotkey.modal.new('cmd-ctrl', 'left'),
|
||||||
|
resizeBR = hs.hotkey.modal.new('cmd-ctrl', 'right'),
|
||||||
|
}
|
||||||
|
local currentMode = nil
|
||||||
|
|
||||||
|
-- Screen overlay
|
||||||
|
local function initOverlay(width, height)
|
||||||
|
local f = hs.screen.primaryScreen():frame()
|
||||||
|
return hs.drawing.rectangle(hs.geometry(
|
||||||
|
(f.w / 2) - (width / 2),
|
||||||
|
(f.h / 2) - (height / 2),
|
||||||
|
width, height))
|
||||||
|
:setAlpha(0.65)
|
||||||
|
:setFillColor(hs.drawing.color.black)
|
||||||
|
:bringToFront()
|
||||||
|
end
|
||||||
|
local overlay = initOverlay(300, 400)
|
||||||
|
|
||||||
|
--
|
||||||
|
for key, modal in pairs(modes) do
|
||||||
|
modal:bind('', 'escape', function() modal:exit() end)
|
||||||
|
|
||||||
|
modal.entered = function(self)
|
||||||
|
for k, m in pairs(modes) do
|
||||||
|
if k ~= key then m:exit() end
|
||||||
|
end
|
||||||
|
currentMode = key
|
||||||
|
overlay:show()
|
||||||
|
end
|
||||||
|
modal.exited = function(self)
|
||||||
|
if currentMode == key then
|
||||||
|
currentMode = nil
|
||||||
|
overlay:hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local step = 10
|
||||||
|
local bigstep = 100
|
||||||
|
|
||||||
|
modes.position
|
||||||
|
:bind('cmd', 'up', function() window.slide(window.direction.up, true) end)
|
||||||
|
:bind('cmd', 'down', function() window.slide(window.direction.down, true) end)
|
||||||
|
:bind('cmd', 'left', function() window.slide(window.direction.left, true) end)
|
||||||
|
:bind('cmd', 'right', function() window.slide(window.direction.right, true) end)
|
||||||
|
|
||||||
|
:bind('shift', 'up', function() window.slide(window.direction.up, step) end)
|
||||||
|
:bind('shift', 'down', function() window.slide(window.direction.down, step) end)
|
||||||
|
:bind('shift', 'left', function() window.slide(window.direction.left, step) end)
|
||||||
|
:bind('shift', 'right', function() window.slide(window.direction.right, step) end)
|
||||||
|
|
||||||
|
:bind('alt', 'up', function() window.slide(window.direction.up, bigstep) end)
|
||||||
|
:bind('alt', 'down', function() window.slide(window.direction.down, bigstep) end)
|
||||||
|
:bind('alt', 'left', function() window.slide(window.direction.left, bigstep) end)
|
||||||
|
:bind('alt', 'right', function() window.slide(window.direction.right, bigstep) end)
|
||||||
|
|
||||||
|
modes.resizeTL
|
||||||
|
:bind('cmd', 'up', function() window.resizeOut(window.direction.up, true) end)
|
||||||
|
:bind('cmd', 'down', function() window.resizeIn(window.direction.down, true) end)
|
||||||
|
:bind('cmd', 'left', function() window.resizeOut(window.direction.left, true) end)
|
||||||
|
:bind('cmd', 'right', function() window.resizeIn(window.direction.right, true) end)
|
||||||
|
|
||||||
|
:bind('shift', 'up', function() window.resizeOut(window.direction.up, step) end)
|
||||||
|
:bind('shift', 'down', function() window.resizeIn(window.direction.down, step) end)
|
||||||
|
:bind('shift', 'left', function() window.resizeOut(window.direction.left, step) end)
|
||||||
|
:bind('shift', 'right', function() window.resizeIn(window.direction.right, step) end)
|
||||||
|
|
||||||
|
:bind('alt', 'up', function() window.resizeOut(window.direction.up, bigstep) end)
|
||||||
|
:bind('alt', 'down', function() window.resizeIn(window.direction.down, bigstep) end)
|
||||||
|
:bind('alt', 'left', function() window.resizeOut(window.direction.left, bigstep) end)
|
||||||
|
:bind('alt', 'right', function() window.resizeIn(window.direction.right, bigstep) end)
|
||||||
|
|
||||||
|
modes.resizeBR
|
||||||
|
:bind('cmd', 'up', function() window.resizeIn(window.direction.up, true) end)
|
||||||
|
:bind('cmd', 'down', function() window.resizeOut(window.direction.down, true) end)
|
||||||
|
:bind('cmd', 'left', function() window.resizeIn(window.direction.left, true) end)
|
||||||
|
:bind('cmd', 'right', function() window.resizeOut(window.direction.right, true) end)
|
||||||
|
|
||||||
|
:bind('shift', 'up', function() window.resizeIn(window.direction.up, step) end)
|
||||||
|
:bind('shift', 'down', function() window.resizeOut(window.direction.down, step) end)
|
||||||
|
:bind('shift', 'left', function() window.resizeIn(window.direction.left, step) end)
|
||||||
|
:bind('shift', 'right', function() window.resizeOut(window.direction.right, step) end)
|
||||||
|
|
||||||
|
:bind('alt', 'up', function() window.resizeIn(window.direction.up, bigstep) end)
|
||||||
|
:bind('alt', 'down', function() window.resizeOut(window.direction.down, bigstep) end)
|
||||||
|
:bind('alt', 'left', function() window.resizeIn(window.direction.left, bigstep) end)
|
||||||
|
:bind('alt', 'right', function() window.resizeOut(window.direction.right, bigstep) end)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue