> 🌐 Языки: [English](README.md) | [Русский](README.ru.md) | [简体中文](README.zh-CN.md) [![GitHub Release](https://img.shields.io/github/v/release/CHerSun/NoSleep)](https://github.com/CHerSun/NoSleep/releases/latest) # NoSleep NoSleep — лёгкая утилита, не дающая Windows автоматически включать заставку, спящий режим или экран блокировки. Она создана для ситуаций, когда вы не можете изменить эти настройки самостоятельно — например, из-за корпоративных политик. Вдохновлена Linux-утилитой Caffeine. NoSleep различает режимы сна: она определяет, используется ли на машине классический сон (S1–S3) или Modern Standby (S0), и подстраивается — см. [Режимы сна](#режимы-сна-modern-standby-и-классический). > **Примечание:** в Windows PowerToys есть аналогичный инструмент Awake, но PowerToys может требовать прав администратора и довольно велик. NoSleep стремится быть максимально компактной и работает без дополнительных разрешений. ## Установка NoSleep можно установить через менеджер пакетов [Scoop](https://scoop.sh/): ```sh scoop bucket add extras scoop install extras/nosleep ``` Либо скачайте последний релиз вручную со [страницы релизов](https://github.com/CHerSun/NoSleep/releases/latest). Каждый релиз содержит три исполняемых файла — выберите какой-то один: - **`NoSleep.exe`** — основная сборка для всех (работает на .NET Framework 4.8, предустановленном в Windows). - **`NoSleep-net8.exe`** / **`NoSleep-net10.exe`** — однофайловые сборки для пользователей, у которых уже установлена среда .NET 8 или .NET 10. ## Использование NoSleep создана по принципу «настроил и забыл». Запущенная программа сидит в системном трее и не даёт компьютеру уснуть. - **Левый клик** по значку в трею включает или выключает программу. Значок меняется в зависимости от состояния; в выключенном состоянии иконка «zzz» подстраивается под цветовую тему Windows (белая на тёмной панели задач), чтобы оставаться заметной. - **Правый клик** по значку открывает меню с дополнительными опциями: - **Автозапуск при входе** — запускать NoSleep автоматически при входе в систему. - **Держать экран включённым** — не давать дисплею выключаться, пока NoSleep включён. - **Не давать уснуть при закрытии крышки** *(только ноутбуки с Modern Standby; по умолчанию выключено)* — пока NoSleep включён, закрытие крышки не усыпляет машину; исходное действие крышки восстанавливается при отключении или выходе из NoSleep. (Доступно с v1.6.0) - **Имитация активности** *(только машины с Modern Standby; по умолчанию выключено)* — см. [Режимы сна](#режимы-сна-modern-standby-и-классический). (Доступно с v1.6.0) - **Запоминать состояние** — сохранять состояние включения между перезапусками программы. - **Настроить отслеживаемые программы** — задать список приложений. Если ни одно из них не запущено, NoSleep автоматически отключает себя; если запущено хотя бы одно — включает и препятствует засыпанию. Это динамическое поведение работает только когда NoSleep включён пользователем. (Доступно с v1.4.0) Чтобы полностью остановить NoSleep, кликните правой кнопкой по значку в трее и выберите **Закрыть**. ### Язык Интерфейс автоматически следует языку отображения Windows среди **English, Русский и 简体中文**. Чтобы выбрать язык явно, запускайте с флагом `--lang`: ```sh NoSleep.exe --lang ru # русский для этого запуска NoSleep.exe --lang zh-CN # упрощённый китайский NoSleep.exe --lang list # показать доступные языки ``` Чтобы сделать выбор постоянным, добавьте флаг в поле «Объект» ярлыка NoSleep. ## Требования - **`NoSleep.exe`** (основная сборка): .NET Framework 4.8 или новее — как правило, предустановлен в Windows 10 и новее; при необходимости скачивается с [сайта Microsoft](https://dotnet.microsoft.com/en-us/download/dotnet-framework). - **`NoSleep-net8.exe`** / **`NoSleep-net10.exe`**: соответствующая среда .NET. ## Как это работает NoSleep держит систему бодрствующей, обновляя запрос питания Windows каждые 10 секунд (`SetThreadExecutionState`) — нагрузка на CPU пренебрежима, оперативной памяти немного; в скомпилированный файл входят иконки (около 180 КБ) и код программы. На машинах с Modern Standby дополнительно применяются специфичные для S0 защиты, описанные в разделе [Режимы сна](#режимы-сна-modern-standby-и-классический). ## Режимы сна (Modern Standby и классический) Машины с Windows засыпают одним из двух способов, и NoSleep показывает, какой из них применяется, в первой строке меню в трее. Проверить свой режим можно командой `powercfg /a` в терминале. **Что NoSleep может предотвратить, пока она включена:** | Событие | Классический (S3) | Modern Standby (S0) | S0 на батарее | | --- | --- | --- | --- | | Автоматический сон | ✅ Предотвращается | ✅ Предотвращается | ✅ Предотвращается — до тайм-аута сна + 5 мин
✔ Бессрочно (Имитация активности) | | Выключение экрана | ✅ Предотвращается («Держать экран включённым») | ✅ Предотвращается («Держать экран включённым») | ✅ Предотвращается («Держать экран включённым») | | Сон при закрытии крышки | ✅ Предотвращается | ✔ Опцией «Не давать уснуть при закрытии крышки» | ✔ Опцией «Не давать уснуть при закрытии крышки» | | Сон через меню питания / кнопку сна | ✅ Предотвращается | — | — | *✅ = предотвращается по умолчанию · ✔ = можно предотвратить опцией · — = не преследуется. Таблица показывает активное (включённое) состояние: когда NoSleep отключена, или мониторинг включён и ни одно отслеживаемое приложение не запущено, Windows ведёт себя обычным образом. Крышка — единственный «ручной» триггер сна, действие которого NoSleep переопределяет; кнопку сна намеренно не трогаем.* **Классический (S3)** — традиционный сон. Пока NoSleep включена, сон предотвращается полностью, включая запущенный вручную: машина лишь *выглядит* спящей, продолжая работать. Так NoSleep работал всегда. **Modern Standby (S0)** — новая модель, используемая в большинстве современных ноутбуков. Здесь Windows сознательно прекращает учитывать запросы приложений, когда *вы* явно требуете сна, поэтому NoSleep не может просто запретить его. Две дополнительные опции (обе по умолчанию выключены) закрывают эти пробелы: - **Не давать уснуть при закрытии крышки** — пока NoSleep включена, она временно ставит действие крышки в «Ничего не делать» и возвращает исходную настройку при отключении или выходе (а также автоматически восстанавливает её при следующем запуске, если NoSleep был убит). Закрытие крышки оставляет машину работающей с выключенным экраном — как с внешним монитором. - **Имитация активности** — как NoSleep борется с триггерами сна, которые не покрываются запросами питания на Modern Standby: - *Препятствовать попыткам сна* — по мере возможностей (best effort): когда система пытается уснуть (кнопка сна, меню питания), NoSleep реагирует коротким всплеском имитированного ввода, стремясь сразу же разбудить её обратно. Возможна кратковременная отметка «активен» в чатах. Для закрытия крышки предпочитайте детерминированную опцию **«Не давать уснуть при закрытии крышки»** выше. - *Имитировать присутствие пользователя* — NoSleep непрерывно имитирует невидимую активность пользователя (события ввода, которые ничего не двигают — курсор неподвижен), предотвращая **автоматический** сон. **Побочные эффекты:** вы постоянно выглядите активным (чаты не простаивают), а экран и сессия сами не блокируются. - *Двигать мышью (заметно)* — та же цель, что у имитации присутствия, но с реальным, видимым движением мыши (курсор каждый раз возвращается на место) — для систем, где невидимой активности недостаточно. - Непрерывные режимы работают со случайизированным интервалом (чтобы события не были идеально периодичными); продвинутые пользователи могут настроить его через значения `JiggleIntervalMs` / `JiggleJitterPercent` в стандартном файле настроек (по умолчанию: 10 секунд, ±20%). > ⚠️ **Безопасность ноутбука — риск перегрева.** Всё описанное выше (как и сам NoSleep) существует, чтобы не давать машине уснуть. Ноутбук, который остаётся включённым в закрытой сумке или чехле, не может охлаждаться: он может перегреться, разрядить батарею, а в худшем случае — повредить себя или вещи рядом. Этот риск присущ *любому* инструменту бодрствования — включая классическое поведение NoSleep на S3, где закрытие крышки никогда не означало, что машина уснёт. Именно поэтому **обе опции Modern Standby по умолчанию выключены**: в системе ничего не меняется, пока вы явно их не включите. NoSleep также возвращает все изменённые системные настройки в момент отключения или выхода и восстанавливает забытую настройку крышки при следующем запуске. Возьмите за привычку: прежде чем убрать ноутбук в сумку, взгляните на трей — значок кофе означает, что он не уснёт, — и отключите NoSleep. **Честные ограничения на Modern Standby:** - **На батарее** Windows прекращает запросы питания через 5 минут после тайм-аута сна — это поведение ОС, которое никакой запрос на бодрствование не может обойти. Непрерывная имитация присутствия (*«Имитировать присутствие пользователя»* или *«Двигать мышью»*) — единственный способ бессрочно предотвращать **автоматический** сон на батарее. - Явный выбор **Сон** в меню питания (или кнопка питания) на Modern Standby всегда исполняется ОС — победить его может только имитация активности. Если вы хотите усыпить машину, предполагаемый путь — отключить NoSleep. Если динамическое поведение NoSleep не нужно, действие крышки «Ничего не делать» можно выставить самому (Электропитание → Действие при закрытии крышки) — эффект тот же без всяких инструментов; преимущество NoSleep в том, что всё привязано к одному клику и откатывается автоматически. ## Авторские права на иконки | Использование | Иконка и источник | Лицензия | Художник | | --------------- | ---------------------------------------------------------------------------------------------- | ------------------------ | --------------------------------------------------------------------------- | | Включено | [Coffee icon](https://www.iconarchive.com/show/food-icons-by-martin-berube/coffee-icon.html) | Freeware | [Martin Berube](https://www.iconarchive.com/artist/martin-berube.html) | | Выключено | [Sleep icon](https://www.iconarchive.com/show/material-icons-by-pictogrammers/sleep-icon.html) (чёрная; белая перекраска для тёмной панели задач) | Apache 2.0 (Open Source) | [Pictogrammers Team](https://www.iconarchive.com/artist/pictogrammers.html) | Большое спасибо художникам за эти иконки!