Automatiser les captures d'écran sur Mac avec la ligne de commande
Utilisez les boucles screencapture de macOS pour les captures plein écran, les zones fixes et les changements de page, avec des noms de fichiers sûrs et le dépannage.
14 min de lectureProductivitéPar Temposhot Team
Chaque Mac inclut screencapture, la commande derrière les raccourcis de capture d'écran du système. Appelée depuis une boucle zsh, elle prend des captures temporisées de l'écran entier ou d'une zone fixe, sans logiciel supplémentaire. Cet article construit la boucle étape par étape, ajoute les changements de page et répertorie les corrections des pannes les plus fréquentes.
Vérifier l'autorisation avant de déboguer la commande
screencapture s'exécute avec les autorisations de l'application qui la lance. Dans Terminal, cela signifie que Terminal doit avoir l'autorisation d'enregistrement de l'écran. Sans elle, la commande réussit quand même, mais l'image ne montre que le fond d'écran et la barre de menus.
Ouvrez System Settings, puis Privacy and Security (Confidentialité et sécurité), et activez votre application de terminal (Terminal, iTerm ou une autre) dans la liste d'enregistrement de l'écran (Screen Recording). Le libellé exact varie selon la version de macOS. Quittez puis rouvrez l'application de terminal après cette modification.
Confirmer l'autorisation avec une capture de test
Une capture de test montre si macOS autorise le terminal à lire l'écran. Faites une capture avec plusieurs fenêtres ouvertes, puis ouvrez le fichier. Si l'image montre les fenêtres, l'autorisation fonctionne. Si elle ne montre que le fond d'écran et la barre de menus, l'autorisation manque ou le terminal n'a pas été redémarré après la modification.
Supprimez le fichier de test après la vérification. C'est une image plein écran qui peut afficher du contenu privé.
Prendre une capture depuis Terminal
Commencez par une seule capture avant d'écrire une boucle :
screencapture -x ~/Desktop/test.png
open ~/Desktop/test.png
L'option -x désactive le bruit d'obturateur. Si l'image montre vos fenêtres ouvertes, l'autorisation et les chemins fonctionnent. Exécutez man screencapture pour voir chaque option prise en charge par votre version de macOS.
Options utilisées dans cet article
Les options sont sensibles à la casse. -c copie l'image dans le presse-papiers, et -C ajoute le pointeur à l'image. Combinez les options en arguments séparés, par exemple screencapture -x -m -t jpg file.jpg.
Le délai -T s'exécute avant chaque commande screencapture. Dans une boucle, il ajoute ce délai à chaque image. Utilisez sleep dans la boucle lorsque le délai ne doit s'appliquer qu'une seule fois.
Capturer l'écran entier toutes les quelques secondes
Cette boucle prend 20 captures, à 3 secondes d'intervalle, dans un nouveau dossier nommé d'après l'heure de départ :
#!/bin/zsh
out=~/Captures/run-$(date +%Y%m%d-%H%M%S)
mkdir -p "$out"
for i in {1..20}; do
screencapture -x -m "$out/frame-$(printf %04d $i).png"
sleep 3
done
echo "Saved 20 frames to $out"
Les noms à numérotation complétée par des zéros (frame-0001.png) gardent les fichiers dans l'ordre de capture dans le Finder et dans tout outil qui trie par nom. L'option -m limite la capture à l'écran principal. Sans elle, un Mac à deux écrans attend un nom de fichier par écran. Utilisez -D 2 pour capturer l'écran secondaire à la place.
Enregistrez le script sous capture.sh, exécutez chmod +x capture.sh, puis ./capture.sh. Appuyez sur Control+C pour arrêter plus tôt. Les images déjà enregistrées restent dans le dossier.
Calculer la durée d'une exécution
La boucle attend après chaque capture, y compris la dernière. Une exécution de 20 images dort donc 60 secondes au total. Chaque capture prend aussi un court instant, si bien que la durée réelle dépasse un peu le total des pauses. La chronologie ci-dessous ne tient pas compte du temps de capture.
Pour fixer une exécution par durée, divisez la durée par l'intervalle. Une exécution de 10 minutes qui prend une image toutes les 5 secondes nécessite 600 divisé par 5, soit 120 images. Réglez le nombre de boucles sur 120 et la pause sur 5 :
for i in {1..120}; do
screencapture -x -m "$out/frame-$(printf %04d $i).png"
sleep 5
done
Si une capture prend 0,2 seconde, les 120 captures ajoutent 24 secondes, donc l'exécution dure environ 624 secondes. Mesurez le temps de capture sur votre Mac avec time screencapture -x ~/Desktop/timing.png, puis supprimez le fichier de test.
Nommer les images pour une recherche ultérieure
Un nom qui inclut l'étape rend les images plus faciles à retrouver après l'exécution. Parcourez une liste de noms d'étapes dans le même dossier $out :
steps=(login dashboard export)
for s in $steps; do
screencapture -x -m "$out/$s.png"
sleep 2
done
Gardez aussi un dossier par tâche. L'horodatage du nom de dossier indique le début de l'exécution, et le nom de la tâche indique ce qu'elle couvre. Un dossier tel que Captures/onboarding-run-20261103-101500 sépare deux exécutions du même jour et permet de retrouver une exécution sans ouvrir chaque fichier.
Les noms sans espaces évitent les problèmes de guillemets dans le shell. Conservez les numéros complétés par des zéros lorsque l'ordre de capture importe et que les noms d'étapes n'importent pas.
Arrêter la boucle proprement
Control+C arrête la boucle immédiatement. Les images déjà enregistrées restent dans le dossier, mais le script n'affiche aucun résumé. Ajoutez un trap au-dessus de la boucle pour afficher le nombre d'images lorsque l'interruption survient :
trap 'echo "Stopped after $i frames"; exit 0' INT
INT est le signal envoyé par Control+C. Le trap lit $i au moment où le signal arrive, il indique donc le numéro de la dernière image commencée. Une exécution arrêtée pendant une capture peut laisser le dernier fichier incomplet. Supprimez ce fichier avant d'ouvrir le dossier dans un outil PDF, ou comparez sa taille avec celle des images précédentes.
Capturer une zone fixe de manière répétée
Ajoutez -R x,y,w,h pour capturer un rectangle. Les valeurs sont exprimées en points, mesurés depuis le coin supérieur gauche de l'écran principal :
screencapture -x -R 200,120,1200,800 "$out/frame-$(printf %04d $i).png"
Pour trouver les coordonnées, appuyez sur Shift+Command+4 et observez les nombres près du réticule, aux coins supérieur gauche et inférieur droit de la zone. La largeur correspond au bord droit moins le bord gauche, et la hauteur au bord inférieur moins le bord supérieur. Le tableau ci-dessous répertorie les touches utilisées autour de cette étape.
Un rectangle fixe ne suit pas une fenêtre. Si la fenêtre se déplace ou si la disposition des écrans change pendant l'exécution, les images suivantes capturent la mauvaise zone.
Convertir les points en pixels sur les écrans Retina
Les valeurs -R sont en points, mais le fichier enregistré contient des pixels. Sur un écran Retina, chaque point couvre deux pixels dans chaque direction. Un rectangle de 1200 par 800 points est donc enregistré en image de 2400 par 1600 pixels. Les réglages de mise à l'échelle modifient ce facteur. Mesurez donc une image enregistrée au lieu de supposer une valeur :
sips -g pixelWidth -g pixelHeight "$out/frame-0001.png"
La comparaison ci-dessous montre la taille enregistrée de deux zones sur un écran 2x et sur un écran 1x.
Un recadrage en pixels ou une spécification de design nécessite des valeurs en pixels. Une capture planifiée en points nécessite des valeurs en points dans -R. Mélanger les deux unités produit des images plus grandes ou plus petites que la mise en page prévue.
Enregistrer des fichiers JPG au lieu de PNG
Utilisez -t jpg et changez l'extension :
screencapture -x -t jpg "$out/frame-$(printf %04d $i).jpg"
PNG conserve des bords de texte nets et constitue la valeur par défaut la plus sûre pour les interfaces. Les fichiers JPG sont plus petits, ce qui compte pour les exécutions de centaines d'images. La commande accepte aussi pdf et tiff.
Choisir le format pour une exécution longue
Une exécution de 500 images produit 500 fichiers dans le format choisi. Choisissez JPG lorsque la taille du dossier compte plus que la netteté des bords du texte. Choisissez PNG lorsqu'un lecteur doit zoomer sur de petites étiquettes. Passez -t png explicitement dans les scripts pour que le format soit visible dans le code.
Mesurez une image de chaque format avant une exécution longue. Exécutez du -h sur le fichier, puis multipliez la taille par le nombre d'images pour estimer la taille du dossier.
Appuyer sur une touche entre les captures sans dépasser
Parcourir des diapositives ou un lecteur nécessite un appui sur une touche après chaque capture. osascript envoie une touche via System Events. Le code de touche 124 correspond à la flèche droite :
pages=30
for i in {1..$pages}; do
screencapture -x -m "$out/page-$(printf %04d $i).png"
if (( i < pages )); then
osascript -e 'tell application "System Events" to key code 124'
sleep 1.5
fi
done
Trois détails évitent les pages manquées ou en trop. La capture s'exécute en premier, donc la page de départ est enregistrée. Le if ignore l'appui sur la touche après la dernière capture, afin que le lecteur ne passe pas au-delà de la dernière page. La pause sleep après la touche laisse à la page suivante le temps de s'afficher avant la capture suivante.
System Events envoie les touches à l'application au premier plan. Cliquez donc sur la fenêtre du lecteur avant le début de la boucle, ou ajoutez un sleep 5 au début pour changer d'application. Terminal a besoin de l'autorisation Accessibility pour envoyer des événements clavier.
Codes de touches pour tourner les pages
osascript identifie une touche par son code de touche virtuel macOS, et non par le caractère qu'elle saisit. Ces codes couvrent les touches les plus utilisées pour tourner les pages et confirmer :
| Touche | Code |
|---|---|
| Flèche gauche | 123 |
| Flèche droite | 124 |
| Flèche bas | 125 |
| Flèche haut | 126 |
| Espace | 49 |
| Retour | 36 |
Certains lecteurs ne tournent les pages que lorsqu'un contrôle précis a le focus. Testez la touche sur une exécution de 3 pages avant une exécution longue, et vérifiez que chaque page change.
Ordonner la capture et l'appui sur la touche
L'ordre à l'intérieur de la boucle détermine la page affichée par chaque image. La boucle de cette section capture d'abord et appuie sur la touche ensuite. Le schéma ci-dessous montre un cycle.
Si la touche venait en premier, chaque image montrerait la page suivant celle affichée, et la première page ne serait jamais enregistrée.
La pause après la touche fixe le rythme. Une page affichée à partir d'un fichier local se termine généralement pendant la pause de 1,5 seconde utilisée dans cet article. Un lecteur qui charge des images par le réseau peut avoir besoin de 3 à 5 secondes pour certaines pages. Vérifiez la page la plus lente du document, et non la première, car une page pleine d'images fixe le délai minimal.
Deux vérifications détectent la plupart des erreurs de changement de page avant une exécution longue :
- Exécutez 3 pages et ouvrez les 3 images. Chaque image doit montrer une page différente, dans l'ordre.
- Comparez la dernière image à la dernière page du document. Si la dernière image répète une page, la boucle a appuyé sur la touche une fois de trop, ou la pause était trop courte.
Garder une longue exécution éveillée
Si l'écran se met en veille, les images sont noires. Placez le script dans caffeinate, qui maintient une assertion de veille tant que le script s'exécute :
caffeinate -di ./capture.sh
L'option -d maintient l'écran allumé et -i empêche la mise en veille due à l'inactivité. caffeinate garde le Mac éveillé, mais ne garde pas l'écran déverrouillé. Les images prises pendant que l'écran est verrouillé montrent l'écran de verrouillage, et non l'application. Pour un MacBook qui reste éveillé capot fermé sur secteur, ajoutez -s. La page de manuel de caffeinate indique que cette option ne s'applique que lorsque le Mac fonctionne sur secteur.
Résoudre une panne de boucle screencapture
| Symptôme | Cause | Correction |
|---|---|---|
| Seulement le fond d'écran et la barre de menus | Autorisation d'enregistrement de l'écran manquante | Autorisez l'application de terminal, puis rouvrez-la |
| "No such file or directory" | Dossier de sortie absent | Exécutez mkdir -p avant la boucle |
| Deux images ou une erreur par capture | Plusieurs écrans, un seul nom de fichier | Ajoutez -m ou -D 1 |
| Images noires | Écran en veille | Lancez le script avec caffeinate -di |
| Pages sautées | Touche envoyée avant le rendu de la page | Augmentez la pause sleep après la touche |
| Appuis sur les touches ignorés | Autorisation Accessibility manquante ou mauvaise application au premier plan | Autorisez l'application de terminal, cliquez sur la fenêtre cible |
Vérifier le dossier de sortie
Une exécution terminée laisse un dossier par exécution, avec des noms d'images qui se trient dans l'ordre de capture. L'arborescence ci-dessous montre une exécution démarrée à 10:15:00 le 3 novembre 2026 avec quatre images. Les images 5 à 20 suivent le même schéma.
Diagnostiquer des images identiques
Lorsque toutes les images montrent le même contenu, vérifiez ces causes dans l'ordre :
- La cible n'a pas changé entre les captures. La boucle enregistre ce qui est affiché à l'écran. Une page qui ne tourne jamais, ou une boîte de dialogue qui reste ouverte, produit des images identiques. Ajoutez un appui sur une touche ou une attente plus longue.
- Une autre fenêtre recouvre la cible.
-Ret-mcapturent la zone de l'écran, et non la fenêtre située derrière. Placez la fenêtre cible au premier plan et gardez-la là pendant toute l'exécution. - L'intervalle est plus court que le changement. Une barre de progression qui bouge toutes les 10 secondes paraît figée avec un intervalle de 1 seconde. Vérifiez les images avec un intervalle plus large avant de modifier la boucle.
Comparez les fichiers de la première et de la dernière image avec shasum -a 256 si vous ne savez pas si deux fichiers diffèrent. Des empreintes identiques confirment des pixels identiques.
Comptez les fichiers après chaque exécution. Une exécution de 20 images doit laisser 20 fichiers. Un nombre inférieur signifie que la boucle s'est arrêtée tôt, ou qu'une capture a échoué avec le message affiché dans le terminal.
Quand un script n'est plus la solution simple
Une boucle shell convient à une tâche fixe qui s'exécute toujours de la même façon. Chaque nouvelle exigence ajoute du code : arrêter à une heure donnée, mettre en pause et reprendre, choisir une fenêtre par son nom (l'option -l demande un identifiant de fenêtre que macOS ne liste pas pour vous), ou produire un PDF consultable.
Auto Capture de Temposhot transforme ces exigences en réglages. Vous choisissez Screens, Windows ou Custom Area à partir de vignettes, vous définissez Screenshots, Duration ou End time comme condition d'arrêt, et vous enregistrez une touche dans le champ Key press. Une barre d'outils flottante met en pause, reprend et termine l'exécution. Les exports couvrent PNG, JPG, ZIP, PDF consultable, MP4 et GIF. Le format WebP n'apparaît que lorsque le Mac dispose d'un encodeur WebP.
Associer chaque choix du script à un réglage
Chaque décision du script a un réglage correspondant dans Auto Capture. Les étapes ci-dessous reconstruisent la boucle de changement de page dans Temposhot :
Avant de changer d'outil, décidez quelle partie du script vous est encore utile. Auto Capture couvre les cas courants : une série temporisée d'un écran, d'une fenêtre ou d'un rectangle, avec un appui sur une touche facultatif entre les images. Il n'exécute pas de commandes shell arbitraires entre les captures. Un script qui contient une logique personnalisée, comme renommer des fichiers à partir d'un tableur, reste donc dans le shell.
La correspondance pour les exemples de cet article :
- La boucle de 20 images avec une pause de 3 secondes devient une condition d'arrêt Screenshots de 20 et un intervalle de 3 secondes.
- L'exécution de 10 minutes à une image toutes les 5 secondes devient une condition d'arrêt Duration de 10 minutes et un intervalle de 5 secondes. Duration et End time exigent un intervalle supérieur à zéro.
- La boucle de changement de page devient un Key press avec la flèche droite et un intervalle de 1,5 seconde. Key press est une fonctionnalité Pro et nécessite l'autorisation Accessibility.
- Le rectangle fixe devient Custom Area. Faites glisser le rectangle jusqu'à ce que la superposition affiche la largeur et la hauteur souhaitées.
Le forfait gratuit limite le nombre de captures d'écran par session. Une exécution qui nécessite plus d'images requiert Temposhot Pro.
Deux réglages diffèrent souvent des valeurs par défaut du script. Le compte à rebours est de 3 secondes par défaut, ce qui vous laisse le temps de placer la page dans son état de départ. Réglez-le sur 5 ou 10 secondes lorsque la cible a besoin de plus de temps pour se charger après que vous avez cliqué sur Start. L'intervalle est de 1 seconde par défaut. Définissez-le donc explicitement pour chaque exécution.
Garder le script pour les tâches fixes
Utilisez le script lorsque la tâche est fixe et que la même commande s'exécute sur chaque machine, par exemple une capture nocturne d'un tableau de bord local lancée par une tâche cron. Un script se gère aussi facilement avec un contrôle de version, ce qui enregistre chaque modification du timing ou de la zone.
Une session Temposhot convient à une tâche exécutée par une personne qui surveille l'écran, fait une pause pour poser une question et veut un résultat dans l'application. Les deux peuvent produire les mêmes images. La différence tient à la personne qui maintient les instructions : un script vit dans un fichier, tandis qu'une configuration Auto Capture vit dans l'application et suit les valeurs par défaut enregistrées.
FAQ
Où screencapture enregistre-t-il les fichiers ?
Il enregistre dans le chemin passé en dernier argument. Avec -c, il copie l'image dans le presse-papiers à la place.
screencapture peut-il inclure le curseur ?
Oui. Ajoutez -C pour inclure le pointeur. Cela ne fonctionne que pour les captures non interactives, ce qui couvre toutes les commandes de cet article.
Comment ajouter un délai avant la première capture ?
Utilisez -T 5 pour un délai de 5 secondes sur une seule capture, ou placez sleep 5 avant la boucle.
Puis-je transformer les images en PDF ou en vidéo ?
Oui. Image to PDF combine les images en un seul PDF dans l'ordre des noms, et Images to Video les transforme en vidéo. Les deux fonctionnent dans le navigateur et conservent les fichiers sur votre Mac.
screencapture peut-il capturer une seule fenêtre ?
Oui, avec -l et un identifiant numérique de fenêtre. Terminal n'affiche pas les identifiants de fenêtre. L'identifiant doit donc venir d'un autre outil. L'onglet Windows d'Auto Capture sélectionne une fenêtre à partir de vignettes à la place.
Pourquoi l'ordre est-il faux après l'image 9999 ?
Le format %04d affiche au moins quatre chiffres. À partir de l'image 10000, des noms tels que frame-10000.png se trient avant frame-9999.png dans l'ordre des noms. Utilisez %05d pour les exécutions de plus de 9999 images.
Les images sont-elles conservées après Control+C ?
Oui. Les images enregistrées avant l'interruption restent dans le dossier. Le trap de la section ci-dessus affiche le nombre d'images lorsque le script s'arrête.
Transformer des captures répétables en travail fini
Lorsque le script dépasse une zone fixe et un nombre fixe d'images, essayez plutôt Auto Capture. Le guide de capture automatisée couvre toutes les options, et la page de téléchargement propose la version Apple Silicon.
command-linescreencapturezshscreenshot-automation
Termes utilisés ici : retina screenshot, screenshot automation, screenshot timer
Transformez vos captures d'écran répétitives en résultats prêts à l'emploi
Temposhot capture l'écran à intervalles réguliers ou à chaque clic et exporte le résultat au format PDF, image, ZIP ou MP4.
Articles connexes
- Comment prendre des captures d'écran répétées avec Automator sur MacCréez un workflow Automator de captures d'écran avec Take Screenshot et Loop, puis utilisez une action shell lorsque vous avez besoin de fichiers numérotés dans l'ordre.
- Automatiser les captures d'écran avec l'app Shortcuts sur MacUtilisez Shortcuts sur Mac pour prendre des captures à intervalles réguliers, lancer le raccourci à une heure donnée ou à l'ouverture d'une app, et corriger les autorisations de script ou d'enregistrement de l'écran.
- Comment automatiser les captures d'écran sur Mac avec les outils intégrésAutomatisez les captures d'écran sur Mac avec screencapture, Automator ou Shortcuts, avec les autorisations, des boucles sûres et le dépannage.
- Qu'est-ce que l'automatisation des captures d'écran sur Mac ?Ce que signifie l'automatisation des captures d'écran sur Mac, en quoi elle diffère des captures manuelles et de l'enregistrement d'écran, et quand un flux de capture dédié devient utile.