Bagaimana saya bisa membunuh jendela X tertentu


9

Mengingat ID yang dihasilkan oleh wmctrl -l, saya ingin dapat mematikan proses yang terhubung ke ID jendela.

Bagaimana Anda menyarankan untuk melakukannya? '

Jawaban:


10

Selain mendaftarkan PID seperti dijelaskan dalam jawaban lain oleh Florian Diesch dan Serg, Anda dapat menggunakan -icopsi untuk menutup jendela secara langsung:

$ wmctrl -ic 0x02e00085

3
Jika proses macet, mungkin Anda tidak melihat bahwa Anda menutup jendela. Jendela akan hilang, tetapi prosesnya akan tetap ada dan mungkin mengkonsumsi CPU dan RAM.
kasperd

9

Jika Anda menggunakan wmctrl -lpPID ada di kolom ketiga.

Untuk ID jendela tertentu yang dapat Anda gunakan

kill $(wmctrl -lp | awk '/^WID/ {print $3}')

(ganti WID dengan ID jendela Anda)


Mungkin lebih bersih daripada awk yang bisa Anda gunakancol3 .
Pablo Bianchi

8

wmctrlsebenarnya memiliki bendera lain -puntuk daftar PID.

bash-4.3$ wmctrl -lp
0x0380000a  0 4410   eagle Desktop
0x04800006  0 4275   eagle XdndCollectionWindowImp
0x04800009  0 4275   eagle unity-launcher
0x0480000c  0 4275   eagle unity-panel
0x0480000f  0 4275   eagle unity-dash
0x04800010  0 4275   eagle Hud

Setelah Anda mengetahui hal ini, ini adalah tindakan sepele untuk mengekstraksi PID jendela itu dan meneruskannya kill

wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill

6

Anda juga bisa menggunakan xkill -id [id]. The xkill utilitas bekerja secara berbeda dari jawaban yang lain - bukan menutup jendela atau membunuh proses secara langsung, itu menginstruksikan X server untuk memutuskan klien yang menciptakan jendela. Ini biasanya memiliki efek menyebabkan proses berhenti bahkan untuk proses jarak jauh.

Keuntungan dan kerugian dari setiap pendekatan:

  • wmctrl -cmenutup jendela "dengan anggun" - seolah-olah Anda telah mengklik sendiri tombol tutup pengelola jendela. Ini mungkin tidak mematikan proses, dan bahkan mungkin tidak menutup jendela, jika aplikasi tidak ingin jendela ditutup, atau dibekukan.

  • Menggunakan pid dari wmctrl -lpdengan killdijamin untuk mematikan proses, tetapi mungkin memerlukan kerja ekstra atau tidak bekerja sama sekali jika proses tersebut dapat berjalan pada mesin yang berbeda.

  • xkillmungkin tidak menghentikan proses, jika itu dirancang untuk dapat pulih dari crash server X atau kehilangan konektivitas jaringan, tetapi sebagian besar aplikasi hanya akan crash dalam keadaan ini. Bagaimanapun, windows akan hilang. Dan proses jarak jauh dan lokal ditangani secara identik.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.