Вечная загрузка: как запретить Яндекс Браузеру закрываться молча
Полсотни вкладок в рабочем окне - не редкость. Среди них могут быть черновики, открытые веб-консоли, формы с набранным текстом, статьи "дочитаю вечером" и веб-терминалы с активными сессиями. Поэтому случайное нажатие Ctrl+Shift+W способно привести не просто к потере списка вкладок, а к исчезновению несохранённого состояния.
Комбинация Ctrl+Shift+T восстановит адреса, но не вернёт содержимое страниц. Пропадут неотправленный комментарий, состояние SPA, авторизация в веб-консоли и активная SSH-сессия. Пользователь увидит прежние URL, однако практически все важные данные придётся восстанавливать вручную.
Почему стандартное восстановление не всегда помогает
Яндекс Браузер умеет предупреждать о закрытии окна, когда в нём выполняются загрузки. Если хотя бы один файл скачивается или поставлен на паузу, браузер показывает диалог подтверждения. Этим поведением можно пользоваться как временным предохранителем: перед рискованным действием запустить загрузку и оставить её незавершённой.
Однако ручное включение такого "замка" быстро надоедает. Хотелось получить постоянную защиту без перехода на другой браузер, изменения привычек и переноса многолетней истории синхронизации. Подробнее о практической реализации такого подхода можно прочитать в материале о защите вкладок от случайного закрытия в Яндекс Браузере.
Проверка browser://flags и обычных параметров результата не дала. В файле Preferences обнаружились ключи, связанные с группами вкладок и предупреждениями: ya.ui_spaces.enabled, а также параметры warn. В локалях браузера даже нашлись соответствующие надписи: "Предупреждать о закрытии окна с группами", "Закрыть браузер? Группы и вкладки будут удалены" и варианты кнопок для восстановления либо немедленного завершения работы.
Но включение этих параметров вручную ничего не изменило. Интерфейс групп не появился, а окно закрылось без предупреждения. Кроме того, по формулировкам было понятно: механизм предназначен для защиты групп при отключённом восстановлении сессии, а не для общего запроса перед закрытием браузера.
Какие механизмы действительно блокируют закрытие
Поскольку исходный код Яндекс Браузера закрыт, для анализа пришлось обратиться к близкой версии Chromium. В апстримном коде поведение закрытия связано прежде всего с двумя механизмами:
- обработчиками beforeunload на отдельных страницах;
- активными загрузками, которые проверяются через OkToCloseWithInProgressDownloads().
Первый вариант показывает диалог вроде "Покинуть сайт?". Но он зависит от активности пользователя: если на странице ещё не было клика или нажатия клавиши, предупреждение может не появиться. Особенно неудобно это для вкладок, восстановленных после перезапуска: до первого взаимодействия они фактически не защищены.
Второй механизм работает надёжнее. На Linux незавершённая загрузка блокирует закрытие последнего окна браузера и вызывает штатное предупреждение. Именно его и можно использовать как простой внутренний сторож.
Других универсальных способов в обычном Chromium не обнаружилось. Полноэкранное видео, WebRTC, заполненные формы и прочие состояния сами по себе закрытие окна не запрещают. Корпоративные политики могут сделать незакрываемым отдельное PWA-окно, но к повседневной работе браузера это отношения не имеет.
Почему расширение оказалось не лучшим решением
Расширения с названиями вроде "confirm before closing" обычно используют beforeunload. У такого подхода есть сразу несколько недостатков.
Во-первых, расширение должно получить доступ ко всем страницам через content script с шаблоном вроде
Пытаться перехватывать закрытие на уровне оконного менеджера тоже бессмысленно. WM видит крестик и Alt+F4, но Ctrl+Shift+W и пункт меню обрабатываются внутри браузера. Глобальный перехват клавиш через xbindkeys, наоборот, заберёт комбинацию у всех приложений.
Есть и дополнительная особенность: параметр --load-extension Яндекс Браузер фактически игнорирует. Распакованное расширение приходится устанавливать вручную через режим разработчика, что неудобно для автоматического запуска вместе с профилем.
Идея с вечной загрузкой
В итоге наиболее надёжным оказался внешний небольшой сервис, который поддерживает одну бесконечную загрузку в браузере. Пока она продолжается, Chromium считает, что закрытие окна требует подтверждения. Для пользователя это выглядит как обычное системное предупреждение, а не как вмешательство в страницы.
Решение не привязано к специфическим функциям Яндекс Браузера и подходит для других Chromium-браузеров, если они сохраняют стандартную обработку активных загрузок. Сервис можно запускать через systemd. Он практически не потребляет ресурсы: около 0,4 МБ оперативной памяти, примерно 64 КБ места на диске и небольшой сетевой обмен через loopback раз в несколько минут.
Такой подход особенно полезен на Linux, где браузер часто закрывается сочетанием клавиш или командой оконного менеджера. Вместо попытки анализировать каждую вкладку защита использует уже существующий штатный механизм - незавершённую загрузку.
Что важно учесть при настройке
Защитная загрузка не должна сохранять реальные данные на диск или отправлять их во внешний интернет. Лучше направить соединение на локальный адрес и периодически поддерживать его активность. Важно также предусмотреть корректное завершение сервиса: защита должна отключаться одной командой, например перед обновлением браузера, очисткой профиля или автоматическим выключением системы.
Полезно проверить несколько сценариев: закрытие через крестик, Alt+F4, Ctrl+Shift+W, пункт меню, завершение последнего окна и повторный запуск браузера. Отдельно стоит убедиться, что обычные загрузки, сохранение файлов и восстановление сессии не начинают конфликтовать со сторожем.
Настройка Яндекс Браузера для сохранения вкладок после закрытия всё равно остаётся необходимой. Восстановление сессии спасает список открытых страниц после сбоя, а постоянная загрузка защищает от случайного закрытия в текущий момент. Это разные уровни безопасности, и один механизм не заменяет другой.
Если требуется более сложное управление рабочими окнами, можно изучить расширения для управления вкладками в Яндекс Браузере. Они подходят для группировки, поиска, автоматической выгрузки неактивных страниц и сохранения наборов вкладок, но не всегда способны надёжно блокировать закрытие всего окна.
Итог
Для запроса "как восстановить закрытые вкладки в Яндекс Браузере" стандартный ответ - Ctrl+Shift+T или восстановление последней сессии. Но эти инструменты возвращают в основном адреса, а не внутреннее состояние сайтов. Поэтому при работе с черновиками и веб-приложениями лучше заранее предотвратить ошибку.
Если нужно понять, как вернуть вкладки после случайного закрытия Яндекс Браузера, следует проверить историю, восстановление сессии и синхронизацию. Однако гарантировать возврат введённых, но не отправленных данных они не могут.
Тем, кто ищет, как запретить закрытие Яндекс Браузера при закрытии последней вкладки, стоит учитывать: отдельной универсальной настройки в интерфейсе нет. Практичный обходной путь - держать активную бесконечную загрузку под управлением systemd. Она почти незаметна для системы, не требует доступа ко всему содержимому страниц и использует штатный механизм предупреждения Chromium. Сочетание этого сторожа, синхронизации и восстановления сессии даёт гораздо более надёжную защиту от случайной потери рабочего окружения.


