ฉันคิดว่าxdotool getactivewindow
เป็นสิ่งที่คุณต้องการ - คุณลองไหม
มันพิมพ์ id หน้าต่าง (จากสแต็กหน้าต่าง) หากไม่มีคำสั่งย่อย xdotool เพิ่มเติมบนบรรทัดคำสั่ง
ในxdotool getactivewindow getwindowpid
ตัวอย่างเช่น getactivewindow
ทำให้ประชาชนในกองหน้าต่างและgetwindowpid
ใช้รหัสนี้เพื่อสอบถาม PID โปรดทราบว่าการรันคำสั่งนั้นในเทอร์มินัลจะส่งคืน ID ของหน้าต่างเทอร์มินัลเสมอเนื่องจากมันทำงานอยู่ เพื่อให้ได้ ID จากหน้าต่างอื่นลองsleep 2s && xdotool getactivewindow
และเลือกหน้าต่างที่น่าสนใจในช่วงเวลาสองวินาที
มีความยุ่งยากเมื่อใช้xdotool
กับเครื่องมืออื่นสำหรับการจัดการหน้าต่าง:
ในขณะที่xdotool
เอาท์พุทใช้ตัวเลขทศนิยมสำหรับ windwo ids เครื่องมืออื่น ๆ ส่วนใหญ่ใช้เลขฐานสิบหกสำหรับเอาท์พุท
ตัวอย่างเช่นหากคุณพบหน้าต่างที่มีxdotool getactivewindow
คุณจะไม่พบผลลัพธ์ในผลลัพธ์ของxwininfo -root -tree
ที่แสดงรายการหน้าต่างทั้งหมด จะต้องมีการแปลงเป็นเลขฐานสิบหกก่อน:
$ xdotool getactivewindow
69206716
$ printf 0x%x 69206716
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
0x42002bc (has no name): ("konsole" "Konsole") 1154x781+0+0 +1289+498
การแปลงทศนิยมเป็นฐานสิบหก:
printf 0x%x 69206716
การแปลงเลขฐานสิบหกเป็นทศนิยม:
printf %i 0x42002bc
xdotool getactivewindow
สั่งและปัญหาคือมันไม่ได้พิมพ์ผลใน terminal มันบันทึกผลลัพธ์เพื่อสแต็กหน้าต่าง คำสั่งนี้พิมพ์ตัวเลขจำนวนหนึ่ง แต่ไม่ใช่ id ของหน้าต่าง (เช่น 35651588)