42b2eec2e1
Adds the AR Display Manager daemon (Task #9): - display_manager/ package with 8 modules: - app_registry.py : static metadata for the 4 bridge apps - config.py : JSON-persisted config + per-screen layout store - win32_utils.py : ctypes wrappers (EnumWindows, SetWindowPos, ShowWindow) - process_manager.py: launch + track app processes, HWND lookup - floating_button.py: always-on-top 52×52 px AR button per monitor with draggable placement + custom-painted popup - display_manager.py: orchestrator (QScreens → buttons → app placement + system tray with Settings/Launch/Quit) - settings_dialog.py: modal dialog for exe paths, button position, and Windows autostart toggle - autostart.py : HKCU Run registry read/write helpers - display_manager_main.py at repo root: launcher script - Studio Overview tab: "Lanzar Display Manager" button - pyproject.toml: display-manager optional dependency group (PySide6) Layout persistence: ~/.ar-autopilot/display_manager/layout.json Config: ~/.ar-autopilot/display_manager/config.json Supports up to 4 monitors (2 HDMI native + 2 USB DisplayLink). Double-click tray icon to toggle button visibility. AR_electronics — AR-Autopilot Project
26 lines
768 B
Python
26 lines
768 B
Python
"""AR Display Manager — repo-root launcher.
|
|
|
|
Usage:
|
|
python display_manager_main.py
|
|
python -m display_manager.app
|
|
|
|
The daemon detects all connected monitors and places a small floating
|
|
AR button in the corner of each. Clicking the button opens the app
|
|
switcher: choose which of the four AR Bridge apps you want visible on
|
|
that monitor. The chosen app's window is moved and maximized there;
|
|
the others continue running in the background.
|
|
|
|
Layout (which app is on which screen) is persisted in
|
|
~/.ar-autopilot/display_manager/layout.json so the arrangement
|
|
survives restarts.
|
|
"""
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
|
|
from display_manager.app import run
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(run())
|