¿Cómo encuentro el windowid para pasar a screencapture -l?

26

La captura de pantalla de la utilidad de línea de comandos afirma ser capaz de capturar una sola ventana sin requerir interacción, pero no puedo entender qué pasar.

-l<windowid> capture this windowsid

No es la identificación del proceso de la aplicación.

Gareth Simpson
fuente

Respuestas:

22

Para algunas aplicaciones puede usar AppleScript:

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

Sin embargo, no funciona con Chrome .

Los ID también se muestran en Quartz Debug (disponible en developer.apple.com/downloads ) si ejecuta defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.

Lri
fuente
1
Desafortunadamente, esto no funciona con aplicaciones que no sean Applescriptables como Eclipse o Google Chrome.
CajunLuke
Sí, mi aplicación de destino no es Applescriptable :( Pero gracias de todos modos.
Gareth Simpson
2
Tenga en cuenta que no se garantiza que los identificadores de ventana se correspondan con el identificador de ventana de Quartz, incluso en aplicaciones que son programables.
Chris Page
¿Parece que la depuración de cuarzo ya no existe o se ha renombrado o incluido?
Gman
Quartz Debug se incluye en "Herramientas adicionales para Xcode" disponible en developer.apple.com/download/more .
Nicholas Riley
9

Escribí una pequeña utilidad de línea de comandos para recuperar la ID de ventana para aplicaciones que no son compatibles con AppleScript. Consíguelo aquí: https://github.com/smokris/GetWindowID

Luego puede capturar una ventana específica especificando el nombre del paquete y el título de la ventana:

screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png
smokris
fuente
Hola, estoy tratando de usarlo pero no estoy seguro de lo que estoy haciendo. He descargado el Makefile, GetWindowID.m. Pero cuando ejecuto el comando ./GetWindowID.m me da este error: ./ GetWindowID.m: línea 4: error de sintaxis cerca de token inesperado (' ./GetWindowID.m: line 4: int main (int argc, char ** argv) '
KingBOB
1
@Giorgio: abra una ventana de Terminal y cambie a la carpeta que contiene Makefiley GetWindowID.mluego ejecute el comando make. Producirá un binario llamado GetWindowID, que luego puede invocar usando el comando que describí en mi respuesta.
smokris
6

Escribí una utilidad de línea de comando que se ajusta screencapturey la biblioteca de ventanas Quartz.

Consíguelo aquí: https://github.com/thismachinechills/pyscreencapture

Úselo así:

./screencapture.py Chrome -t Stack Overflow
thismachinechills
fuente
¿Te has perdido la cita doble?
kenorb