aboutsummaryrefslogtreecommitdiffstats
path: root/init.lua
blob: 64492bbe09c6cf489ff49cac23e88db270e98ac4 (plain)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
--- === WindowMode ===
---
--- Adds a hotkey mode for manipulating windows.
---
--- Upon activating the mode, the following shortcuts are available:
---
--- h: Move window left 100 units
--- j: Move window down 100 units
--- k: Move window up 100 units
--- l: Move window right 100 units
---
--- Shift-h: Move window left 20 units
--- Shift-j: Move window down 20 units
--- Shift-k: Move window up 20 units
--- Shift-l: Move window right 20 units
---
--- Option-h: Move window left 5 units
--- Option-j: Move window down 5 units
--- Option-k: Move window up 5 units
--- Option-l: Move window right 5 units
---
--- i: Move window to top
---
--- [: Move window left one screen
--- ]: Move window right one screen
---
--- e: Reduce window height 100 units
--- s: Reduce window width 100 units
--- d: Increase window height 100 units
--- f: Increase window width 100 units
---
--- Shift-e: Reduce window height 20 units
--- Shift-s: Reduce window width 20 units
--- Shift-d: Increase window height 20 units
--- Shift-f: Increase window width 20 units
---
--- Option-e: Reduce window height 5 units
--- Option-s: Reduce window width 5 units
--- Option-d: Increase window height 5 units
--- Option-f: Increase window width 5 units
---
--- c: Increase window height to bottom

-- Copyright (c) 2019  Teddy Wing
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <https://www.gnu.org/licenses/>.


local obj = {}

-- Metadata
obj.name = 'WindowMode'
obj.version = '0.0.1'
obj.author = 'Teddy Wing'
obj.license = 'GNU GPLv3+ (https://www.gnu.org/licenses/gpl-3.0.txt)'

-- Internal function used to find our location, so we know where to load files from
local function script_path()
	local str = debug.getinfo(2, "S").source:sub(2)
	return str:match("(.*/)")
end
obj.spoonPath = script_path()

local window = dofile(obj.spoonPath .. '/window.lua')

--- WindowMode:bindModal(mapping)
--- Method
--- Bind keys for WindowMode
---
--- Parameters:
---  * mapping – A table containing hotkey modifier/key details for the following items:
---   * mode – Activate and deactivate window mode
function obj:bindHotkeys(keys)
	local mode = keys['mode']
	window:bindModal(mode[1], mode[2])
end

return obj