The command line utility screencapture claims to be able to capture a single window without requiring interaction, but I can't figure out what to pass it.
-l<windowid> capture this windowsid
It's not the process id of the the application.
The command line utility screencapture claims to be able to capture a single window without requiring interaction, but I can't figure out what to pass it.
-l<windowid> capture this windowsid
It's not the process id of the the application.
For some applications you can use AppleScript:
screencapture -l$(osascript -e 'tell app "Safari" to id of window 1') test.png
It doesn't work with Chrome though.
The IDs are also shown in Quartz Debug (available from developer.apple.com/downloads) if you run defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true
.
I wrote a little command line utility to retrieve the Window ID for apps that don't support AppleScript. Get it here: https://github.com/smokris/GetWindowID
You can then capture a specific window by specifying its bundle name and window title:
screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png
(' ./GetWindowID.m: line 4:
int main(int argc, char **argv)'
– KingBOB
Sep 6 '13 at 22:25
Makefile
and GetWindowID.m
, then run the command make
. It will produce a binary called GetWindowID
, which you can then invoke using the command I described in my answer.
– smokris
Sep 24 '13 at 4:37
I wrote a command line utility that wraps over screencapture
and the Quartz windowing library.
Grab it here: https://github.com/thismachinechills/pyscreencapture
Use it like this:
./screencapture.py Chrome -t Stack Overflow