วิธีรับ id หน้าต่างจาก xdotool Window Stack


12

ฉันต้องการไอดีของหน้าต่างที่ทำงานหรือโฟกัสอยู่ ฉันพยายามใช้xdotoolคำสั่ง มีคำสั่งคือ:

xdotool getactivewindow

ผลลัพธ์จะถูกบันทึกในสแต็กหน้าต่าง ฉันต้องการรับ widnow id จากสแต็กหน้าต่างนี้ คำสั่ง

xdotool getactivewindow getwindowpid

ไม่พอใจฉัน ฉันไม่ต้องการรับรหัสหน้าต่างตามรหัสกระบวนการ

คำตอบ:


11

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

ทำไมคุณคิดว่า 35651588 ไม่ใช่รหัสหน้าต่าง
Volker Siegel

ใช่ฉันคิดว่า 35651588 ไม่ใช่รหัสหน้าต่าง คุณสามารถดู windows id โดยคำสั่ง xwininfo เช่นxwininfo -root -tree- คำสั่งนี้พิมพ์ windows และ windows ทั้งหมดมีหมายเลขประเภทอื่น
Mariusz

1
xwininfoแสดง id หน้าต่างเป็นตัวเลขฐานสิบหกและ xdotool แสดงเลขทศนิยม แต่ก็เหมือนกัน
Volker Siegel

คุณพูดถูก 35651588 = 0x2200004 xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
Mariusz

1

คำสั่งนี้ใช้ได้สำหรับฉัน

xdotool key --window "$(xdotool getactivewindow)" F5

xdotool เวอร์ชั่น 3.20160805.1


xdotool getactivewindow key F5ควรสร้างผลลัพธ์เดียวกัน
user3804598
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.