-- Hide Zoom's "share" windows so it doesn't come back on ESC keypress
local zoomWindow = nil
local originalFrame = nil
hs.hotkey.bind({"cmd", "ctrl", "alt"}, "H", function()
print("> trying to hide zoom")
if not zoomWindow then
print("> looking for window")
zoomWindow = hs.window.find("zoom share statusbar window")
end
if zoomWindow then
print("> found window")
if originalFrame then
print("> restoring")
zoomWindow:setFrame(originalFrame)
originalFrame = nil
zoomWindow = nil
else
print("> hiding")
originalFrame = zoomWindow:frame()
local screen = zoomWindow:screen()
local frame = zoomWindow:frame()
frame.x = screen:frame().w + 99000
frame.y = screen:frame().h + 99000
zoomWindow:setFrame(frame)
end
else
print("> window not found")
end
end)Hammerspoon
21–30 of 154 posts
Re: Hammerspoon
#22 local appHotkeys = {}
local function remapAppHotkey(appName, fromMods, fromKey, toMods, toKey, delay)
if not appHotkeys[appName] then
appHotkeys[appName] = {}
end
local hotkey = hs.hotkey.new(fromMods, fromKey, function()
hs.eventtap.keyStroke(toMods, toKey, delay or 0)
end)
table.insert(appHotkeys[appName], hotkey)
end
local appWatcher = hs.application.watcher.new(function(appName, eventType)
local hotkeys = appHotkeys[appName]
if not hotkeys then return end
for _, hotkey in ipairs(hotkeys) do
if eventType == hs.application.watcher.activated then
hotkey:enable()
elseif eventType == hs.application.watcher.deactivated then
hotkey:disable()
end
end
end)
appWatcher:start()
-- Remap app hotkeys
remapAppHotkey("Finder", { "cmd" }, "q", { "cmd" }, "w", 0.5)
... etc ...Re: Hammerspoon
#23Re: Hammerspoon
#24Has anyone worked on making a config replicating aerospace? Hammerspoon seems like a superset and it’s probably better to just have one, instead of two tools warring about who gets the keypresses?
What features are you trying to replicate from Aerospace?
I was hoping I could be lazy and ask, and a not-lazy person could give a ready made answer :)
Re: Hammerspoon
#25 local usbWatcher = hs.usb.watcher.new(function(device)
if device.productName == "EMEET SmartCam C960" then
if device.eventType == "added" then
hs.execute("networksetup -setairportpower en0 off")
hs.notify.new({title="Wi-Fi", informativeText="Disabled (USB device connected)"}):send()
elseif device.eventType == "removed" then
hs.execute("networksetup -setairportpower en0 on")
hs.notify.new({title="Wi-Fi", informativeText="Re-enabled (USB device removed)"}):send()
end
end
end)
usbWatcher:start()Re: Hammerspoon
#26Re: Hammerspoon
#27I'd love to have a global "toggle Teams mute" button.
hs.loadSpoon("MicMute")
binding = { toggle = { {"ctrl", "alt"}, "m" } }
spoon.MicMute:bindHotkeys(binding)
```
You'll have to add the MicMute spoon which just mean downloading the zip here, unzipping, and opening the .spoon. https://www.hammerspoon.org/Spoons/MicMute.html
Re: Hammerspoon
#28here is my entire config hs.hotkey.bind({"ctrl"}, "D", function() hs.grid.show() end) i've tried all of the other fancy window managers and for me nothing has ever beat the ease of use of just (1) ctrl-d to see the grid, (2) type the letter where you want the top left corner of your window to be, (3) type the letter where you want the bottom right corner to be window resized
Re: Hammerspoon
#29I fake a tiling window manager on Mac with Hammerspoon, resizing to fit in specific corners/sizes: -- resize based on ratios function ratioResize(xr, yr, wr, hr) return function () local win = hs.window.focusedWindow() win:moveToUnit({x=xr,y=yr,w=wr,h=hr}) end end -- 4 corners, different sizes hs.hotkey.bind({"cmd", "ctrl"}, "w", ratioResize(0, 0, 2/5, 2/3)) hs.hotkey.bind({"cmd", "ctrl"}, "e", ratioResize(2/5, 0, 3/…