You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
from logger import logger |
|
from Xlib.display import Display |
|
|
|
saved_data: dict = {} |
|
saved = False |
|
available = False |
|
|
|
display: Display |
|
|
|
def init_display(): |
|
global display, available |
|
try: |
|
display = Display() |
|
available = True |
|
except Exception as err: |
|
logger.error(f"Xlib error: {err}") |
|
|
|
def set_screensaver(timeout: int): |
|
global saved_data, saved, available, display |
|
if saved or not available: |
|
return |
|
display.sync() |
|
display.sync() |
|
data: dict[str, int] = display.get_screen_saver()._data or {} |
|
saved_data = data |
|
saved = True |
|
|
|
display.set_screen_saver(timeout, data["interval"], data["prefer_blanking"], data["allow_exposures"]) |
|
display.flush() |
|
logger.debug("Screensaver timeout set") |
|
|
|
def reset_screensaver(): |
|
global saved_data, saved, available, display |
|
if not saved or not available: |
|
return |
|
display.sync() |
|
display.set_screen_saver(saved_data["timeout"], saved_data["interval"], saved_data["prefer_blanking"], saved_data["allow_exposures"]) |
|
display.flush() |
|
saved = False |
|
logger.debug("Screensaver reset")
|
|
|