fix: activer la fenêtre cible après minimisation du navigateur VWB
Some checks failed
security-audit / Bandit (scan statique) (push) Successful in 13s
security-audit / pip-audit (CVE dépendances) (push) Successful in 11s
security-audit / Scan secrets (grep) (push) Successful in 8s
tests / Lint (ruff + black) (push) Successful in 13s
tests / Tests unitaires (sans GPU) (push) Failing after 14s
tests / Tests sécurité (critique) (push) Has been skipped

Après minimisation du navigateur, xdotool active la fenêtre suivante
(VM QEMU, app cible). Avant, le terminal restait au premier plan →
mss capturait le terminal au lieu de la VM.

Cause racine de tous les échecs de matching.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-04-21 18:21:55 +02:00
parent 74ee0dadee
commit 0b06db222d

View File

@@ -39,18 +39,28 @@ _handle_detected_pattern = _shared_handle_pattern
def minimize_active_window(): def minimize_active_window():
"""Minimise la fenêtre active (Linux avec xdotool)""" """Minimise le navigateur VWB et active la fenêtre suivante (VM, app cible)."""
try: try:
# Attendre un court instant pour que la requête HTTP soit traitée
time.sleep(0.3) time.sleep(0.3)
# Minimiser la fenêtre active # Minimiser la fenêtre active (navigateur VWB)
subprocess.run(['xdotool', 'getactivewindow', 'windowminimize'], subprocess.run(['xdotool', 'getactivewindow', 'windowminimize'],
capture_output=True, timeout=2) capture_output=True, timeout=2)
time.sleep(1.5) time.sleep(0.5)
print("📦 [Execute] Fenêtre du navigateur minimisée (+ 1.5s d'attente)")
# Activer la fenêtre qui est maintenant au premier plan
# (la VM QEMU, virt-manager, ou l'app cible)
subprocess.run(['xdotool', 'getactivewindow', 'windowfocus', '--sync'],
capture_output=True, timeout=2)
time.sleep(1.0)
# Vérifier quelle fenêtre a le focus
result = subprocess.run(['xdotool', 'getactivewindow', 'getwindowname'],
capture_output=True, text=True, timeout=2)
active_title = result.stdout.strip() if result.returncode == 0 else "?"
print(f"📦 [Execute] Navigateur minimisé — fenêtre active: '{active_title}'")
return True return True
except FileNotFoundError: except FileNotFoundError:
print("⚠️ [Execute] xdotool non installé - impossible de minimiser") print("⚠️ [Execute] xdotool non installé")
return False return False
except Exception as e: except Exception as e:
print(f"⚠️ [Execute] Erreur minimisation: {e}") print(f"⚠️ [Execute] Erreur minimisation: {e}")