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.

Gareth Simpson
la source

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.

Lri
la source
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
smokris
la source
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
6

J'ai écrit un utilitaire de ligne de commande qui s'enroule screencaptureet la bibliothèque de fenêtrage Quartz.

Prenez-le ici: https://github.com/thismachinechills/pyscreencapture

Utilisez-le comme ceci:

./screencapture.py Chrome -t Stack Overflow
thismachinechills
la source
Vous avez manqué le guillemet double?
kenorb