Я обычно использую одну рабочую область для всех своих окон, но иногда у меня есть слишком много окон, создающих помехи моему рабочему столу, таким образом, я плюнул ими на двух или больше рабочих областях.
Однако, так как я редко использую рабочие области, это регулярно происходит, что, когда я собираюсь выйти из системы или завершить работу моего ПК, я закрываю все программы на видимой рабочей области и забываю о других с последствиями файлов, не сохраняемых и т.д.
Существует ли способ получить предупреждение, что существуют программы, открытые, прежде чем система зарегистрирует меня прочь или закроется? Или там некоторый Gnome является расширением или обходным решением, о котором Вы могли бы думать?
Кредит: Этот ответ основан на сценарии, найденном здесь. Это для x11 систем, не Уэйленда, и требует этого, wmctrl установлены.
Первое изображение показывает Ubuntu 19.04 с несколькими открытыми приложениями и на различных рабочих столах:
Вывод wmctrl -l
в терминале рядом с прикреплением перечисляет восемь открытых приложений на различных рабочих столах.
Сверху донизу:
1 Firefox (больше чем с одной открытой вкладкой)
2 терминала GNOME
3 настройки GNOME
4 Gedit с несохраненным открытым файлом
5 Устройств записи LibreOffice с несохраненным открытым файлом
6 Geany с несохраненным открытым файлом
7 Konsole с man man
выполнение
8 Kate (частично замеченный) с несохраненным открытым файлом
В то время как прикрепление показывает, что несколько приложений открыты независимо от своего местоположения, это - возможные пользователи, возможно, принял решение автоскрыть прикрепление.
При запущении скрипта, который я связал с Ctrl+Super+W, приложения, которые не должны взаимодействовать с пользователем, сразу закрываются. В изображении ниже, были уже закрыты терминал гнома и настройки гнома. Что остается (как замечено в прикреплении), приложения, бывшие нужные в пользователе для принятия решения.
Следующее изображение показывает стопку собственных диалоговых окон для открытых приложений, разрешающих пользователям решить, сохранить ли их работу в каждом приложении или нет. В частности, Устройство записи LibreOffice закрылось, этот путь не представит подсказку "Восстановления" в следующий раз, когда он запускается.
В этом примере последнее решение состоит в том, закрыть ли Firefox. Снова, GUI является GUI самого Firefox, таким образом, гарантируя чистое закрытие.
Сценарий (на основе ссылки BunsenLabs):
#!/bin/bash
# close_all_windows
# depends on wmctrl
# johnraff's close windows before shutdown from https://forums.bunsenlabs.org/viewtopic.php?id=508
windows_list=($(wmctrl -l | awk ' { print $1 } '))
for i in $windows_list
do
wmctrl -i -a $i
wmctrl -i -c $i
done
Это генерирует список открытых окон наряду с рабочими столами, они идут. Идентификатор окна затем передается wmctrl, который повышает каждое окно и затем заставляет родительское приложение просить у пользователя руководство.
Если этот подход подходит, просто добавьте shutdown
на новой строке к сценарию. Это завершит работу системы после одной минуты. С другой стороны, выберите некоторое другое значение из man shutdown
.