Как стать автором
Обновить

По мотивам windows заставки «Ленты». Кроссплатформенный скринсейвер на JS и Electron

Время на прочтение4 мин
Количество просмотров1.3K

Предисловие

Со времен появления скринсейвера «Ленты» (ориг. «Ribbons») на Windows 7, эта заставка была стандартом для всех моих рабочих мест, благо в новых версиях Windows (8, 10, 11) эта заставка остается и по сей день. Однако с момента «импортозамещения» десктопной Windows на десктопную Linux, особенно актуального с 2022 года, хотелось получить эту или хотя бы похожую заставку и на этой свободной платформе. Но вот незадача — нормальный порт найти мне не удалось. Может, конечно, плохо искал (скиньте ссылку в комментариях, если кто‑то нашел что‑то работоспособное).

И тут на просторах github очень удачно нашелся вот этот репозиторий. Автор в canvas с использованием JS наваял на мой взгляд очень даже симпатичную анимацию по мотивам того самого скринсейвера «Ленты».

Причем он в README отметил, что пытался сделать из этой анимации PWA (Progressive Web App), но почему‑то у него ничего из этого не вышло, читай «failed». Вопрос, почему человек, наваявший такой годный «генератор лент», не смог в PWA, оставим за скобками.
А тут как раз я, начавший недавно по служебной необходимости, изучать всем известный фреймворк Electron для создания кроссплатформенных настольных web‑приложений... Чем не альтернатива PWA?

Причина написания сего опуса как и прежде — поделиться чем‑то, что делал для себя и ближайшего окружения, с теми, кому это может быть интересно.

«Challenge accepted» © Барни Стинсон

Понятно, что, возможно, это создание троллейбуса из буханки, но интерес возник и мотивация подоспела.

Прошу рассматривать его как мини пет проект человека, далекого от профессионального программирования, поэтому многого можно не ждать (красивого кода или очень гибкого функционала). Доступен по адресу https://drlight17.github.io/. Приложение на Electron тянет за собой по сути весь браузер Chromium, поэтому итоговый вес дистрибутива и тем более установленного приложения совсем не «скринсейверный». Да и системные требования я думаю тоже приличные (серьезных замеров потребления ресурсов не было). Но что не сделаешь, лишь бы не изучать программирование под традиционный десктоп =) Да и бонусом тут полноценная кроссплатформенность — пет проект доступен как для Linux, так и для MacOS с Windows. Правда для решения проблем совместимости с MacOS пришлось, начиная с актуальной альфа версии 0.3, обновить используемую версию Electron с 22 до 29 и, как следствие, лишиться поддержки Windows 7.

Возможности

После запуска приложение живет в системном трее и все настройки доступны там. На момент написания статьи актуальная версия имеет следующие возможности:

  • поддержка нескольких дисплеев

  • мониторинг активности пользователя, чтобы запускать заставку по истечении заданного срока неактивности

  • отслеживание запущенного полноэкранного приложения в фокусе, чтобы заставка не запускалась, например, при просмотре фильма и/или во время работы поставленной на паузу игры

  • поддержка некоторой настройки визуализации (в числе прочего по запросу одного своего товарища сделал возможность работы заставки в режиме российского триколора — патриоты всех мастей должны оценить =) )

  • автоматизация установки приложения в автозагрузку ОС (должно работать на всех трех платформах, однако в случае с Linux протестировано это только для KDE и Cinnamon — будет ли работать корректно в других оболочках — надо проверять)

  • меню настроек поддерживает русский язык (языковые json файлы можно добавлять — приложение их найдет и задействует на этапе сборки проекта)

В процессе написания собственно обвязки на Electron заодно чуть изменил по своему вкусу визуальную составляющую исходного проекта уважаемого fadyehabamer.

В движении это можно смотреть на лендинге проекта.

Чем это приложение не является

Осваивать написание кода под нативные скринсейверы Linux xscreensaver и MacOS Screensaver framework в планах нет и, наверное, не будет. С Windows немного интереснее: если у кого‑то появится интерес, то можно сделать отдельную ветку проекта с версией приложения в формате *.scr для Windows с адаптированной под нативный Windows скринсейвер логикой. Тут правда, оговорка: быстро осилить формирование превью и меню настроек не получилось, поэтому собственно и был сделан упор на «ненативность» скринсейвера. Но, опять же, если будет у кого‑то интерес — могу попробовать.

Резюмируя: в настоящий момент это не нативный скрисейвер для трех платформ, а по сути кроссплатформенная полноэкранная анимация на JS с таймером. Поэтому главное, если вы решили воспользоваться им и установить его на свой ПК — обязательно отключите нативную заставку в ОС, иначе получите 2 одновременно работающих полноэкранных приложения. Кто будет поверх кого — не могу сказать, не проверял. Но уверен, что нативная заставка победит =)

Спасибо за внимание!

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Как вам заставка?
25% Очень даже ничего!3
33.33% Так себе…4
41.67% Отвратительно!5
Проголосовали 12 пользователей. Воздержались 6 пользователей.
Теги:
Хабы:
Всего голосов 3: ↑2 и ↓1+3
Комментарии19

Публикации

Работа

Ближайшие события