-- -- Author : Dennis Eriksen -- File : caff.lua -- Created : 2024-12-03 -- local self = 'caff.lua' local loglevel = 'verbose' local log = hs.logger.new(self, loglevel) log.i('Initializing ' .. self) if (Config.sleepkill == nil and Config.sleepstart == nil) then log.i("no caff") return end require("string") local bt_state = hs.execute('/opt/homebrew/bin/blueutil -p') bt_state = string.gsub(bt_state, '\n$', '') local bluetooth = function(power) power = string.gsub(power, '\n$', '') if (power == "1") then power = "on" elseif (power == "0") then power = "off" end log.i("Setting bluetooth to " .. power) hs.task.new("/opt/homebrew/bin/blueutil", require("utils").taskCB, {'--power', "off"} ):start() end local caffWatcherCB = function(event) local exec = require('utils').exec log.d("caffWatcherCB triggered by event") local events = { [hs.caffeinate.watcher.screensaverDidStart] = "screensaverDidStart", [hs.caffeinate.watcher.screensaverDidStop] = "screensaverDidStop", [hs.caffeinate.watcher.screensaverWillStop] = "screensaverWillStop", [hs.caffeinate.watcher.screensDidLock] = "screensDidLock", [hs.caffeinate.watcher.screensDidSleep] = "screensDidSleep", [hs.caffeinate.watcher.screensDidUnlock] = "screensDidUnlock", [hs.caffeinate.watcher.screensDidWake] = "screensDidWake", [hs.caffeinate.watcher.sessionDidBecomeActive] = "sessionDidBecomeActive", [hs.caffeinate.watcher.sessionDidResignActive] = "sessionDidResignActive", [hs.caffeinate.watcher.systemDidWake] = "systemDidWake", [hs.caffeinate.watcher.systemWillPowerOff] = "systemWillPowerOff", [hs.caffeinate.watcher.systemWillSleep] = "systemWillSleep" } log.v("Event: hs.caffeinate.watcher." .. events[event]) -- -- systemWillSleep -- SLEEP -- if event == hs.caffeinate.watcher.systemWillSleep then log.i("System will now sleep") -- Bluetooth if (Config.getval('sleepkill.bluetooth')) then bt_state = hs.execute('/opt/homebrew/bin/blueutil -p') bt_state = string.gsub(bt_state, '\n$', '') bluetooth("off") end -- sleepkill apps if (#Config.sleepkill.apps > 0) then for _, app in pairs(Config.sleepkill.apps) do log.d("Trying to sleepkill " .. app) exec([["/usr/bin/killall" "]] .. app .. [["]], false) end end -- WiFi if (Config.sleepkill.wifi) then hs.wifi.setPower(false) end -- -- screensDidWake -- WAKEUP -- elseif event == hs.caffeinate.watcher.screensDidWake then log.i("System woke up") -- Bluetooth if (Config.sleepstart.bluetooth) then bluetooth("on") end -- WiFi if (Config.sleepstart.wifi) then hs.wifi.setPower(true) end end log.v("CaffWatcherCB ended") end CaffWatcher = hs.caffeinate.watcher.new(caffWatcherCB) log.d("Starting caffWatcher with caffWatcherCB") CaffWatcher:start() log.i('Done initializing ' .. self)