Como localizo o windowid para passar para screencapture -l?

25

O screencapture do utilitário de linha de comando afirma ser capaz de capturar uma única janela sem exigir interação, mas não consigo descobrir o que passar.

-l<windowid> capture this windowsid

Não é o ID do processo do aplicativo.

Gareth Simpson
fonte

Respostas:

21

Para alguns aplicativos, você pode usar AppleScript:

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

Porém, ele não funciona com o Chrome .

Os IDs também são mostrados no Quartz Debug (disponível em developer.apple.com/downloads ) se você executar defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.

Lri
fonte
11
Infelizmente, isso não funciona com aplicativos que não sejam aplicáveis ​​pela Apple, como Eclipse ou Google Chrome.
CajunLuke 16/07/2012
Sim, meu aplicativo de destino não é Applescriptable :( Mas obrigado de qualquer maneira.
Gareth Simpson
2
Observe que não é garantido que os IDs de janela correspondam ao ID da janela Quartz, mesmo em aplicativos que podem ser scripts.
31412 Chris Página
A depuração de quartzo parece não existir mais ou foi renomeada ou empacotada?
Gman
9

Eu escrevi um pequeno utilitário de linha de comando para recuperar o ID da janela para aplicativos que não suportam AppleScript. Obtenha aqui: https://github.com/smokris/GetWindowID

Você pode capturar uma janela específica especificando o nome do pacote e o título da janela:

screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png
smokris
fonte
Oi, estou tentando usá-lo, mas não tenho certeza do que estou fazendo. Eu baixei o Makefile, GetWindowID.m. Mas quando inicio o comando ./GetWindowID.m, ele me dá este erro: ./ GetWindowID.m: linha 4: erro de sintaxe próximo ao token inesperado (' ./GetWindowID.m: line 4: int main (int argc, char ** argv) '
KingBOB
11
@Giorgio: Abra uma janela do Terminal e mude para a pasta que contém Makefilee GetWindowID.m, em seguida, execute o comando make. Ele produzirá um binário chamado GetWindowID, que você poderá chamar usando o comando que descrevi na minha resposta.
smokris
6

Eu escrevi um utilitário de linha de comando que envolve screencapturea biblioteca de janelas de quartzo.

Pegue aqui: https://github.com/thismachinechills/pyscreencapture

Use-o assim:

./screencapture.py Chrome -t Stack Overflow
thismachinechills
fonte
Você perdeu aspas duplas?
Kenorb 17/08/2015