Bagaimana cara menemukan windowid untuk diteruskan ke screencapture -l?

26

Screencapture utilitas baris perintah mengklaim dapat menangkap satu jendela tanpa memerlukan interaksi, tapi saya tidak tahu apa yang harus dilewati.

-l<windowid> capture this windowsid

Ini bukan id proses aplikasi.

Gareth Simpson
sumber

Jawaban:

22

Untuk beberapa aplikasi, Anda dapat menggunakan AppleScript:

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

Itu tidak bekerja dengan Chrome .

ID-nya juga ditampilkan di Quartz Debug (tersedia dari developer.apple.com/downloads ) jika Anda menjalankannya defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.

Lri
sumber
1
Sayangnya, ini tidak berfungsi dengan aplikasi yang tidak dapat diaplikasikan seperti Eclipse atau Google Chrome.
CajunLuke
Ya, aplikasi target saya tidak Applescriptable :( Tapi terima kasih.
Gareth Simpson
2
Perhatikan bahwa id jendela tidak dijamin sesuai dengan id jendela Kuarsa bahkan dalam aplikasi yang dapat skrip.
Chris Page
Debug kuarsa tampaknya tidak ada lagi atau telah diubah namanya atau dibundel?
GM
Debug Kuarsa termasuk dalam "Alat Tambahan untuk Xcode" yang tersedia di developer.apple.com/download/more .
Nicholas Riley
9

Saya menulis sedikit utilitas baris perintah untuk mengambil Window ID untuk aplikasi yang tidak mendukung AppleScript. Dapatkan di sini: https://github.com/smokris/GetWindowID

Anda kemudian dapat menangkap jendela tertentu dengan menentukan nama bundel dan judul jendela:

screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png
smokris
sumber
Hai, saya mencoba menggunakannya tetapi saya tidak yakin dengan apa yang saya lakukan. Saya telah mengunduh Makefile, GetWindowID.m. Tetapi ketika saya meluncurkan perintah ./GetWindowID.m itu memberi saya kesalahan ini: ./ GetWindowID.m: baris 4: kesalahan sintaks dekat token (' ./GetWindowID.m: line 4: int tak terduga utama (int argc, char ** argv) '
KingBOB
1
@Iorgio: Buka jendela Terminal dan ubah ke folder yang berisi Makefiledan GetWindowID.m, kemudian jalankan perintah make. Ini akan menghasilkan biner bernama GetWindowID, yang kemudian Anda dapat memanggil menggunakan perintah yang saya jelaskan dalam jawaban saya.
smokris
6

Saya menulis sebuah utilitas baris perintah yang membungkus screencapturedan perpustakaan windowing Quartz.

Raih di sini: https://github.com/thismachinechills/pyscreencapture

Gunakan seperti ini:

./screencapture.py Chrome -t Stack Overflow
mesin mesin ini
sumber
Apakah Anda melewatkan penawaran ganda?
kenorb