diff --git a/gover b/gover index e3483cf..a469ad4 100755 Binary files a/gover and b/gover differ diff --git a/main.go b/main.go index 020e0cf..eb6f8dc 100644 --- a/main.go +++ b/main.go @@ -7,53 +7,68 @@ import ( "github.com/go-vgo/robotgo" ) -func checkActive(x *int, y *int, active *bool) { +const ( + CHECKING_INTERVAL_SECONDS = 10 + MOVE_AFTER_SECONDS = 300 +) + +func moveMouse() { + // Move mouse around 100px + robotgo.MoveSmoothRelative(100, 0) + time.Sleep(1 * time.Second) + robotgo.MoveSmoothRelative(-100, 0) +} + +func displayStatus(lastMove *int) { + // Clear display, and write last move + fmt.Print("\033[H\033[2J") + fmt.Printf("Last move %d seconds ago\n", *lastMove) +} + +func checkActive(x *int, y *int, lastMove *int) { // Current x, and Current Y cX, cY := robotgo.Location() if cX == *x && cY == *y { - *active = false + // Hasn't moved + *lastMove += CHECKING_INTERVAL_SECONDS } else { - *active = true + // Has moved + *lastMove = 0 } + // Set current x and y *x = cX *y = cY -} -func moveMouse(active *bool) { - // If inactive, move mouse to 100px right, and back - if !*active { - fmt.Println("Moving mouse") - robotgo.MoveSmoothRelative(100, 0) - time.Sleep(1 * time.Second) - robotgo.MoveSmoothRelative(-100, 0) + // Check if we should move + if *lastMove >= MOVE_AFTER_SECONDS { + moveMouse() + *lastMove = 0 } + + displayStatus(lastMove) } func main() { // reactive variables haha (useState, or reactive(), but just pointers) x := 0 y := 0 - active := true + // Meant to represent seconds ago + lastMove := 0 // Create tickers - ticker1 := time.NewTicker(10 * time.Second) - ticker2 := time.NewTicker(5 * time.Minute) + ticker := time.NewTicker(CHECKING_INTERVAL_SECONDS * time.Second) + fmt.Printf("Checking active every %d seconds", CHECKING_INTERVAL_SECONDS) + time.Sleep(5 * time.Second) - defer ticker1.Stop() - defer ticker2.Stop() + defer ticker.Stop() // Run initial calls (optional) - checkActive(&x, &y, &active) + checkActive(&x, &y, &lastMove) // Goroutine to handle ticks - for { - select { - case <-ticker1.C: - checkActive(&x, &y, &active) - case <-ticker2.C: - moveMouse(&active) - } + for range ticker.C { + checkActive(&x, &y, &lastMove) } }