Як миттєво закрити всі екземпляри програми?


11

Кіт моєї подруги ходив на моєму ноутбуці, і я її не помічав. Коли я звернувся, щоб перевірити, я бачу, що у мене є 32 вкладки «Менеджер архівів». Як я можу закрити їх усі миттєво, ніби використовуючи Alt+ одразу F4всі.

Відповіді:


14

З командного рядка:

killall file-roller

Ви можете зробити alt + f4, але це потрібно зробити для кожного відкритого менеджера архівів.


21
Хоча деякі можуть стверджувати, що команда "killall" є дещо важкою, ваша все ще є набагато гуманнішим рішенням, ніж kill catдія, яку я збирався запропонувати.
Нік Вайнберг

Я не думаю, що існує простіший спосіб зупинити їх усіх. Багато alt + f4 зробили б це, але це не питання ;-)
Rinzwind

5
@NickWeinberg Я ціную це :)
кіт

5
Я прочитав це запитання і відповів неправильно. Я думав, що це було про те, що кішка закрила всіх, і що ОП не знав, як це зробив кіт. Мене вразило, що кіт зміг написати killall file-roller: D
Віктор Меллгрен

1
чорт @ViktorMellgren перестань змушувати мене розлити каву на екрані
Rinzwind

3

Іншим підходом було б використання wmctrlутиліти (керування Window Manager). Це можна використати, щоб сказати менеджеру вікон, що робить вигляд, що ви натиснули кнопку закриття. Це дозволяє уникнути потенційно важкого характеру 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

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


2
Тож ви очікуєте, що кішка набере щось, на чому варто заощадити?
Rinzwind

0

Ви можете використовувати комбінацію клавіш Ctrl+, Qяка закриє всі відкриті вікна програми Archive Manager.


Ctrl+ QЯрлик часто зустрічається на Ubuntu (і багато інших розподілів, а). Це працює так само з більшістю програм, які я використовував до цього часу. Тобто він закриє всі вікна запущеної програми.


Скасуйте свій голос, оскільки я не можу підтвердити, що Ctrl+Qнасправді це робить. Поки Quitменю закривало всі відкриті вікна програми Archive Manager, клавіша швидкого доступу не робила те саме (принаймні в 14.04).
clearkimura

1
@clearkimura я не можу підтвердити , що це пов'язано з тим , що я використовую гном, або , якщо це з - за версією Ubuntu, але це працює для мене на Ubuntu 17.04 (з гномом) , який використовує Archive Manager версії 3.22.3
Dan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.