Простое приложение на Electron для изучения фреймворка - таймера помидора. Показывает значок в трее с выпадающим меню.
Разработка была вдохновлена вот этим приложением: https://github.com/orta/pzdeploys. Блог автора – https://orta.io/
«Метод помидора» – техника управления временем, которая предполагает увеличение эффективности работы при меньших временных затратах за счёт глубокой концентрации и коротких перерывов. В классической технике отрезки времени — «помидоры» длятся полчаса: 25 минут работы и 5 минут отдыха.
- Определитесь с задачами, которые планируете выполнять.
- Установите таймер на 20-25 минут.
- Работайте, ни на что не отвлекаясь, до сигнала таймера.
- Сделайте короткий перерыв (5 минут).
- После каждого 4-го «помидора» делайте длинный перерыв (15-30 минут).
Для подробностей см. статью в Википедии.
- Инструменты разработки, тестирования и автоматизации
- preload скрипт
- Создание иконок для macOS из PNG файла
- Создание иконок для Windows
- Скачать последний релиз со страницы https://github.com/hazadus/electron-pomodoro/releases/
- Для MacOS:
- Так как приложение не подписано, выполнить с указанием верного пути к приложению:
xattr -d com.apple.quarantine ~/Downloads/Pomodoro\ Timer.app
- Так как приложение не подписано, выполнить с указанием верного пути к приложению:
# Сборка TypeScript файлов
npm run build
# Запуск приложения
npm start
# Сборка для распространения
# Это создаст готовое приложение в папке out/
npm run makeБолее подробная информация об используемых в проекте инструментах разработки и автоматизации находится в файле docs/dev.md.
Приложение использует electron-log для комплексного логирования всех операций:
Логи сохраняются в директории logs/ внутри папки данных приложения:
- macOS:
~/Library/Application Support/Pomodoro Timer/logs/ - Windows:
%APPDATA%/Pomodoro Timer/logs/ - Linux:
~/.config/Pomodoro Timer/logs/
main.log- основные логи приложения (до 5MB)timer.log- логи работы с таймерамиstats.log- логи статистикиsettings.log- логи настроекnotification.log- логи уведомленийsound.log- логи воспроизведения звуковtray.log- логи системного трея
- error: критические ошибки, исключения, сбои системы
- warn: предупреждения, неожиданные ситуации
- info: важные события приложения (запуск/остановка таймера, сохранение настроек)
- debug: детальная информация для отладки (только в development режиме)
- Логи старше 30 дней автоматически удаляются
- Максимальный размер одного файла лога: 5MB
- Ротация файлов при превышении размера
Приложение автоматически предотвращает запуск нескольких экземпляров одновременно, используя встроенный механизм Electron requestSingleInstanceLock().
При запуске приложения:
- Приложение запрашивает эксклюзивную блокировку через
app.requestSingleInstanceLock() - Если блокировка получена - приложение запускается нормально
- Если блокировка недоступна (уже есть запущенный экземпляр) - приложение завершается с соответствующим логом
При попытке запуска второго экземпляра:
- Второй экземпляр автоматически завершается
- Первый экземпляр получает событие
second-instanceи выполняет следующие действия:- Логирует попытку запуска дополнительного экземпляра
- Если нет открытых окон - показывает окно "О программе"
- Если есть открытые окна - восстанавливает их из свернутого состояния и устанавливает фокус
Логика single instance работает на всех поддерживаемых платформах:
- Windows: Полная поддержка через механизмы Windows
- Linux: Полная поддержка через файловые блокировки
- macOS: Дополнительная нативная поддержка через Finder (автоматическое предотвращение запуска из GUI)