scrnsaver

package module
v0.0.0-...-d8af05d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 27, 2022 License: MIT Imports: 3 Imported by: 1

README

scrnsaver

Calls XScreenSaverQueryInfo() (X11/extensions/scrnsaver.h) and provides XScreenSaverInfo (man 3 XScreenSaverInfo).

type XID uint64

type ScreenSaverKind int

const (
	Blanked ScreenSaverKind = iota
	Internal
	External
)

type ScreenSaverState int

const (
	Off ScreenSaverState = iota
	On
	Disabled
)

type XScreenSaverInfo struct {
	// screen saver info
	Window XID
	// ScreenSaver{Off,On,Disabled}
	State ScreenSaverState
	// ScreenSaver{Blanked,Internal,External}
	Kind ScreenSaverKind
	// Milliseconds
	Til_or_since time.Duration // uint64
	// Milliseconds
	Idle time.Duration //uint64
	// Events
	EventMask uint64
}

The XScreenSaverInfo.Idle field contains the idle time as time.Duration.

Usage

package main

import (
	"github.com/JelmerDeHen/scrnsaver"
	"fmt"
)

func main() {
	info, err := scrnsaver.GetXScreenSaverInfo()
	if err != nil {
		panic(err)
	}

	fmt.Printf("User is idle for %dms\n", info.Idle.Milliseconds())
}

Perform action based on idle time:

package main

import (
        "github.com/JelmerDeHen/scrnsaver"
        "fmt"
        "time"
)

func main() {
        for {
                info, err := scrnsaver.GetXScreenSaverInfo()
                if err != nil {
                        panic(err)
                }

                fmt.Printf("User is idle for %dms\n", info.Idle.Milliseconds())

                if info.Idle > time.Second*5 {
                        fmt.Println("User is idle")
                }

                if info.Idle < time.Second*5 {
                        fmt.Println("User is present")
                }

                time.Sleep(time.Second)
        }
}

Resolution can be obtained using GetResolution().

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DisplayHeight

func DisplayHeight() int

func DisplayWidth

func DisplayWidth() int

func GetResolution

func GetResolution() string

func HasXorg

func HasXorg() bool

Types

type ScreenSaverKind

type ScreenSaverKind int
const (
	Blanked ScreenSaverKind = iota
	Internal
	External
)

type ScreenSaverState

type ScreenSaverState int
const (
	Off ScreenSaverState = iota
	On
	Disabled
)

type XID

type XID uint64

type XScreenSaverInfo

type XScreenSaverInfo struct {
	// screen saver info
	Window XID
	// ScreenSaver{Off,On,Disabled}
	State ScreenSaverState
	// ScreenSaver{Blanked,Internal,External}
	Kind ScreenSaverKind
	// Milliseconds
	Til_or_since time.Duration // uint64
	// Milliseconds
	Idle time.Duration //uint64
	// Events
	EventMask uint64
}

func GetXScreenSaverInfo

func GetXScreenSaverInfo() (xscreensaverinfo *XScreenSaverInfo, err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL