Created
June 14, 2020 17:00
-
-
Save zcutlip/843836bc8dc8b481871397674cbff8ce to your computer and use it in GitHub Desktop.
Hammerspoon module to pause/unpause Folding@Home
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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