Как закрыть все экземпляры программы немедленно?

Кошка моей подруги шла на моем ноутбуке, и я не заметил ее. Когда я обратился к проверке, я вижу, что у меня есть 32 вкладки "Archive Manager". Как я могу закрыть их всех немедленно, как будто с помощью Alt+F4 на всех них сразу.

11
задан 24 April 2017 в 08:12

3 ответа

Из командной строки:

killall file-roller
<час>

можно сделать alt+f4, но необходимо сделать это для каждого менеджера архива, который был открыт.

14
ответ дан 23 November 2019 в 03:59

Другой подход должен был бы использовать wmctrl утилита (Управление менеджером окон). Это может использоваться, чтобы сказать менеджеру окон притворяться нажатие близкой кнопки. Это избегает потенциально властной природы killall; например, некоторые программы с несохраненным документом сразу выйдут, когда они будут уничтожены (даже мягко), в то время как нажатие близкой кнопки поднимает, "Вы хотите сохранить?" подсказка.

основная команда wmctrl -c WINDOWTITLE, так в этом случае wmctrl -c "Archive Manager" (предположение, что она не имеет никакого открытого файла: это изменяет заголовок). К сожалению, это только закрывается по одному, таким образом, мы должны сделать больше для закрытия всех их.

wmctrl успех возвратов, если это находит соответствие, таким образом, мы можем циклично выполниться, пока это не перестало работать:

while wmctrl -c "Archive Manager"; do sleep 0.1; done

Это всегда выбирает первое окно, которое это находит, таким образом, мы должны спать некоторое время, чтобы не непрерывно отправлять поток близких команд к первому окну, это уже занято, закрываясь - который может вызвать ошибку, которая останавливает цикл.

Это просто и обычно работает, но сон количества времени набора и надежда, которую закрывает окно, прежде чем мы попробуем еще раз, являются грязным и медленным способом избежать ошибки. То, что мы действительно хотим сделать, должно сразу отправить одно сообщение о закрытии в каждое окно соответствия.

Мы можем найти все открытые окна с wmctrl -l. Это перечисляет числовой идентификатор окна, который мы можем использовать для идентификации каждого окна индивидуально, даже если у них всех есть тот же заголовок. Затем мы должны отфильтровать только к окнам соответствия (эти grep команда), вытащить просто идентификатор окна (эти cut команда) и вызов wmctrl -i -c для каждого. Эти -i необходим для соответствия идентификатору окна вместо заголовка окна.

for w in $(wmctrl -l | grep "Archive Manager" | cut -d" " -f1); do
    wmctrl -i -c $w
done

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

3
ответ дан 23 November 2019 в 03:59

Можно использовать сочетание клавиш Ctrl + Q , которое закроет все открытые окна менеджера Архива.

<час>

Ctrl + Q ярлык распространен на Ubuntu (и много других дистрибутивов также). Это работает то же с большинством приложений, которые я использовал к настоящему времени. Таким образом, это закроет все окна запущенного приложения.

0
ответ дан 23 November 2019 в 03:59

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

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