hs: add modules/window.lua stubs
This commit is contained in:
parent
25626ec072
commit
daa614ea43
|
@ -1,2 +1,114 @@
|
|||
-- 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