IT-инфраструктура • инструкции • практикаПоиск по сайту

Серверы и системное администрирование

Найти материал →

Как запретить Яндекс Браузеру закрываться молча с помощью вечной загрузки

Вечная загрузка: как запретить Яндекс Браузеру закрываться молча

Полсотни вкладок в рабочем окне - не редкость. Среди них могут быть черновики, открытые веб-консоли, формы с набранным текстом, статьи "дочитаю вечером" и веб-терминалы с активными сессиями. Поэтому случайное нажатие 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 с шаблоном вроде . Это означает потенциальный доступ к банковским сайтам, личным кабинетам и внутренним приложениям. Во-вторых, механизм не действует на browser://-страницах и в PDF-просмотрщике. Наконец, после запуска браузера восстановленные вкладки ещё не имеют пользовательской активации, поэтому защита может не сработать.

Пытаться перехватывать закрытие на уровне оконного менеджера тоже бессмысленно. 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. Сочетание этого сторожа, синхронизации и восстановления сессии даёт гораздо более надёжную защиту от случайной потери рабочего окружения.

Прокрутить вверх