keypresser/model/window_manager.py

35 lines
1.2 KiB
Python

import pygetwindow as gw
import logging
logger = logging.getLogger(__name__)
class WindowManager:
"""
Manages interactions related to system windows,
primarily retrieving active window titles.
"""
def __init__(self):
logger.info("WindowManager: Initialized.")
def get_window_titles(self):
"""
Retrieves a sorted list of active window titles.
Excludes the utility's own window by its title.
"""
logger.info("WindowManager: Attempting to retrieve active window list.")
try:
all_windows = gw.getAllWindows()
# Filter out empty titles and the utility's own window by its default title
window_titles = sorted(
list(set([
win.title for win in all_windows
if win.title and win.title != "Jarvis Key Press Utility (AHK Integrated)"
]))
)
logger.info(f"WindowManager: Found {len(window_titles)} active windows.")
return window_titles
except Exception as e:
logger.error(f"WindowManager: Failed to retrieve window list: {e}", exc_info=True)
return []