glow détecte s’il écrit vers un vrai terminal. Quand il est appelé depuis un script ou un subprocess (comme subprocess.run en Python), il ne voit pas de TTY et enlève tous les codes de couleur ANSI, tu te retrouves avec du texte plain.

La correction se fait avec deux variables d’environnement :

CLICOLOR_FORCE=1 COLORTERM=truecolor glow --style dark file.md

CLICOLOR_FORCE=1 indique aux outils CLI qui gèrent les couleurs d’en émettre peu importe la détection de TTY. COLORTERM=truecolor dit à glow d’utiliser les couleurs 24 bits au lieu de se rabattre sur le mode 8 couleurs.

En Python :

import subprocess, os

env = {**os.environ, "CLICOLOR_FORCE": "1", "COLORTERM": "truecolor"}
result = subprocess.run(["glow", "--style", "dark", "file.md"],
                        capture_output=True, text=True, env=env)

J’ai rencontré ça en construisant un site personnel compatible curl qui pré-rend le Markdown en ANSI au moment du build.