1package screenfader
2
3import (
4 "math"
5 "time"
6
7 "github.com/fogleman/ease"
8 "tokei.pi/screendriver"
9 "tokei.pi/ui"
10)
11
12var ScreenFadeDelay = 5 //s Start fading screen after this duration
13var ScreenFadeDuration = 1 //s
14var LastClickTimestamp = time.Now().UnixMilli()
15
16func ClickRegistered() {
17 LastClickTimestamp = time.Now().UnixMilli()
18 ui.UIScreenOff = false
19}
20
21func AdaptDisplayBrightness() {
22 timeSinceLastClick := int(time.Now().UnixMilli() - LastClickTimestamp)
23 if timeSinceLastClick < ScreenFadeDelay*1000 {
24 screendriver.SetBrightness(255)
25 } else if timeSinceLastClick < ScreenFadeDelay*1000+ScreenFadeDuration*1000 {
26 t := 1.0 - float64(timeSinceLastClick-ScreenFadeDelay*1000)/float64(ScreenFadeDuration*1000)
27 screendriver.SetBrightness(int(math.Round(ease.InOutQuart(t) * 255)))
28 } else {
29 screendriver.SetBrightness(0)
30 ui.UIScreenOff = true
31 }
32}