preprečevanje screensaver-ja (še ne dela na wayland)
This commit is contained in:
35
projector.py
35
projector.py
@@ -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()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user