Làm thế nào tôi có thể giết một cửa sổ X cụ thể


9

ID được tạo bởi wmctrl -l, tôi muốn có thể giết quá trình được liên kết với ID cửa sổ.

Làm thế nào bạn sẽ đề nghị để làm điều đó? '

Câu trả lời:


10

Bên cạnh việc liệt kê PID như được mô tả trong các câu trả lời khác của Florian Diesch và Serg, bạn có thể sử dụng -ictùy chọn để đóng cửa sổ trực tiếp:

$ wmctrl -ic 0x02e00085

3
Nếu quá trình bị kẹt, nó có thể không nhận thấy rằng bạn đã đóng cửa sổ. Cửa sổ sẽ biến mất, nhưng quá trình vẫn sẽ ở đó và có thể tiêu tốn CPU và RAM.
kasperd

9

Nếu bạn sử dụng wmctrl -lpcác PID nằm trong cột thứ ba.

Đối với một ID cửa sổ nhất định, bạn có thể sử dụng

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

(thay thế WID bằng ID cửa sổ của bạn)


Có lẽ sạch hơn thay vì awk bạn chỉ có thể sử dụngcol3 .
Pablo Bianchi

8

wmctrlthực sự có một cờ khác -pđể liệt kê 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

Một khi bạn biết điều này, đó là một bài tập nhỏ để trích xuất PID của cửa sổ đó và chuyển nó tới kill

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

6

Bạn cũng có thể sử dụng xkill -id [id]. Các xkill tiện ích công trình khác nhau từ các câu trả lời khác - chứ không phải là đóng cửa sổ hoặc giết chết quá trình trực tiếp, nó chỉ thị các máy chủ X để ngắt kết nối khách hàng đã tạo ra cửa sổ. Điều này thường có tác dụng làm cho quá trình chấm dứt ngay cả đối với một quy trình từ xa.

Ưu điểm và nhược điểm của từng phương pháp:

  • wmctrl -cđóng một cửa sổ "duyên dáng" - như thể bạn đã tự bấm vào nút đóng của người quản lý cửa sổ. Điều này có thể không giết chết quá trình và thậm chí có thể không đóng cửa sổ, nếu ứng dụng không muốn cửa sổ bị đóng hoặc bị đóng băng.

  • Sử dụng pid từ wmctrl -lpvới killđược đảm bảo để giết quá trình, nhưng có thể yêu cầu thêm công việc hoặc hoàn toàn không hoạt động nếu quá trình có thể đang chạy trên một máy khác.

  • xkillcó thể không chấm dứt quá trình, nếu nó được thiết kế để có thể phục hồi sau sự cố máy chủ X hoặc mất kết nối mạng, nhưng hầu hết các ứng dụng sẽ đơn giản gặp sự cố trong những trường hợp này. Trong mọi trường hợp, các cửa sổ sẽ biến mất. Và các quy trình từ xa và các quy trình địa phương được xử lý giống hệt nhau.


1

sử dụng xkill. Chỉ cần gõ xkillvào thiết bị đầu cuối của bạn và bấm vào cửa sổ yêu cầu.

xkill

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.