1010
1111from pathlib import Path
1212from pynput import keyboard
13- from typing import Union , Dict , SupportsInt , AnyStr , Tuple , List
13+ from typing import Union , Dict , SupportsInt , AnyStr , Tuple , List , Optional
1414
1515from reschanger import DISP_RESULTS
1616import reschanger
3131PATH_BASE_DIR = PATH_CURRENT_FILE .parent
3232PATH_REG_AUTORUN = "SOFTWARE\\ Microsoft\\ Windows\\ CurrentVersion\\ Run"
3333
34+ config_last_state = None
35+ config_last_update = None
36+
3437
3538@dataclasses .dataclass
3639class ScreenSettings :
@@ -97,8 +100,18 @@ def cur_monitor_specs() -> Dict[AnyStr, Dict[AnyStr, SupportsInt]]:
97100 return params
98101
99102
100- async def load_config () -> Tuple [ScreenSettings , ScreenSettings ]:
103+ async def load_config () -> Optional [ Tuple [ScreenSettings , ScreenSettings ], None ]:
101104 logging .debug (f"Loading config from { PATH_TO_PROGRAM / 'config.json' } " )
105+
106+ update_time = os .path .getmtime (PATH_TO_PROGRAM / 'config.json' )
107+
108+ global config_last_state , config_last_update
109+
110+ if config_last_update == update_time :
111+ return config_last_state
112+
113+ config_last_update = update_time
114+
102115 with open (PATH_TO_PROGRAM / "config.json" , "r" ) as config :
103116 stream = config .read ()
104117
@@ -110,10 +123,12 @@ async def load_config() -> Tuple[ScreenSettings, ScreenSettings]:
110123 powersave_dict = params ["powersave-state" ]
111124 powersave_state = ScreenSettings (** powersave_dict )
112125
126+ config_last_state = performance_state , powersave_state
127+
113128 return performance_state , powersave_state
114129
115130
116- async def change_screen_settings (ss : ScreenSettings ):
131+ async def change_screen_settings (ss : ScreenSettings ) -> None :
117132 logging .info (f"Changing screen settings to { ss } " )
118133 res = reschanger .set_resolution (* ss )
119134
@@ -134,14 +149,14 @@ async def change_screen_settings(ss: ScreenSettings):
134149 elif not res == DISP_RESULTS .DISP_CHANGE_SUCCESSFUL :
135150
136151 await asyncio .sleep (10 )
137- write_logs (Exception ("\n " .join (
138- [
139- "Failed to change screen settings." ,
140- "This could be due to external interference(like graphic drives)" ,
141- "or the laptop being in a lockscreen or sleep state," ,
142- "as Windows may prevent changes in those states."
143- ]
144- )))
152+ # write_logs(Exception("\n".join(
153+ # [
154+ # "Failed to change screen settings.",
155+ # "This could be due to external interference(like graphic drives)",
156+ # "or the laptop being in a lockscreen or sleep state,",
157+ # "as Windows may prevent changes in those states."
158+ # ]
159+ # )))
145160 reschanger .set_resolution (* ss )
146161
147162
@@ -241,7 +256,7 @@ async def srr():
241256 shutil .copy (PATH_CURRENT_FILE , PATH_TO_PROGRAM / PROJECT_EXECUTABLE )
242257 logging .info (f"{ PROJECT_EXECUTABLE } was copied to { PATH_TO_PROGRAM } " )
243258
244- # os.system(f'sc create SRR-service binpath="{PATH_TO_PROGRAM / PROJECT_EXECUTABLE}" start=delayed-auto')
259+ # ``` os.system(f'sc create SRR-service binpath="{PATH_TO_PROGRAM / PROJECT_EXECUTABLE}" start=delayed-auto')```
245260
246261 os .system (f"reg add HKEY_CURRENT_USER\\ Software\\ Microsoft\\ Windows\\ CurrentVersion\\ Run /v "
247262 f"{ PROJECT_NAME } /t REG_SZ /d { PATH_TO_PROGRAM / PROJECT_EXECUTABLE } /f" )
0 commit comments