Suppression du .git embarqué dans agent_v0/ — le code est maintenant tracké normalement dans le repo principal. Inclut : agent_v1 (client), server_v1 (streaming), lea_ui (chat client) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
# window_info.py
|
|
"""
|
|
Récupération des informations sur la fenêtre active (X11).
|
|
|
|
v0 :
|
|
- utilise xdotool pour obtenir :
|
|
- le titre de la fenêtre active
|
|
- le PID de la fenêtre active, puis le nom du process via ps
|
|
|
|
Si quelque chose ne fonctionne pas, on renvoie des valeurs "unknown".
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import subprocess
|
|
from typing import Dict, Optional
|
|
|
|
|
|
def _run_cmd(cmd: list[str]) -> Optional[str]:
|
|
"""Exécute une commande et renvoie la sortie texte (strippée), ou None en cas d'erreur."""
|
|
try:
|
|
out = subprocess.check_output(cmd, stderr=subprocess.DEVNULL)
|
|
return out.decode("utf-8", errors="ignore").strip()
|
|
except Exception:
|
|
return None
|
|
|
|
|
|
def get_active_window_info() -> Dict[str, str]:
|
|
"""
|
|
Renvoie un dict :
|
|
{
|
|
"title": "...",
|
|
"app_name": "..."
|
|
}
|
|
|
|
Nécessite xdotool installé sur le système.
|
|
"""
|
|
title = _run_cmd(["xdotool", "getactivewindow", "getwindowname"])
|
|
pid_str = _run_cmd(["xdotool", "getactivewindow", "getwindowpid"])
|
|
|
|
app_name: Optional[str] = None
|
|
if pid_str:
|
|
pid_str = pid_str.strip()
|
|
# On récupère le nom du binaire via ps
|
|
app_name = _run_cmd(["ps", "-p", pid_str, "-o", "comm="])
|
|
|
|
if not title:
|
|
title = "unknown_window"
|
|
if not app_name:
|
|
app_name = "unknown_app"
|
|
|
|
return {
|
|
"title": title,
|
|
"app_name": app_name,
|
|
}
|