Как я могу убить конкретное окно X

До тех пор, как я помню, это было вызвано системным приглашением.

Часть перед @ является именем пользователя, частью после имени хоста.

1
задан 5 October 2016 в 12:31

4 ответа

Если вы используете wmctrl -lp, идентификаторы PID находятся в третьем столбце.

Для данного идентификатора окна вы можете использовать

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

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

9
ответ дан 23 May 2018 в 05:29

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
8
ответ дан 23 May 2018 в 05:29

Вы также можете использовать xkill -id [id]. Утилита xkill работает иначе, чем другие ответы - вместо того, чтобы закрывать окно или убивать процесс напрямую, он инструктирует X-сервер отключить клиент, создавший окно. Обычно это приводит к завершению процесса даже для удаленного процесса.

Преимущества и недостатки для каждого подхода:

wmctrl -c закрывает окно «изящно» - как будто вы сами нажали кнопку закрытия окна. Это может не убить процесс, и он может даже не закрыть окно, если приложение не хочет, чтобы окно было закрыто или было заморожено. Использование pid из wmctrl -lp с kill гарантировано, чтобы убить процесс, но может потребоваться дополнительная работа или вообще не работать, если процесс может работать на другой машине. xkill не может прекратить процесс, если он предназначен для восстановления после сбоя X-сервера или потери сетевого подключения, но большинство приложений просто сбой при этих обстоятельствах. В любом случае, окон не будет. И удаленные процессы и локальные обрабатываются одинаково.
6
ответ дан 23 May 2018 в 05:29

использовать xkill. Просто введите xkill в свой терминал и щелкните нужное окно.

xkill
1
ответ дан 23 May 2018 в 05:29

Другие вопросы по тегам:

Похожие вопросы: