Skip to content

app_index

app_index

Cached macOS application index used by low-latency launch actions.

Classes

MacAppIndex

MacAppIndex(ttl_s: float = 300.0)

Resolve app names without rescanning three directories per command.

Source code in src/diapason/desktop/app_index.py
def __init__(self, ttl_s: float = 300.0) -> None:
    self.ttl_s = max(1.0, float(ttl_s))
    self._items: tuple[str, ...] = ()
    self._affiches: dict[str, str] = {}
    self._updated = 0.0
    self._lock = threading.Lock()
Methods:
resolve
resolve(name: str) -> str | None

Le nom pour open -a : l'installé si on le trouve, sinon le brut.

Launch Services connaît des applications hors des dossiers balayés — le repli sur le nom brut reste donc utile. Qui veut savoir si l'app est RÉELLEMENT installée utilise lookup, qui rend None.

Source code in src/diapason/desktop/app_index.py
def resolve(self, name: str) -> str | None:
    """Le nom pour ``open -a`` : l'installé si on le trouve, sinon le brut.

    Launch Services connaît des applications hors des dossiers balayés —
    le repli sur le nom brut reste donc utile. Qui veut savoir si l'app
    est RÉELLEMENT installée utilise ``lookup``, qui rend None.
    """
    return self.lookup(name) or ((name or "").strip().removesuffix(".app") or None)