Screencapture утиліти командного рядка стверджує, що здатний захопити одне вікно, не вимагаючи взаємодії, але я не можу зрозуміти, що його передати.
-l<windowid> capture this windowsid
Це не ідентифікатор процесу програми.
Screencapture утиліти командного рядка стверджує, що здатний захопити одне вікно, не вимагаючи взаємодії, але я не можу зрозуміти, що його передати.
-l<windowid> capture this windowsid
Це не ідентифікатор процесу програми.
Відповіді:
Для деяких програм ви можете використовувати AppleScript:
screencapture -l$(osascript -e 'tell app "Safari" to id of window 1') test.png
Хоча він не працює з Chrome .
Ідентифікатори також відображаються в Quartz Debug (доступний на сайті developer.apple.com/downloads ), якщо ви запускаєте defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.

Я написав невелику утиліту командного рядка, щоб отримати ідентифікатор вікна для програм, які не підтримують AppleScript. Отримайте його тут: https://github.com/smokris/GetWindowID
Потім можна зафіксувати певне вікно, вказавши його ім'я та назву вікна:
screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png
(' ./GetWindowID.m: line 4: int main (int argc, char ** argv) '
Makefileа GetWindowID.mпотім запустіть команду make. Він створить двійковий код GetWindowID, який ви можете викликати, використовуючи команду, яку я описав у своїй відповіді.
Я написав утиліту командного рядка, яка завершує роботу, screencaptureі бібліотеку вікон Quartz.
Візьміть це тут: https://github.com/thismachinechills/pyscreencapture
Використовуйте його так:
./screencapture.py Chrome -t Stack Overflow