Предисловие

Со времен появления скринсейвера «Ленты» (ориг. «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/ribbons‑electron‑page. Приложение на 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 одновременно работающих полноэкранных приложения. Кто будет поверх кого — не могу сказать, не проверял. Но уверен, что нативная заставка победит =)

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

Комментарии (14)


  1. kolabaister
    25.01.2025 17:21

    На mac os не работает. Сначала система защиты не дает запустить, а если это обойти то просто вылетает.


    1. drlight17 Автор
      25.01.2025 17:21

      А версия ОС какая? И архитектура?


      1. kolabaister
        25.01.2025 17:21

        15.1.1 M1


        1. drlight17 Автор
          25.01.2025 17:21

          Понятно... Под рукой есть только M1 на Sonoma 14.6.1 - в ней проблем нет. Причем проверял как arm64, так и x64. Если есть возможность создайте issue в репозитории проекта с подробностями.


        1. drlight17 Автор
          25.01.2025 17:21

          Обновился до 15.2 - полет нормальный. А что показывает, когда "система защиты не дает запустить"? Можно скриншот?


          1. kolabaister
            25.01.2025 17:21

            Поскольку я уже разрешил, повторить это не получится. Но там ничего нового - отсутствие нотаризации приложения - Файл "приложение" невозможно открыть, так как Apple не может проверить его на наличие вредоносного ПО


            1. drlight17 Автор
              25.01.2025 17:21

              А вылетает как? В трее успевает появиться иконка? Ошибок никаких не всплывает? Может быть в логах что-то есть (в приложении Консоль)?


              1. kolabaister
                25.01.2025 17:21

                Никаких ошибок. Из дока пропадает, в трее не появляется.


                1. drlight17 Автор
                  25.01.2025 17:21

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


  1. Timick
    25.01.2025 17:21

    касательно нативности - под windows можно наверное сделать используя .net (в качестве примера https://sourceforge.net/p/videosaver/code/HEAD/tree/VideoScreensaver/VideoScreensaver/) + edge-js для исходного проекта


  1. strelkan
    25.01.2025 17:21

    ну вот, ещё в скринсэйверы электрон ещё не пихали :(

    любителям красивого под виндой кстати рекомендую проект https://github.com/bitrate16/Vebro,
    позволяет использовать шейдеры с shadertoy в качестве заставки


    1. drlight17 Автор
      25.01.2025 17:21

      А я предупреждал про троллейбус из буханки =)

      За ссылку на Vebro спасибо - посмотрю. Оно только под Windows?


    1. kolabaister
      25.01.2025 17:21

      Недавно прочитал про Tauri - фреймворк, использующий ля отрисовки нативный webview системы. Выглядит интересно.


      1. drlight17 Автор
        25.01.2025 17:21

        Да, тоже про него читал. Думал его опробовать в другом проекте.