"""Compositor — TANINUX ist niri-only. UI-frei.

Früher unterschied dieses Modul Hyprland vs Sway/SwayFX; seit der Umstellung
auf **niri** gibt es nur noch einen Compositor. Das Modul bleibt als dünne
Schicht erhalten, damit die Session-Erkennung („läuft niri überhaupt?") an
EINER Stelle liegt — genutzt von der Display-Seite (niri-IPC verfügbar?).
"""
from __future__ import annotations

import os
import subprocess

NIRI = "niri"
UNKNOWN = "unknown"


def detect() -> str:
    # niri exportiert NIRI_SOCKET in jede Session — das ist der zuverlässige Weg.
    if os.environ.get("NIRI_SOCKET"):
        return NIRI
    # Fallback: laufender Prozess (z.B. wenn aus anderem Env gestartet).
    try:
        r = subprocess.run(["pgrep", "-x", "niri"],
                           capture_output=True, timeout=3)
        if r.returncode == 0:
            return NIRI
    except (FileNotFoundError, subprocess.TimeoutExpired):
        pass
    return UNKNOWN


def is_niri() -> bool:
    return detect() == NIRI


def pretty() -> str:
    return "niri" if is_niri() else "unknown"
