เมื่อดูที่ภาพหน้าจอของคุณ ฉันเดาว่าคุณกำลังมองหาวิธีที่จะทำให้สำเร็จในไพธอน
รับลำดับ z ของ windows
หากคุณอยู่บน Xคุณสามารถใช้ (ในภาษาใดก็ได้ที่มีผลผูกพันกับ - ) Wnck Wnck ไม่ทำงานบน Wayland แม้ว่า ตัวอย่างด้านล่างแสดงวิธีดำเนินการใน python ลำดับของรายการผลลัพธ์อยู่ในลำดับของหน้าต่าง z-order
โปรดทราบว่าผลลัพธ์ของ Wnck.get_windows_stacked()
ไม่ควรแก้ไข. แน่นอน คุณสามารถทำงานกับข้อมูล ดึงข้อมูลจากนั้น รับลำดับของหน้าต่างและคุณสมบัติของหน้าต่างเหล่านั้น ในตัวอย่างข้อมูล ฉันใช้เพื่อรับ xid และชื่อของหน้าต่างเท่านั้น แต่ เป็นไปได้มาก.
ตัวอย่าง
#!/usr/bin/env python3
นำเข้า GI
gi.require_version("Wnck", "3.0")
จาก gi.repository นำเข้า Wnck
def get_stack():
z_order_list = []
scr = Wnck.Screen.get_default()
# ถ้า Wnck ไม่ได้ถูกเรียกจากภายในลูป Gtk เราต้องการ:
scr.force_update()
สำหรับ w ใน scr.get_windows_stacked():
# เป็นไปได้มากว่าเราใช้งานได้กับหน้าต่างปกติเท่านั้น (ไม่มีแผงหรือเดสก์ท็อป)
ถ้า w.get_window_type() == Wnck.WindowType.NORMAL:
# เพียงเพิ่ม xid และชื่อที่นี่ แต่ทุกอย่างเป็นไปได้
z_order_list.append([w.get_xid(), w.get_name()])
z_order_list.reverse()
ส่งคืน z_order_list
wlist = get_stack()
สำหรับ w ใน wlist:
พิมพ์(w[0], w[1])
ตัวอย่างเอาต์พุต:
92306612 *เชลล์ว่าง 3.8.10*
92274937 zorder.py - /home/jacob/Bureaublad/zorder.py (3.8.10)
96468995 รับคำสั่งของแอปพลิเคชันบน GUI - ถาม Ubuntu - Mozilla Firefox
98568913 ชื่อเรื่อง 1 - LibreOffice Writer
98566678 Rooster Jacob 2021-2022.ods - เครื่องคิดเลข LibreOffice
94371847 หัวข้อ: jacob@jacob-ZN220IC-K:~
โดยที่หน้าต่างแรกคือหน้าต่างล่าสุด เพราะฉันกลับรายการ
โปรดทราบว่า Gdk มีวิธีการคล้ายกัน.