Files
2026-05-14 18:59:23 -04:00

51 lines
1.5 KiB
Lua

-- ~/.hammerspoon/Focus.lua
local Focus = {}
local hiddenAppBundleIDs = {}
function Focus.toggle()
local frontApp = hs.application.frontmostApplication()
-- UNFOCUS: Bring back only what WE hid
if #hiddenAppBundleIDs > 0 then
local count = 0
for _, bid in ipairs(hiddenAppBundleIDs) do
local app = hs.application.get(bid)
if app then
app:unhide()
count = count + 1
end
end
hiddenAppBundleIDs = {}
hs.alert.show("Focus Off: " .. count .. " apps restored")
return
end
-- FOCUS: Hide background apps instantly
local allApps = hs.application.runningApplications()
local count = 0
for _, app in ipairs(allApps) do
local bid = app:bundleID()
local name = app:name()
-- Hide if: Not current app, has a window, isn't already hidden, and isn't Hammerspoon
if app ~= frontApp and bid and app:mainWindow() and not app:isHidden() then
if bid ~= "org.hammerspoon.Hammerspoon" and name ~= "Hammerspoon" then
table.insert(hiddenAppBundleIDs, bid)
app:hide()
count = count + 1
end
end
end
if count > 0 then
hs.alert.show("Focus On: " .. count .. " apps hidden")
else
hs.alert.show("Already Focused")
end
end
hs.hotkey.bind(hyper, "F", Focus.toggle)
print("Focus Module: Stable App-Only Version Loaded")
return Focus