Skip to content

browser_tabs

browser_tabs

Les onglets du navigateur de l'utilisateur — lister, activer. Pas fermer.

Atlas, panier « Ensuite », 24 août 2026. L'état du bureau lit déjà le TITRE de l'onglet actif ; il manquait « retrouve mon onglet Gmail » — lister et mettre devant. La fermeture est volontairement ABSENTE de ce périmètre : fermer un onglet est irréversible (formulaire, brouillon), et les index se décalent à chaque fermeture — le geste sûr viendra, gated, s'il manque.

Mêmes remparts qu'etat_bureau : LISTE BLANCHE de navigateurs (un « tell application » vers une app non installée ouvre à la COMPILATION une boîte « Où se trouve X ? » qu'aucun try ne rattrape), présence constatée par pgrep avant tout tell, dialectes Safari (« name of current tab ») et Chromium (« title of active tab ») écrits en toutes lettres.

Classes

BrowserTabsTool

Bases: BaseTool

Les onglets ouverts : les voir, en mettre un devant.

Functions:

navigateur_en_marche

navigateur_en_marche(runner=None) -> Optional[str]

Le premier navigateur connu dont le processus tourne — None sinon.

Source code in src/diapason/tools/browser_tabs.py
def navigateur_en_marche(runner=None) -> Optional[str]:
    """Le premier navigateur connu dont le processus tourne — None sinon."""
    for nav in _LISTER:
        if (runner or _run)(["pgrep", "-x", nav]).returncode == 0:
            return nav
    return None

interpreter_onglets

interpreter_onglets(sortie: str) -> list[dict]

[{fenetre, onglet, titre, url}] depuis les lignes du script.

Source code in src/diapason/tools/browser_tabs.py
def interpreter_onglets(sortie: str) -> list[dict]:
    """[{fenetre, onglet, titre, url}] depuis les lignes du script."""
    onglets = []
    for ligne in (sortie or "").splitlines():
        morceaux = ligne.split(_SEP)
        if len(morceaux) != 4:
            continue
        try:
            onglets.append(
                {
                    "fenetre": int(morceaux[0]),
                    "onglet": int(morceaux[1]),
                    "titre": morceaux[2].strip(),
                    "url": morceaux[3].strip(),
                }
            )
        except ValueError:
            continue
    return onglets