kde-lockscreen-suspend-display/cmd/after-lock/after-lock.go

63 lines
1.2 KiB
Go

package main
import (
"kdelsd/afterlock"
"kdelsd/xdg/display"
"kdelsd/xdg/keypressdetector"
"kdelsd/xdg/lockscreen"
"kdelsd/lockfile"
"os"
"runtime/debug"
"log"
)
const (
initialDelay = 3
loopDelay = 7
keyboardDeviceNode = "/dev/input/by-id/usb-Dell_Dell_USB_Entry_Keyboard-event-kbd"
lockfilePath = "/tmp/after-lock.lock"
printStackTraces = false
logFilePath = "/home/superuser/Desktop/after-lock.log"
)
func main() {
defer handleErrors()
f := initLogging()
if f != nil {
defer teardownLogging(f)
}
lock := grabExclusiveProcessLock()
defer lock.Unlock()
al := afterlock.New(keyboardDeviceNode)
al.InitialDelay = initialDelay
al.LoopDelay = loopDelay
al.Display = display.Xset{}
al.LockScreen = lockscreen.XDG{}
al.KeypressDetector = keypressdetector.Evdev{}
al.Start()
}
func handleErrors() {
if err := recover(); err != nil {
log.Printf("Crashed with unexpected error: %v!\n", err)
if printStackTraces {
log.Printf("Stack trace:\n\n")
debug.PrintStack()
}
os.Exit(1)
}
}
func grabExclusiveProcessLock() *lockfile.Lockfile {
lf := lockfile.New(lockfilePath)
err := lf.Lock()
if err != nil {
panic(err)
}
return lf
}