Закрыть активное окно из терминала

Ты знаешь, как это сделать? Я знаю, как сделать это с клавиатуры (Alt + F4), я знаю, как сделать это с помощью мыши (щелкните по X), и я также знаю, что kill X должен завершить процесс с идентификатором X (и killall Y должен убить процесс с именем Y). Но я хочу знать, как убить активное окно из терминала.

Таким образом, из того, что я изложил выше, правильным ответом также будет получение идентификатора активного окна.

Прямо сейчас я реализую эту функцию из xte (имитируя Alt + F4), но я хотел бы знать, есть ли способ, который не подразумевает установку другого приложения. Спасибо всем.

РЕДАКТИРОВАТЬ. Вот полный сценарий. Сначала вы включаете «показывать мышь при нажатии Ctrl», затем вы добавляете этот скрипт в Commands в CompizConfig и привязываете к правому верхнему углу. При прикосновении к верхнему правому углу вокруг мыши отображается небольшое уведомление. Если вы ничего не делаете, активное окно закроется через 1 секунду. Однако, если вы снова дотронетесь до угла в течение второго, активное окно не закроется.

xte 'key Control_R'; if [ -f ~/.fcont ]; then rm -f -r ~/.fcont; else touch ~/.fcont; sleep 1;  if [ -f ~/.fcont ]; then xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2`; rm -f -r ~/.fcont; fi fi

Обратите внимание, что я все еще использую приложение xte, названное ранее, так как на этот вопрос, который я задал некоторое время назад, так и не был получен ответ.

7
задан 13 April 2017 в 15:23

3 ответа

И если Вы хотите стать действительно волосатыми и избежать приложений, которые не установлены по умолчанию:

xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2`

Снова, это, кажется, работает довольно хорошо.

ПРИМЕЧАНИЕ: В случае приблизительно приложения (см. комментарии) это может означать, что все окна для приложения закрываются. gnome-terminal одно такое приложение, но terminator, и xterm не затронуты. Я предположил бы, что это - больше ошибка (возможно, дизайном) с теми приложениями, а не один с моей командой.

5
ответ дан 13 April 2017 в 15:23

Я использовал бы xdotool:

xdotool windowkill `xdotool getactivewindow`

, Кажется, делает задание быстро и бесшумно.

1
ответ дан 13 April 2017 в 15:23

Высокоуровневая "близкая" операция с помощью wmctrl

команда ниже также закрывает в настоящее время активное окно с помощью спецификации EWMH, хотя это делает , требуют установки другой программы, которой Вы, казалось, предпочли избегать.

Специфические особенности

  • Это - высокоуровневая "близкая" операция. Другими словами, это отправляет в приложение то же самое сообщение, прося, чтобы это закрыло окно, которое было бы, отправляют через мышь clic на "близком" гаджете или ключевом ярлыке.
  • Это не делает эмулировал ключевой ярлык, так работы независимо от того, что Ваши ключевые ярлыки или даже если у Вас нет настроенного ярлыка (или вероятно даже не настроенная клавиатура).

В результате это ожидало поведение:

  • Это только закрывает самое окно, которое предназначено а не целое приложение (протестированный с xfce4-терминалом, Хромом, Thunderbird).
  • кроме того, это дает шанс приложению реагировать на близкое событие, как выяснение у подтверждения (подтвержденный с Thunderbird с окном, где почта пишется, и Firefox, спрашивая подтверждение прежде, чем закрыть окно с несколькими открытыми вкладками), или возможно даже проигнорируйте событие.

Ссылка команды

wmctrl -c :ACTIVE:

От домашней страницы проекта wmctrl - инструмент командной строки для взаимодействия с совместимым менеджером по X Window EWMH/NetWM.

-c Закрывают окно корректно.

и

специальная строка ": АКТИВНЫЙ": (без кавычек), может использоваться, чтобы дать wmctrl команду использовать в настоящее время активное окно для действия.

1
ответ дан 13 April 2017 в 15:23

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

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