- JavaScript 88.9%
- CSS 9%
- HTML 2.1%
|
|
||
|---|---|---|
| .gitignore | ||
| .woodpecker.yml | ||
| consts.js | ||
| index.html | ||
| LICENSE | ||
| main.js | ||
| package.json | ||
| preload.js | ||
| README.md | ||
| renderer.js | ||
| style.css | ||
PhotoFrame
Простое и настраиваемое приложение-фоторамка для десктопа, созданное с помощью Electron.
Возможности
- Полноэкранный режим: Запускается в полноэкранном режиме без рамок для полного погружения.
- Поддержка нескольких мониторов: Вы можете выбрать, на каком мониторе запустить приложение.
- Гибкое управление: Переключайте медиафайлы с помощью клавиш (←, →, PageUp, PageDown) или кликов по краям экрана.
- Поддержка видео: Воспроизводит популярные форматы видео. Короткие ролики могут зацикливаться.
- Настраиваемые тайм-ауты: Управляйте временем показа изображений и видео.
- Случайный порядок: Возможность перемешать плейлист для случайного воспроизведения.
- Кэширование: Быстрый запуск благодаря кэшированию списка файлов.
- Скрытый интерфейс: Кнопка закрытия появляется только при наведении мыши.
Конфигурация
Все настройки находятся в файле config.json. Приложение создаст его с настройками по умолчанию при первом запуске.
mediaPath: Полный путь к вашей папке с фотографиями и видео.imageTimeout: Время показа одного изображения в секундах (например,8= 8 секунд).videoTimeout: Время в секундах, через которое переключается к следующему медиафайлу. Видео короче этого значения будут зацикливаться, видео длиннее - будут воспроизводиться до конца. По умолчанию 60 секунд.shuffle: Воспроизводить файлы в случайном порядке (true) или по порядку (false).displayIndex: Индекс монитора для отображения (0- основной,1- второй и т.д.).transitionEffect: Тип эффекта перехода между файлами (fade,crossfade,slide,noneилиrandom). По умолчаниюrandom.muteVideos: Отключить звук при воспроизведении видео (true) или оставить звук включенным (false). По умолчаниюfalse.
Установка и запуск
Требования:
- Node.js (включая npm)
-
Клонируйте репозиторий:
git clone <your-repo-url> cd photoframe -
Установите зависимости:
npm install -
Настройте
config.json: Отредактируйте файлconfig.json, указав путь к вашим медиафайлам. -
Запустите в режиме разработки:
npm start
Сборка приложения
Вы можете собрать дистрибутивы для разных платформ с помощью следующих команд:
-
Windows (x64):
npm run build:win -
Linux (x64):
npm run build:linux -
Linux (arm64):
npm run build:linux-arm64
Готовые файлы появятся в папке dist.
Запуск без графической оболочки
Приложение теоретически может использоваться на одноплатных компьютерах (например, Orange Pi, Raspberry Pi) без графической оболочки, при этом само приложение фоторамки работает как графическая среда. Это позволяет достичь:
- Максимальной производительности и стабильности
- Минимального потребления системных ресурсов
- Энергоэффективности при постоянной работе
Для этого:
- Запустите приложение сразу после загрузки системы через .xinitrc или systemd-сервис
- Используйте минимальные настройки X11 или Wayland
- Настройте автозапуск через crontab @reboot или системный сервис
Примечание: такой способ использования теоретически возможен, но на практике не тестировался.
Кэширование и отслеживание изменений
Приложение использует файл media-cache.json для хранения списка медиафайлов и ускорения запуска:
- При первом запуске создается полный список файлов в указанной директории
- При последующих запусках используется кэш для быстрого доступа к списку файлов
- Изменения в директории отслеживаются в реальном времени с помощью
chokidar
Примечание: при первом запуске в директории создается файл кэша, который позволяет избежать полного сканирования при каждом запуске. Приложение автоматически отслеживает добавление и удаление файлов после запуска.
Эффекты переходов
Приложение поддерживает различные эффекты плавных переходов между медиафайлами:
fade: Плавное исчезновение текущего файла и появление новогоcrossfade: Одновременное исчезновение старого и появление нового файлаslide: Новое изображение "въезжает" (справа при следующем файле, слева при предыдущем)random: Случайный выбор эффекта перехода (по умолчанию)
Примечание: эффекты работают как для изображений, так и для видеофайлов. Для видеофайлов анимации применяются при начале воспроизведения следующего файла.
Для установки конкретного эффекта в файле config.json необходимо установить параметр transitionEffect.
Лицензия
Этот проект распространяется под лицензией MIT.