ฉันคิดว่า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)