#!/usr/bin/env python3
"""Bascule le workspace focalisé via la commande native du compositor.

Le compositor possède l'état du layout et du workspace. Le helper ne garde
aucune copie du layout précédent et reste utilisable avec SwayFX standard.
"""

import json
import subprocess
import sys


def main():
    try:
        result = subprocess.run(
            ["swaymsg", "-t", "command", "layout toggle mosaic"],
            capture_output=True, text=True, timeout=3, check=False,
        )
    except (OSError, subprocess.TimeoutExpired):
        print("Commande de layout indisponible.", file=sys.stderr)
        return 1
    try:
        reply = json.loads(result.stdout)
    except ValueError:
        print("Réponse IPC de layout invalide.", file=sys.stderr)
        return 1
    if isinstance(reply, list) and reply and reply[0].get("success"):
        return 0
    error = reply[0].get("error", "") if isinstance(reply, list) and reply else ""
    # SwayFX standard ignore proprement ce raccourci : il ne possède ni ce
    # layout ni l'état workspace permettant de restaurer le layout précédent.
    if "Expected 'layout" in error or "Invalid layout" in error:
        return 0
    print(f"Bascule de layout impossible : {error or 'erreur IPC'}", file=sys.stderr)
    return 1


if __name__ == "__main__":
    raise SystemExit(main())
