Mengingat ID yang dihasilkan oleh wmctrl -l
, saya ingin dapat mematikan proses yang terhubung ke ID jendela.
Bagaimana Anda menyarankan untuk melakukannya? '
Mengingat ID yang dihasilkan oleh wmctrl -l
, saya ingin dapat mematikan proses yang terhubung ke ID jendela.
Bagaimana Anda menyarankan untuk melakukannya? '
Jawaban:
Selain mendaftarkan PID seperti dijelaskan dalam jawaban lain oleh Florian Diesch dan Serg, Anda dapat menggunakan -ic
opsi untuk menutup jendela secara langsung:
$ wmctrl -ic 0x02e00085
Jika Anda menggunakan wmctrl -lp
PID 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)
col3
.
wmctrl
sebenarnya memiliki bendera lain -p
untuk 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
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 -c
menutup 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 -lp
dengan kill
dijamin untuk mematikan proses, tetapi mungkin memerlukan kerja ekstra atau tidak bekerja sama sekali jika proses tersebut dapat berjalan pada mesin yang berbeda.
xkill
mungkin 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.
gunakan xkill
. Cukup ketik xkill
terminal Anda dan klik pada jendela yang diperlukan.
xkill