Як я можу вбити конкретне вікно X


9

З огляду на ідентифікатори, створені компанією wmctrl -l, мені хочеться вбити процес, пов'язаний з ідентифікатором вікна.

Як би ти запропонував це зробити?

Відповіді:


10

Крім переліку PID, як описано в інших відповідях Флоріана Діеша та Серга, ви можете скористатися -icопцією, щоб закрити вікно безпосередньо:

$ wmctrl -ic 0x02e00085

3
Якщо процес застряг, він може не помітити, що ви закрили вікно. Вікна вже не буде, але процес все одно буде там і, можливо, споживатиме процесор та оперативну пам’ять.
kasperd

9

Якщо ви використовуєте wmctrl -lpPID, знаходяться в третьому стовпці.

Для заданого ідентифікатора вікна ви можете використовувати

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

(замініть WID на свій ідентифікатор вікна)


Можливо, очищувач замість awk ви можете просто використовуватиcol3 .
Пабло Біанкі

8

wmctrlнасправді є інший прапор -pдля переліку 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

Коли ви знаєте це, це тривіальна вправа витягти PID цього вікна та передати його kill

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

6

Ви також можете використовувати xkill -id [id]. Xkill утиліта працює інакше, ніж інші відповіді - замість закриття вікна або вбити процес безпосередньо, він вказує сервера X , щоб відключити клієнт , який створив вікно. Це, як правило, спричиняє припинення процесу навіть для віддаленого процесу.

Переваги та недоліки кожного підходу:

  • wmctrl -cзакриває вікно "витончено" - так, як якщо б ви самі натиснули кнопку закриття менеджера вікон. Це може не вбити процес і навіть не закрити вікно, якщо програма не хоче, щоб вікно було закрите, або заморожене.

  • Використання pid від wmctrl -lpwith killгарантовано знищить процес, але може зажадати додаткових робіт або взагалі не працювати, якщо процес працює на іншій машині.

  • xkillможе не припинити процес, якщо він призначений для відновлення після збою сервера X або втрати підключення до мережі, але більшість додатків просто вийде з ладу за цих обставин. У будь-якому випадку вікон не буде. І віддалені процеси, і локальні, обробляються однаково.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.