diff --git a/visual_workflow_builder/backend/api_v3/execute.py b/visual_workflow_builder/backend/api_v3/execute.py index 18adcccaf..eea38eea4 100644 --- a/visual_workflow_builder/backend/api_v3/execute.py +++ b/visual_workflow_builder/backend/api_v3/execute.py @@ -39,18 +39,28 @@ _handle_detected_pattern = _shared_handle_pattern 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: - # Attendre un court instant pour que la requête HTTP soit traitée time.sleep(0.3) - # Minimiser la fenêtre active + # Minimiser la fenêtre active (navigateur VWB) subprocess.run(['xdotool', 'getactivewindow', 'windowminimize'], capture_output=True, timeout=2) - time.sleep(1.5) - print("📦 [Execute] Fenêtre du navigateur minimisée (+ 1.5s d'attente)") + time.sleep(0.5) + + # 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 except FileNotFoundError: - print("⚠️ [Execute] xdotool non installé - impossible de minimiser") + print("⚠️ [Execute] xdotool non installé") return False except Exception as e: print(f"⚠️ [Execute] Erreur minimisation: {e}")