From 9738c3db7682e67cdeb146753be1a5ffc33d20d5 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Wed, 19 Jun 2019 23:17:10 +0200 Subject: init: Deactivate Terminal tab switching hotkeys outside of Terminal The bindings I created to switch tabs in Terminal shadowed shortcuts in all other applications, preventing them from performing their normal function. To get the bindings only in Terminal, add an application watcher that enables and disables them when Terminal is activated and deactivated. --- init.lua | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index aa1d934..c61046d 100644 --- a/init.lua +++ b/init.lua @@ -27,8 +27,12 @@ spoon.WindowMode:bindHotkeys({ mode = {{'ctrl', 'option'}, 'w'} }) -- Shortcuts to focus tabs in Terminal terminal_app = hs.application.applicationsForBundleID('com.apple.Terminal')[1] +terminal_tab_hotkeys = {} + for i=0,9 do - hs.hotkey.bind({"cmd", "alt"}, tostring(i), function() + local key = tostring(i) + + terminal_tab_hotkeys[i] = hs.hotkey.bind({"cmd", "alt"}, key, function() if terminal_app:isFrontmost() then local tab_index = i if i == 0 then @@ -40,6 +44,30 @@ for i=0,9 do end) end +function terminal_tab_hotkeys:enable() + for _, v in pairs(terminal_tab_hotkeys) do + v:enable() + end +end + +function terminal_tab_hotkeys:disable() + for _, v in pairs(terminal_tab_hotkeys) do + v:disable() + end +end + +application_watcher = hs.application.watcher.new(function(app_name, event_type, app) + if app ~= nil and app_name == 'Terminal' then + if event_type == hs.application.watcher.activated then + terminal_tab_hotkeys:enable() + elseif event_type == hs.application.watcher.deactivated then + terminal_tab_hotkeys:disable() + end + end +end) + +application_watcher:start() + -- Maximise window height hs.hotkey.bind({'ctrl', 'alt'}, 'z', function() -- cgit v1.2.3