Ligne de commande
L’outil en ligne de commande gratuit marsdawn : exportez du Markdown en PDF depuis un shell ou un agent LLM et, si l’app MarsDawn est installée, ouvrez-y des fichiers.
marsdawn est gratuit et distribué séparément du Mac App Store. Installez-le avec Homebrew : sur un Mac avec puce Apple, il arrive prêt à l’emploi. export fonctionne seul ; open nécessite l’app MarsDawn.
Vous appelez marsdawn depuis un agent IA ou un script ? Consultez marsdawn pour les agents pour la sortie JSON, ses schémas et tous les codes de sortie, ou le serveur MCP si votre agent appelle plutôt des outils via MCP.
Installation
Avec Homebrew :
brew tap redtear1115/tap && brew install marsdawn
Vous utilisez un agent de code ? Exécutez marsdawn skill --install pour ajouter la skill marsdawn : un seul fichier qui lui apprend à ouvrir ce qu’il a écrit dans MarsDawn pour que vous le relisiez, et à exporter des PDF.
Sur un Mac avec puce Apple, Homebrew installe une copie précompilée en quelques secondes, sans rien d’autre à installer. Sur un Mac Intel, il compile marsdawn à partir des sources, ce qui prend quelques minutes et nécessite Xcode 26 ou version ultérieure (Swift 6.2). L’outil fonctionne sous macOS 15 ou version ultérieure.
Vous pouvez aussi le compiler à partir des sources avec Swift Package Manager :
git clone https://github.com/redtear1115/mars-dawn-kit.git
cd mars-dawn-kit
swift build -c release --product marsdawn
Vérifiez votre version avec marsdawn --version.
Commandes
marsdawn open
Ouvre un ou plusieurs fichiers Markdown dans l’app MarsDawn pour les relire. L’app doit être installée : sans elle, marsdawn open se termine avec le code 3 et indique que MarsDawn n’est pas installé. export n’a pas besoin de l’app. L’app est disponible sur le Mac App Store.
marsdawn open notes.md
marsdawn open notes.md:120
marsdawn open notes.md --line 120
marsdawn open .
marsdawn open notes.md --folder .
path:line: demande à MarsDawn d’aller à cette ligne. Une colonne après, comme dansnotes.md:120:8, est ignorée. Si un fichier portant le nom complet existe, l’argument désigne ce fichier.--line <n>: la même chose pour un seul fichier, et le moyen de demander une ligne pour un chemin qui se termine lui-même par deux-points et des chiffres. Exige exactement un fichier.- Les lignes vont de 1 à 999999999.
- MarsDawn 1.0 ouvre le fichier à cette ligne.
- Un dossier passé en argument s’ouvre dans la barre latérale de la fenêtre plutôt que comme un document :
marsdawn open .affiche le dossier courant.--folder <path>fait de même en plus de fichiers. La barre latérale d’une fenêtre affiche un seul dossier, donc en nommer deux est une erreur d’utilisation. --wait <n>: avec MarsDawn 1.0.2 ou version ultérieure, qui donne une réponse,--folderattend jusqu’à n secondes (de 0 à 30, 2 par défaut) la réponse de l’app au sujet du dossier. Avec--wait 0, ou une app qui ne donne pas de réponse, il n’attend pas et envoie la même requête qu’avant.- Une valeur de
--waithors de 0 à 30 est une erreur d’utilisation (code 64). Écrivez une valeur négative sous la forme--wait=-1. - Avec
--json, le dossier est indiqué comme demandé, et non comme affiché, car c’est l’app qui décide ; avec--wait, le résultat dit aussi ce qu’il est devenu. La liste complète se trouve dans marsdawn pour les agents. --background: ouvrir sans faire passer MarsDawn au premier plan.--json: afficher un résultat JSON au lieu de texte.
Les lignes sont arrivées avec marsdawn 0.3.0, les dossiers et --background avec la 0.5.1, et --wait et l’état du dossier avec la 0.5.3.
marsdawn export
Convertit un fichier Markdown en PDF paginé, avec le même moteur d’export que celui de MarsDawn. Il n’a pas besoin de l’app MarsDawn. Les images relatives sont résolues par rapport au dossier du fichier d’entrée.
marsdawn export notes.md -o notes.pdf --theme classic --paper a4
-o, --output <path>: où écrire le PDF. Par défaut, le chemin d’entrée avec l’extension.pdf.--theme <dawn|classic|modern|vivid>: la palette claire du thème de l’aperçu. Par défaut,$MARSDAWN_THEME, puisdawn.--paper <a4|letter>: format du papier. Par défaut,a4.--breaks: rendre chaque retour à la ligne d’un paragraphe comme un saut de ligne, comme HackMD. Sans cette option, un retour à la ligne entre deux caractères chinois ou japonais disparaît, et les lignes se lisent comme une seule phrase.--layout <document|handbook>: la mise en page. Par défaut,document.handbookproduit un guide : marges plus larges avec un côté de reliure, chaque titre de premier niveau sur une nouvelle page, une table des matières avec numéros de page, des numéros de page en pied de page et des signets PDF, plus une couverture quand le front matter a untitle.--toc-title <text>: le titre de la page de table des matières du guide. Par défaut,Contents.<!--BREAK-->seul sur une ligne commence une nouvelle page, dans les deux mises en page.--allow-remote-images: charger les images web pendant le rendu. Désactivé par défaut.--force: remplacer le fichier de sortie s’il existe déjà.--json: afficher un résultat JSON au lieu de texte.- Un fichier de plus de 16 Mio n’est pas exporté :
exportse termine avec le code 5 et n’écrit rien.
--breaks est arrivé avec marsdawn 0.7.0, --layout et --toc-title avec la 0.7.1, et la valeur handbook avec la 0.7.2. L’ancienne valeur de la 0.7.1, manual, fonctionne toujours.
marsdawn theme
Vérifie un fichier de thème (theme.json) et montre son rendu avant que vous le partagiez. L’app MarsDawn n’est pas nécessaire. Pour les champs d’un thème, voir Créer un thème avec votre agent.
marsdawn theme validate my-theme.json
marsdawn theme css my-theme.json
marsdawn theme preview my-theme.json --appearance dark -o preview.png
validate <file>: vérifie le fichier selon chaque règle qu’un thème MarsDawn doit respecter, avec le même validateur que l’app. Se termine avec le code 0 si le thème est valide et 1 sinon, en listant chaque problème.--require-completeexige aussi les couleurs de syntaxe et de diagramme, obligatoires pour un thème publié.css <file>: affiche le CSS que l’aperçu utilise pour un thème valide.preview <file> --appearance <light|dark> -o <out.png>: rend un document d’exemple avec le thème dans un PNG.--widthfixe sa largeur en pixels, de 600 à 2000 (1200 par défaut). Un fichier existant n’est remplacé qu’avec--force.--json: afficher un résultat JSON au lieu de texte.
Les commandes theme sont arrivées avec marsdawn 0.6.1.
La variable $MARSDAWN_THEME
Quand --theme n’est pas passé, export lit la variable d’environnement $MARSDAWN_THEME. Sa valeur doit être dawn, classic, modern ou vivid ; toute autre valeur revient à dawn. La CLI ne lit pas le réglage de thème de l’app, car lire le conteneur d’une autre app peut déclencher une demande d’autorisation de confidentialité de macOS.
Écraser des fichiers
export refuse de remplacer un fichier de sortie existant, sauf si vous passez --force.
Codes de sortie
| Code | Signification | Que faire |
|---|---|---|
0 | succès. | Avec --json, lire l’unique ligne JSON sur stdout |
2 | entrée introuvable. | Vérifier le chemin et le nom du fichier |
3 | MarsDawn n’est pas installé (open uniquement). | Installer l’app, ou utiliser export, qui n’en a pas besoin |
4 | la sortie existe déjà (passez --force). | Passer --force pour le remplacer, ou -o pour écrire ailleurs |
5 | échec de l’export. | Lire message dans le résultat JSON |
6 | ce MarsDawn ne peut pas afficher de dossier, donc rien n’a été ouvert (open uniquement). | |
64 | erreur d’utilisation, notamment une ligne hors limites, --line avec plus d’un fichier ou avec un dossier, ou plus d’un dossier. | Corriger l’option ou la valeur ; cette erreur est du texte sur stderr, même avec --json |
Sortie --json
En cas de succès, marsdawn open --json affiche ok, opened (une liste avec le path de chaque fichier, plus line quand une ligne a été demandée), app (le chemin de l’app) et, quand un dossier a été donné, folder. marsdawn export --json affiche ok, output, pages, theme, paper et diagramErrors. En cas d’échec, les deux affichent ok, error et message.