diff --git a/hammerspoon/apps/finder.lua b/hammerspoon/apps/finder.lua index 70c8e885..c148d5cc 100644 --- a/hammerspoon/apps/finder.lua +++ b/hammerspoon/apps/finder.lua @@ -1,5 +1,5 @@ App.new("Finder") - .onActivate(function(self, app) - app:selectMenuItem({"Window", "Bring All to Front"}) - end) + .onActivate(function(self, app) + app:selectMenuItem({"Window", "Bring All to Front"}) + end) diff --git a/hammerspoon/bindings.lua b/hammerspoon/bindings.lua index d4c71828..b622a260 100644 --- a/hammerspoon/bindings.lua +++ b/hammerspoon/bindings.lua @@ -14,19 +14,19 @@ function commandMode:exited() overlay:hide() end -- Command mode keybindings hs.fnutils.each({ - { '', 'escape', util.call(commandMode, 'exit') }, - { '', 'r', util.reload }, - { 'shift', 'r', function() hs.openConsole(); commandMode:exit() end }, + { '', 'escape', util.call(commandMode, 'exit') }, + { '', 'r', util.reload }, + { 'shift', 'r', function() hs.openConsole(); commandMode:exit() end }, }, function (item) - commandMode:bind(item[1], item[2], item[3]) + commandMode:bind(item[1], item[2], item[3]) end) -- Global keybindings hs.fnutils.each({ - -- { {'cmd', 'ctrl'}, 'up', function() print("UP"); modes.position:enter() end }, - -- { {'cmd', 'ctrl'}, 'left', function() print("LEFT"); resizeBRMode:enter() end }, - -- { {'cmd', 'ctrl'}, 'right', function() print("RIGHT"); resizeTLMode:enter() end }, + -- { {'cmd', 'ctrl'}, 'up', function() print("UP"); modes.position:enter() end }, + -- { {'cmd', 'ctrl'}, 'left', function() print("LEFT"); resizeBRMode:enter() end }, + -- { {'cmd', 'ctrl'}, 'right', function() print("RIGHT"); resizeTLMode:enter() end }, }, function (item) - hs.hotkey.bind(item[1], item[2], item[3]) + hs.hotkey.bind(item[1], item[2], item[3]) end) diff --git a/hammerspoon/modules/apps.lua b/hammerspoon/modules/apps.lua index 64147485..693daef3 100644 --- a/hammerspoon/modules/apps.lua +++ b/hammerspoon/modules/apps.lua @@ -3,123 +3,123 @@ local apps = {} -- App-specific code, runs when you launch or switch to another app App = {} App.new = function(name) - local self = {} - self.name = name - self.bindings = {} + local self = {} + self.name = name + self.bindings = {} - self.onInitFn = nil - self.onActivateFn = nil - self.onDeactivateFn = nil - self.onLaunchedFn = nil - self.onTerminatedFn = nil + self.onInitFn = nil + self.onActivateFn = nil + self.onDeactivateFn = nil + self.onLaunchedFn = nil + self.onTerminatedFn = nil - self.bind = function(mods, key, action, predicate) - table.insert(self.bindings, - {key = hs.hotkey.new(mods, key, action), predicate = predicate}) - return self - end - - self.onInit = function(fn) - fn(self) - return self - end - self.onActivate = function(fn) - self.onActivateFn = fn - return self - end - self.onDeactivate = function(fn) - self.onDeactivateFn = fn - return self - end - self.onLaunched = function(fn) - self.onLaunchedFn = fn - return self - end - self.onTerminated = function(fn) - self.onTerminatedFn = fn - return self - end - - self.activate = function(appObject) - if type(self.onActivateFn) == 'function' then - self:onActivateFn(appObject) - end - self:enableBinds() - end - self.deactivate = function(appObject) - if type(self.onDeactivateFn) == 'function' then - self:onDeactivateFn(appObject) - end - self:disableBinds() - end - self.launch = function(appObject) - if type(self.onLaunchedFn) == 'function' then - self:onLaunchedFn(appObject) - end - end - self.terminate = function(appObject) - if type(self.onTerminatedFn) == 'function' then - self:onTerminatedFn(appObject) - end - self:clearBinds() - end - - self.enableBinds = function(self) - hs.fnutils.each(self.bindings, function(b) - if b.predicate and not b.predicate() then - b.key:disable() - else - b.key:enable() - end - end) - end - - self.disableBinds = function(self) - hs.fnutils.each(self.bindings, function(b) b.key:disable() end) - end - - self.clearBinds = function(self) - hs.fnutils.each(self.bindings, function(b) b.key:delete() end) - self.bindings = {} - end - - apps[name] = self + self.bind = function(mods, key, action, predicate) + table.insert(self.bindings, + {key = hs.hotkey.new(mods, key, action), predicate = predicate}) return self + end + + self.onInit = function(fn) + fn(self) + return self + end + self.onActivate = function(fn) + self.onActivateFn = fn + return self + end + self.onDeactivate = function(fn) + self.onDeactivateFn = fn + return self + end + self.onLaunched = function(fn) + self.onLaunchedFn = fn + return self + end + self.onTerminated = function(fn) + self.onTerminatedFn = fn + return self + end + + self.activate = function(appObject) + if type(self.onActivateFn) == 'function' then + self:onActivateFn(appObject) + end + self:enableBinds() + end + self.deactivate = function(appObject) + if type(self.onDeactivateFn) == 'function' then + self:onDeactivateFn(appObject) + end + self:disableBinds() + end + self.launch = function(appObject) + if type(self.onLaunchedFn) == 'function' then + self:onLaunchedFn(appObject) + end + end + self.terminate = function(appObject) + if type(self.onTerminatedFn) == 'function' then + self:onTerminatedFn(appObject) + end + self:clearBinds() + end + + self.enableBinds = function(self) + hs.fnutils.each(self.bindings, function(b) + if b.predicate and not b.predicate() then + b.key:disable() + else + b.key:enable() + end + end) + end + + self.disableBinds = function(self) + hs.fnutils.each(self.bindings, function(b) b.key:disable() end) + end + + self.clearBinds = function(self) + hs.fnutils.each(self.bindings, function(b) b.key:delete() end) + self.bindings = {} + end + + apps[name] = self + return self end function invoke(keys, predicate) - return function () - if predicate and not predicate() then - return - end - if type(keys) == 'table' then - hs.fnutils.each(keys, function (key) - if type(key) ~= 'table' then - key = {{}, key} - end - hs.eventtap.keyStroke(key[1], key[2]) - end) - elseif type(keys) == 'string' then - os.execute(keys) - elseif type(keys) == 'function' then - return keys() - end + return function () + if predicate and not predicate() then + return end + if type(keys) == 'table' then + hs.fnutils.each(keys, function (key) + if type(key) ~= 'table' then + key = {{}, key} + end + hs.eventtap.keyStroke(key[1], key[2]) + end) + elseif type(keys) == 'string' then + os.execute(keys) + elseif type(keys) == 'function' then + return keys() + end + end end -- function appGlobalWatcher(appName, eventType, appObject) - if apps[appName] then - if (eventType == hs.application.watcher.activated) then - apps[appName].activate(appObject) - elseif (eventType == hs.application.watcher.deactivated) then - apps[appName].deactivate(appObject) - elseif (eventType == hs.application.watcher.launched) then - apps[appName].launch(appObject) - elseif (eventType == hs.application.watcher.terminated) then - apps[appName].terminate(appObject) - end + if apps[appName] then + if (eventType == hs.application.watcher.activated) then + apps[appName].activate(appObject) + elseif (eventType == hs.application.watcher.deactivated) then + apps[appName].deactivate(appObject) + elseif (eventType == hs.application.watcher.launched) then + apps[appName].launch(appObject) + elseif (eventType == hs.application.watcher.terminated) then + apps[appName].terminate(appObject) end + end end hs.application.watcher.new(appGlobalWatcher):start()