До тех пор, как я помню, это было вызвано системным приглашением.
Часть перед @ является именем пользователя, частью после имени хоста.
Если вы используете wmctrl -lp, идентификаторы PID находятся в третьем столбце.
Для данного идентификатора окна вы можете использовать
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(замените WID своим идентификатором окна)
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
Вы также можете использовать xkill -id [id]. Утилита xkill работает иначе, чем другие ответы - вместо того, чтобы закрывать окно или убивать процесс напрямую, он инструктирует X-сервер отключить клиент, создавший окно. Обычно это приводит к завершению процесса даже для удаленного процесса.
Преимущества и недостатки для каждого подхода:
wmctrl -c закрывает окно «изящно» - как будто вы сами нажали кнопку закрытия окна. Это может не убить процесс, и он может даже не закрыть окно, если приложение не хочет, чтобы окно было закрыто или было заморожено. Использование pid из wmctrl -lp с kill гарантировано, чтобы убить процесс, но может потребоваться дополнительная работа или вообще не работать, если процесс может работать на другой машине. xkill не может прекратить процесс, если он предназначен для восстановления после сбоя X-сервера или потери сетевого подключения, но большинство приложений просто сбой при этих обстоятельствах. В любом случае, окон не будет. И удаленные процессы и локальные обрабатываются одинаково.использовать xkill. Просто введите xkill в свой терминал и щелкните нужное окно.
xkill