Comment puis-je trouver l'id de la fenêtre pour passer à screencapture -l?


26

L'utilitaire de ligne de commande screencapture prétend être capable de capturer une seule fenêtre sans nécessiter d'interaction, mais je ne sais pas quoi passer.

-l<windowid> capture this windowsid

Ce n'est pas l'ID de processus de l'application.

Réponses:


22

Pour certaines applications, vous pouvez utiliser AppleScript:

screencapture -l$(osascript -e 'tell app "Safari" to id of window 1') test.png

Cependant, cela ne fonctionne pas avec Chrome .

Les ID sont également affichés dans Quartz Debug (disponible sur developer.apple.com/downloads ) si vous exécutez defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.


1
Malheureusement, cela ne fonctionne pas avec des applications non applescriptibles comme Eclipse ou Google Chrome.
CajunLuke

Oui, mon application cible n'est pas Applescriptable :( Mais merci quand même.
Gareth Simpson

2
Notez que les identifiants de fenêtre ne sont pas garantis pour correspondre à l'identifiant de fenêtre Quartz même dans les applications scriptables.
Chris Page

Le débogage de quartz ne semble plus exister ou bien il a été renommé ou intégré?
gman

Quartz Debug est inclus dans les "Outils supplémentaires pour Xcode" disponibles sur developer.apple.com/download/more .
Nicholas Riley

9

J'ai écrit un petit utilitaire de ligne de commande pour récupérer l'ID de fenêtre pour les applications qui ne prennent pas en charge AppleScript. Obtenez-le ici: https://github.com/smokris/GetWindowID

Vous pouvez ensuite capturer une fenêtre spécifique en spécifiant son nom de bundle et son titre:

screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png

Salut, j'essaie de l'utiliser mais je ne suis pas sûr de ce que je fais. J'ai téléchargé le Makefile, GetWindowID.m. Mais lorsque je lance la commande ./GetWindowID.m cela me donne cette erreur: ./ GetWindowID.m: ligne 4: erreur de syntaxe près du token inattendu (' ./GetWindowID.m: line 4: int main (int argc, char ** argv) '
KingBOB

1
@Giorgio: Ouvrez une fenêtre de terminal et accédez au dossier qui contient Makefileet GetWindowID.m, puis exécutez la commande make. Il produira un binaire appelé GetWindowID, que vous pourrez ensuite invoquer en utilisant la commande que j'ai décrite dans ma réponse.
smokris

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.