Skip to content

About

RU: Таймер-виджет для Windows с семисегментным ЖК-дисплеем. EN: Always-on-top Windows timer with a seven-segment LCD display.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Timer Widget

English version

Таймер с обратным либо прямым отсчётом времени, имитирующий электронное устройство с ЖК-дисплеем. Виджет можно разместить в любом месте экрана, он не мешает работе с другими приложениями.

Приложение для Windows 10 и 11, версия 0.1.

Скриншоты

Timer Widget: обычный вид, сработавший сигнал и настройки

Установка

Скачайте TimerWidget-Setup.exe из последнего релиза и запустите. Установщик спросит язык, предложит поставить ярлык на рабочий стол и включить автозапуск вместе с Windows — от того и другого можно отказаться.

Права администратора не нужны: программа ставится в личную папку пользователя. Внутри лежит всё необходимое, отдельно устанавливать .NET не требуется. Установщик не подписан сертификатом, поэтому Windows может показать предупреждение SmartScreen — нажмите «Подробнее» и «Выполнить в любом случае».

При удалении программа убирает за собой всё: свою папку, ключ автозапуска и сохранённые настройки.

Как этим пользоваться

После запуска таймер появляется в правой верхней части экрана. Перетащите его мышью туда, где он не будет мешать.

Ниже табло четыре кнопки:

Play запускает отсчёт. Если таймер уже идёт — начинает заново. Если стоит на паузе — продолжает с того же места. Отдельной кнопки сброса нет: чтобы сбросить с паузы, нажмите Play ещё раз, уже на идущем отсчёте.

Pause останавливает время. Цифры на табло становятся тусклее, чтобы паузу было видно с первого взгляда. Повторное нажатие продолжает отсчёт.

Clock открывает выбор режима и ввод времени.

Settings открывает настройки.

Обратный и прямой отсчёт

Таймер умеет считать в двух направлениях, режим переключается в панели часов. Интервал задаётся там же, в полях часов и минут. Значения можно набрать с клавиатуры, покрутить колесо мыши над нужным полем или воспользоваться стрелками. Колесо меняет значение на единицу, а с зажатым Shift — сразу на пять. Шаг — минута, максимум — 23 часа 59 минут.

Если поменять интервал, пока таймер стоит, при обратном отсчёте цифры на табличке обновятся сразу. Если поменять его на ходу, текущий отсчёт не прервётся — новое значение вступит в силу при следующем запуске.

Обратный отсчёт идёт от заданного интервала к нулю.

Прямой отсчёт идёт с нуля вверх и срабатывает по тому же интервалу: табличка останавливается на заданном времени. Интервал 0:00 в этом режиме — обычный секундомер без сигнала, он просто замирает на 23:59:59.

Переключение режима интервал не затирает.

Когда время выходит

Табличка трижды мигает красным, а затем остаётся красной, пока вы не кликнете по виджету или не запустите таймер снова. Так сигнал не потеряется, даже если в этот момент вы отвернулись от экрана.

В тёмной теме краснеет фон, цифры остаются светлыми. В светлой наоборот — краснеют цифры.

Если в настройках включён звук, к этому добавятся три негромких сигнала. Звук выключается при сбросе сигнала или следующем запуске таймера, а если звуковое устройство недоступно, программа просто промолчит.

Так срабатывает и обратный отсчёт на нуле, и прямой — по достижении интервала. Если прямой отсчёт идёт без интервала (0:00) и добирается до предела табло 23:59:59, он просто останавливается: без мигания и без звука.

Настройки

Настройка Варианты По умолчанию
Язык Русский или английский Как в Windows
Тема Тёмная или светлая Тёмная
Размер S, M, L, XL M
Секунды Показывать или нет Не показывать
Звук Включён или выключен Выключен
Автозапуск Включён или выключен Выключен

Язык интерфейса поначалу совпадает с языком Windows: русской системе соответствует русский, любой другой — английский. Как только вы выберете язык вручную, программа запомнит выбор и больше не будет смотреть на систему.

Размеры отличаются масштабом всей таблички: S — три четверти обычного, M — обычный, L и XL — примерно в треть и в две трети крупнее.

Секунды выводятся справа от минут более мелкими цифрами. Пока они выключены, табло показывает часы и минуты, и неполная минута с него не исчезает досрочно: при обратном отсчёте 01:00 держится, пока минута не истечёт целиком. Двоеточие между часами и минутами мигает раз в секунду, пока таймер идёт. На паузе двоеточие замирает, а цифры тускнеют.

Где хранятся настройки

В файле %AppData%\TimerWidget\settings.json. Там же запоминается положение на экране.

{
  "theme": "dark",
  "language": "",
  "sizeId": "M",
  "showSeconds": false,
  "soundEnabled": false,
  "autostart": false,
  "mode": "countDown",
  "durationSec": 1500,
  "placement": {
    "monitorDeviceName": "\\\\.\\DISPLAY1",
    "nx": 0.82,
    "ny": 0.12
  }
}

Положение хранится не в пикселях, а как имя монитора и доля от его рабочей области. Благодаря этому табличка возвращается на своё место после перезагрузки, а если вы поменяете масштаб интерфейса или разрешение, она не окажется за пределами экрана. Пропал монитор, на котором она стояла, — таймер появится на основном.

Ход самого отсчёта намеренно не сохраняется. После перезапуска программы таймер ждёт нажатия запуска, помня только режим и заданную длительность.

Автозапуск — это обычная запись в разделе реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Run. Галка в настройках и галка в установщике управляют одной и той же записью, так что противоречий между ними не будет.

Что стоит знать заранее

Таймер не отображается поверх игр, запущенных в исключительном полноэкранном режиме — это ограничение самой Windows. В оконном режиме без рамок, который сегодня используют почти все игры, всё работает.

Пока нет глобальных горячих клавиш, нескольких одновременных таймеров и режима, в котором щелчки проходят сквозь табличку. Программа работает только на 64-разрядных системах.

Сборка из исходников

Понадобятся Windows и .NET 8 SDK.

dotnet build -c Release

Собранный файл окажется в bin\Release\net8.0-windows\TimerWidget.exe. Этот запуск тянет установленный .NET и для релиза не годится.

Установщик собирается только из самостоятельной публикации: рядом с exe уже лежит рантайм, на машине пользователя .NET не нужен. Дополнительно понадобится Inno Setup 6.

Get-Process TimerWidget -ErrorAction SilentlyContinue | Stop-Process -Force
dotnet publish -c Release -r win-x64 --self-contained true -o .\installer\publish
& "${env:ProgramFiles(x86)}\Inno Setup 6\ISCC.exe" .\installer\TimerWidget.iss

Готовый TimerWidget-Setup.exe появится в InstallerOutput. Сценарий установщика забирает файлы из installer\publish рядом с собой.

Как устроен код

Приложение написано на WPF и .NET 8. Оно небольшое, поэтому обходится без слоя моделей представления: настройки лежат в AppSettings, время считает TimerEngine, а окно и две панели обращаются к ним напрямую.

app/
  MainWindow.xaml          табличка, кнопки, места для панелей
  Views/
    ClockPanel             режим отсчёта и ввод времени
    SettingsPanel          внешний вид и системные настройки
  Controls/
    SevenSegmentDigit      одна цифра из семи сегментов
    SevenSegmentDisplay    табло целиком
  Services/
    TimerEngine            отсчёт времени
    SettingsStore          чтение и запись настроек
    WindowPlacement        положение на экране
    AutostartService       запись автозапуска в реестре
    TrayService            значок в области уведомлений
    SoundService           звуковой сигнал
    Loc                    русские и английские строки
    SingleInstance         защита от второй копии
    ThemeService           переключение тем
  Native/WindowChrome      поведение окна: поверх всех, перетаскивание, фокус
  Resources/               строки интерфейса
  installer/               сценарий Inno Setup

Цифры нарисованы фигурами, а не шрифтом — иначе не получилось бы показать погашенные сегменты, из-за которых табло похоже на настоящее.

Время считается по Stopwatch, а таймер интерфейса лишь пять раз в секунду перерисовывает табло. Поэтому показания не убегают, даже если система на секунду задумается или уйдёт в сон.

Лицензия

MIT © 2026 Evgenii Petrashchuk.

About

RU: Таймер-виджет для Windows с семисегментным ЖК-дисплеем. EN: Always-on-top Windows timer with a seven-segment LCD display.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages