39 votes

Comment trouver le windowid à passer à screencapture -l ?

L'utilitaire de ligne de commande screencapture prétend pouvoir capturer une seule fenêtre sans nécessiter d'interaction, mais je n'arrive pas à trouver ce qu'il faut lui passer.

-l<windowid> capture this windowsid

Ce n'est pas l'identifiant du processus de l'application.

32voto

Fuzzy Purple Monkey Points 702

Pour certaines applications, vous pouvez utiliser AppleScript :

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

Il ne fonctionne pas avec Chrome cependant.

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

15voto

smokris Points 634

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

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

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

8voto

thismachine Points 71

J'ai écrit un utilitaire en ligne de commande qui recouvre screencapture et la bibliothèque de fenêtrage Quartz.

Attrapez-le ici : https://github.com/alexdelorenzo/screenshot

Utilisez-le comme ça :

screenshot Chrome -t "Stack Overflow"

2voto

V.S. Points 101

L'ID de la fenêtre ne semble pas être exposé de manière générale à AppleScript. Cependant, les géométries de la fenêtre sont exposés. Ainsi, au lieu d'utiliser screencapture -l vous pouvez utiliser screencapture -R x,y,w,h pour capturer la partie spécifique de l'écran couverte par la fenêtre cible. Avec AppleScript, le processus peut être sélectionné par le PID Unix comme propriété "unix id".

En supposant que le processus n'a qu'une seule fenêtre et que votre PID est en $PID :

screencapture -R \
`osascript -e 'tell application "System Events" to get { position, size } of first window of (first process whose unix id is '$PID')' | tr -d ' '` \
window.png

Si le processus a plusieurs fenêtres, vous devez sélectionner par le titre de la fenêtre cible :

screencapture -R \
`osascript -e 'tell application "System Events" to get { position, size } of (first window whose title is "My window titlebar text") of (first process whose unix id is '$PID')' | tr -d ' '` \
window.png

Astuce : Vous pouvez lister les propriétés sélectionnables de n'importe quel objet avec get properties : osascript -e 'tell application "System Events" to get properties of first process whose unix id is '$PID

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X