Cara mengidentifikasi jendela dengan mengklik di Wayland

15

Saya ingin mengidentifikasi proses yang dimiliki jendela di Wayland. Apakah ada sesuatu seperti xpropuntuk X yang memungkinkan pengguna untuk memilih jendela dengan mengklik dan menampilkan semua detail jendela, termasuk PID?

czerny
sumber
Saya ragu bahwa ada atau akan pernah ada perintah seperti xprop. Salah satu tujuan utama Wayland adalah membatasi akses ke jendela proses lain.
mviereck
@mviereck Tentunya superuser bisa melihat informasi jendela, bahkan di Wayland?
Nathaniel M. Beaver
@bariumbitmap: Hanya jika komposer memberikan informasi ini di luar ingatannya sendiri, misalnya dalam file atau melalui API. Saya tidak mengetahui spesifikasi seperti itu (tetapi mungkin ada, meskipun). Tentu saja, Anda dapat bercabang menjadi seorang komposer seperti Weston dan mengimplementasikannya sendiri, jika Anda tidak memerlukan solusi umum untuk semua kompositor.
mviereck
Kenapa tidak adil xprop? Ini menunjukkan banyak sekali detail melalui jendela melalui XWayland, termasuk _NET_WM_PID(CARDINAL), yang merupakan proses pencetus PID.
istepaniuk

Jawaban:

1

Berita bagus, ada sesuatu seperti ini dibangun di Gnome Shell, dan tidak seperti xpropbekerja dengan Xorg dan Wayland. Pada akhirnya ini bisa jatuh ke ranah perkakas lain jika Anda menggunakan KDE, i3, atau yang lainnya.

Untuk mulai dengan, ketik tombol "ALT + F2" pada keyboard yang akan memunculkan menu seperti ini:

alt ft

Setelah itu muncul, keluarkan perintah lg(untuk "mencari kaca).

Ini kemudian akan memunculkan jendela kaca, dari mana kita dapat mengekstrak informasi jendela. Pilih "jendela" dari sudut kanan atas kaca yang tampak:

bagian jendela

Dari sana, Anda akan melihat daftar jendela, dari mana Anda dapat mengklik nama jendela yang ingin Anda identifikasi.

daftar

Dalam hal ini, saya memilih gedit sebagai contoh:

gedit

Di baris teratas dari output itu Anda mungkin memperhatikan:

Inspecting object: object instance proxy GType: MetaWindowX11 ...`

"GType" akan menjadi salah satu dari MetaWindowX11 atau MetaWindowWayland.

Info ini datang sesuai https://fedoraproject.org/wiki/How_to_debug_Wayland_problems

Saya sudah

Brian Redbeard
sumber
3
Jadi apakah ini memungkinkan untuk mengetahui PID proses menjalankan jendela yang terdaftar?
czerny
0

Ada konsep xdg-foreignekstensi protokol , yang memungkinkan untuk memperoleh pegangan dari wl_surface, yang dibuat oleh klien Wayland lainnya. Memiliki pegangan, Anda dapat memperoleh darinya apa pun yang dapat Anda peroleh dari permukaan klien Anda. Namun, protokol ini masih memiliki batasan:

  • Jelas, itu tidak akan berhasil jika tidak diterapkan pada klien.
  • Ini ditargetkan untuk klien yang saling mengenal , sehingga tidak menyediakan cara untuk memicunya: klien Anda berkomunikasi dengan klien asing dengan cara tertentu, tidak dicakup oleh ekstensi. Kemudian klien asing menerbitkan pegangan untuk klien Anda melalui ekstensi ini.
  • Itu mendapat terlalu banyak kontrol, jika dibandingkan dengan xprop. Sebenarnya, Anda bahkan bisa menggambar di permukaan asing!

Jadi, ini tidak mungkin menjadi cara umum untuk mendapatkan parameter permukaan dari klien mana pun oleh klien mana pun. Tapi jangan kehilangan harapan: ada banyak contoh dalam sejarah teknologi ketika sebuah teknologi, yang awalnya dirancang untuk beberapa tujuan, menjadi banyak digunakan untuk tujuan lain, seperti pemantik api mobil atau API Aksesibilitas di Android. Selain itu, di masa mendatang, mungkin muncul ekstensi protokol yang lebih cocok untuk tugas Anda, karena pasti ada kebutuhan untuk itu (misalnya, untuk pelacak waktu).

bodqhrohro
sumber