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.