preprečevanje screensaver-ja (še ne dela na wayland)

This commit is contained in:
2026-03-07 21:38:10 +01:00
parent c3ab121e55
commit c4b230a9b0

View File

@@ -8,6 +8,7 @@ import os
import math import math
import subprocess import subprocess
import sys import sys
import ctypes
import tkinter.messagebox as messagebox import tkinter.messagebox as messagebox
from web.server import start_server_thread from web.server import start_server_thread
@@ -159,6 +160,26 @@ class SongProjector:
except Exception as e: except Exception as e:
print(f"Napaka pri zagonu web serverja: {e}") print(f"Napaka pri zagonu web serverja: {e}")
# --------------------------------------------------
# Preprečevanje ohranjevalnika zaslona
# --------------------------------------------------
self.keep_awake()
def keep_awake(self):
"""
Prepreči vklop ohranjevalnika zaslona ali spanja.
"""
try:
if sys.platform.startswith("win"):
# Windows: ES_CONTINUOUS | ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED
# 0x80000000 | 0x00000002 | 0x00000001
ctypes.windll.kernel32.SetThreadExecutionState(0x80000003)
elif sys.platform == "linux":
# Linux: poskusimo z xset (če smo v X11)
subprocess.Popen(["xset", "s", "off", "-dpms"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
except Exception as e:
print(f"Napaka pri preprečevanju spanja: {e}")
# ------------------------------------------------------ # ------------------------------------------------------
# NOVA METODA: enakomeren prelom predolgih vrstic # NOVA METODA: enakomeren prelom predolgih vrstic
# ------------------------------------------------------ # ------------------------------------------------------
@@ -463,6 +484,20 @@ class SongProjector:
# Izhod # Izhod
# ------------------------------------------------------ # ------------------------------------------------------
def exit_program(self, event=None): def exit_program(self, event=None):
# Ponastavi stanje preprečevanja spanja na Windows
if sys.platform.startswith("win"):
try:
# ES_CONTINUOUS (0x80000000)
ctypes.windll.kernel32.SetThreadExecutionState(0x80000000)
except:
pass
elif sys.platform == "linux":
try:
# Ponovno vklopi ohranjevalnik in DPMS (privzete vrednosti)
subprocess.Popen(["xset", "s", "on", "+dpms"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
except:
pass
self.conn.close() self.conn.close()
self.root.destroy() self.root.destroy()