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? '

pengguna123456
sumber

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
Nykakin
sumber
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)

Florian Diesch
sumber
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
Sergiy Kolodyazhnyy
sumber
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.

Random832
sumber
1

gunakan xkill. Cukup ketik xkillterminal Anda dan klik pada jendela yang diperlukan.

xkill

Abhishek Dhanraj Shahdeo
sumber