Toggle applications via global hotkeys in Hammerspoon

This commit is contained in:
2018-04-23 23:41:19 +01:00
parent 3f5ff6352d
commit a1f616e01e
2 changed files with 67 additions and 7 deletions

View File

@@ -0,0 +1,38 @@
-- luacheck: read_globals hs
local obj = {}
function obj:bind (mods, key, name, path)
hs.hotkey.bind(mods, key, self:toggleFn(name, path))
end
function obj:toggleFn (name, path)
return function ()
self:toggle(name, path)
end
end
function obj:toggle (name, path)
local app = self.findRunningApp(name, path)
if app == nil then
return hs.application.open(path or name)
end
if app == hs.application.frontmostApplication() then
return app:hide()
end
return app:activate()
end
function obj.findRunningApp (name, path)
for _, app in ipairs(hs.application.runningApplications()) do
if app:name() == name and (path == nil or path == app:path()) then
return app
end
end
end
-- the end
return obj

View File

@@ -15,12 +15,6 @@ hs.menuIcon(true)
hs.console.alpha(0.90)
hs.console.behaviorAsLabels { 'moveToActiveSpace' }
--------------------------------------------------------------------------------
-- Require modules
--------------------------------------------------------------------------------
require('window_management'):init()
--------------------------------------------------------------------------------
-- Load Spoons
--------------------------------------------------------------------------------
@@ -34,6 +28,34 @@ hs.loadSpoon('HeadphoneAutoPause')
spoon.HeadphoneAutoPause.autoResume = false
spoon.HeadphoneAutoPause:start()
--------------------------------------------------------------------------------
-- Application toggles
--------------------------------------------------------------------------------
-- the end
local apptoggle = require('app_toggle')
apptoggle:bind({'cmd', 'alt', 'ctrl'}, 'A', 'Activity Monitor')
apptoggle:bind({'cmd', 'ctrl'}, '4', 'Skitch')
apptoggle:bind({'cmd', 'ctrl'}, 'A', 'YakYak')
apptoggle:bind({'cmd', 'ctrl'}, 'B', 'Postico')
apptoggle:bind({'cmd', 'ctrl'}, 'C', 'Medis')
apptoggle:bind({'cmd', 'ctrl'}, 'D', 'Wavebox')
apptoggle:bind({'cmd', 'ctrl'}, 'E', 'Emacs')
apptoggle:bind({'cmd', 'ctrl'}, 'F', 'Messenger')
apptoggle:bind({'cmd', 'ctrl'}, 'G', 'Stride')
apptoggle:bind({'cmd', 'ctrl'}, 'S', 'Skype')
apptoggle:bind({'cmd', 'ctrl'}, 'T', 'IRCCloud')
apptoggle:bind({'cmd', 'ctrl'}, 'W', 'WhatsApp')
apptoggle:bind({'cmd', 'ctrl'}, 'X', 'Calendar')
apptoggle:bind({'cmd', 'ctrl'}, 'Z', 'Slack')
--------------------------------------------------------------------------------
-- Window management
--------------------------------------------------------------------------------
require('window_management'):init()
--------------------------------------------------------------------------------
-- The End
--------------------------------------------------------------------------------
hs.alert.show('Hammerspoon loaded')