Skip to content

Instantly share code, notes, and snippets.

@zcutlip
Created June 14, 2020 17:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zcutlip/843836bc8dc8b481871397674cbff8ce to your computer and use it in GitHub Desktop.
Save zcutlip/843836bc8dc8b481871397674cbff8ce to your computer and use it in GitHub Desktop.
Hammerspoon module to pause/unpause Folding@Home
screenSleep = false
screenSaver = false
screenLock = false
--[[
A module to pause/unpause Folding@Home depending on screensaver, screen lock, and
screen sleep state.
Folding@Home's "only when idle" mode does not pause/unpause the client at obvious times
or for obvious reasons. Instead, This module uses screen state as in indicator that the
user is/isn't interacting with the system.
]]
local log = hs.logger.new('main','debug')
function fahPause()
log.i("Pausing Folding@Home")
local task = hs.task.new("/usr/local/bin/FAHClient",nil, {"--send-pause"})
task:start()
end
function fahResume()
log.i("Resuming Folding@Home")
local task = hs.task.new("/usr/local/bin/FAHClient",nil, {"--send-unpause"})
task:start()
end
function updateFah()
log.i("Doing Folding@Home update")
log.i("screenLock: ", screenLock)
log.i("screenSaver: ", screenSaver)
log.i("screenSleep: ", screenSleep)
if screenSaver == false and screenLock == false and screenSleep == false then
fahPause()
else
fahResume()
end
end
function fahMonitorCallback(event)
if event == hs.caffeinate.watcher.screensaverDidStart then
log.i("screensaverDidStart")
screenSaver = true
elseif event == hs.caffeinate.watcher.screensDidLock then
log.i("screensDidLock")
screenLock = true
elseif event == hs.caffeinate.watcher.screensDidSleep then
log.i("screensDidSleep")
screenSleep = true
elseif event == hs.caffeinate.watcher.screensaverDidStop then
log.i("screensaverDidStop")
screenSaver = false
elseif event == hs.caffeinate.watcher.screensDidUnlock then
log.i("screensDidUnlock")
screenLock = false
elseif hs.caffeinate.watcher.screensDidWake then
log.i("screensDidWake")
screenSleep = false
end
updateFah()
end
fahWatcher = hs.caffeinate.watcher.new(fahMonitorCallback)
fahWatcher:start()
updateFah()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment