Перейти к содержимому

Webdesktopgl: запуск сайтов как приложений в astra linux и других системах linux

WebDesktopGL: запуск сайтов как настольных приложений в Astra Linux и других системах Linux через Chromium

WebDesktopGL - фреймворк на базе Chromium, предназначенный для превращения веб-сайтов в отдельные графические приложения Linux. Решение ориентировано прежде всего на Astra Linux, но также тестировалось в Ubuntu и других окружениях с X11 и Wayland.

Главная идея проекта - предоставить альтернативу Electron для случаев, когда требуется запуск веб-интерфейса в изолированном окне, с собственными ограничениями, иконкой, буфером обмена и поддержкой аппаратного ускорения. При этом приложение не обязано выглядеть как обычная вкладка браузера: пользователь получает отдельное окно, а доступ к стандартным элементам Chromium можно ограничить.

Почему появился WebDesktopGL

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

Дополнительным условием было отсутствие нелицензионного программного обеспечения. Поэтому вместо готового закрытого решения был создан собственный Bash-фреймворк, использующий Chromium, системные утилиты Linux и дополнительные компоненты для работы с виртуальным экраном и графическим ускорителем.

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

Какие задачи решает фреймворк

В составе WebDesktopGL реализованы несколько важных механизмов:

- запуск Chromium в режиме отдельного приложения;
- скрытие или ограничение стандартного интерфейса браузера;
- работа сайта на виртуальном дисплее Xephyr или Xvfb;
- подключение GPU на X11 через модифицированный VirtualGL;
- передача данных буфера обмена между основным и виртуальным экранами с помощью xclip;
- назначение собственного значка окна;
- запуск локальной или системной версии Chromium;
- поддержка работы веб-сайта в окружении X11 и Wayland с учетом различий между ними.

Проект тестировался в Ubuntu 24.04 с KDE в режимах X11 и Wayland, в Ubuntu 22.04 с KDE на X11, а также в Astra Linux 1.8.

Установка и подготовка окружения

Перед загрузкой проекта необходимо установить Git LFS. Он используется для получения крупных файлов, которые обычная команда `git clone` может скачать не полностью.

После клонирования репозитория запускается сценарий `Install_bash_WebDesktopGL.sh`. Скрипт автоматизирует подготовку окружения: устанавливает зависимости, собирает модифицированную версию VirtualGL, распаковывает локальный Chromium и компилирует утилиту `xdotool_xseticon`.

Такой подход упрощает развертывание: пользователю не нужно вручную собирать каждый компонент и отдельно настраивать пути к исполняемым файлам.

Компоненты проекта

Virtualgl-main

`Virtualgl-main` представляет собой переработанную версию VirtualGL. В нее добавлены параметры сборки и запуска, рассчитанные на работу во временном или динамическом каталоге.

Компонент обеспечивает передачу графической нагрузки на видеокарту при запуске Chromium внутри виртуального X-дисплея. Однако важно учитывать ограничение: VirtualGL в данном варианте предназначен для X11 и не работает непосредственно в Wayland. При использовании Wayland обработка трехмерной графики и других функций сайта выполняется центральным процессором.

Demo

Каталог `Demo` содержит демонстрационный веб-сайт со сценой для проверки работы видеокарты и графического движка. Его структура одновременно показывает, каким образом веб-приложение должно быть подготовлено для запуска через WebDesktopGL.

В демонстрации предусмотрены переходы между вкладками, ограничения пользовательского интерфейса Chromium, трехмерная сцена, измененный просмотрщик PDF на базе pdf.js, а также просмотр изображений форматов JPG, JPEG, PNG, GIF, WEBP, SVG и ICO.

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

Локальная версия Chromium

Архив `ungoogled-chromium_146.0.7680.143_1.vaapi_linux.tar.xz` содержит подготовленную версию Chromium с поддержкой необходимых сценариев запуска. Она используется скриптами `InfoDoc_light.sh` и `InfoDoc.sh`.

Локальный браузер не является обязательным условием. При необходимости его можно заменить системной или другой установленной версией Chromium. В этом случае потребуется изменить путь к исполняемому файлу и каталог хранения пользовательской сессии.

Облегченный запуск через InfoDoc_light.sh

`InfoDoc_light.sh` предназначен для простого запуска веб-сайта без создания дополнительного виртуального экрана Xephyr.

В этом режиме отсутствуют расширенные ограничения, связанные с отдельным дисплеем, однако сайт запускается как самостоятельное окно Chromium. Поддержка видеокарты доступна без использования `Virtualgl-main`, что делает сценарий менее требовательным к настройке.

Внутри скрипта уже предусмотрены код утилиты `xdotool_xseticon` и значок окна. Благодаря этому на удаленный компьютер с Astra Linux можно передать только небольшой сценарий запуска, а само веб-приложение будет загружаться с общего адреса на сервере. Такой вариант особенно удобен при работе по сети, когда не хочется устанавливать на клиентскую машину тяжелое приложение.

Для перехода на другой Chromium потребуется заменить путь к браузеру и директорию, в которой сохраняются данные сессии. Также необходимо скорректировать проверку наличия локального файла запуска.

Полный запуск через InfoDoc.sh

`InfoDoc.sh` реализует расширенный режим. В этом случае Chromium запускается на отдельном виртуальном экране Xephyr. Основное приложение изолируется от стандартного рабочего стола, а взаимодействие с буфером обмена организуется через `xclip`.

На системах Linux с X11 можно дополнительно использовать `Virtualgl-main` для подключения GPU. В Wayland этот механизм недоступен, поэтому вычисления выполняются на CPU. Для полноценного режима требуется предварительно установить все компоненты проекта с помощью `Install_bash_WebDesktopGL.sh`.

Утилита `xdotool_xseticon` используется для назначения иконки виртуальному окну. Ее исходный код находится в файле `xdotool_xseticon.c`, который компилируется во время установки.

Работа с иконками и изображениями

Скрипт `make_window_icon_txt.sh` предназначен для преобразования изображений и подготовки данных, необходимых для создания значка окна. Это позволяет использовать собственную иконку приложения вместо стандартного изображения Chromium.

Файл `set_gif.sh` содержит пример Bash-скрипта для работы с GIF-изображениями и может использоваться как основа для дополнительных сценариев обработки графики.

Особенности X11 и Wayland

Наиболее полная функциональность WebDesktopGL доступна в X11. Здесь можно применять Xephyr, VirtualGL и механизмы перенаправления графического вывода на видеокарту.

Wayland использует другую модель управления окнами и графикой. Из-за этого VirtualGL не может работать в нем напрямую. Сам WebDesktopGL запускается, но аппаратное ускорение в расширенном режиме недоступно, а нагрузка ложится на процессор.

Перед внедрением решения следует определить, какой графический сервер используется в конкретной системе. Для офисных рабочих мест на X11 можно рассчитывать на более широкий набор возможностей, тогда как в Wayland придется уделить внимание производительности CPU и сложности веб-сцены.

Ограничение интерфейса Chromium

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

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

При этом ограничения следует проектировать аккуратно. Если веб-приложению требуются загрузка файлов, печать, открытие PDF или работа с буфером обмена, эти функции необходимо заранее проверить в выбранном режиме.

Буфер обмена между дисплеями

При запуске Chromium внутри Xephyr приложение работает на отдельном виртуальном экране. Из-за этого обычный обмен данными с основным рабочим столом может быть недоступен.

WebDesktopGL решает задачу с помощью `xclip`. Утилита передает текст между дисплеями, позволяя копировать данные из веб-приложения в другие программы и обратно. Это делает изолированный режим удобнее для повседневной работы, хотя поведение буфера обмена зависит от настроек X11 и используемого окружения рабочего стола.

Практические рекомендации

Перед развертыванием в рабочей среде желательно проверить:

1. доступность Chromium и корректность его версии;
2. права на запуск Bash-скриптов;
3. наличие Git LFS и всех системных зависимостей;
4. работу Xephyr или Xvfb;
5. передачу буфера обмена через xclip;
6. отображение значка окна;
7. производительность трехмерных элементов;
8. корректность открытия PDF и изображений;
9. поведение сайта при отключенном интернете;
10. совместимость выбранного режима с X11 или Wayland.

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

WebDesktopGL представляет собой практичный способ превратить веб-систему в Linux-приложение без использования Electron. Он сохраняет преимущества веб-технологий, но добавляет управление окном, ограничение пользовательского интерфейса, поддержку виртуальных экранов и возможность работы с GPU в X11. Решение особенно полезно для Astra Linux и других Linux-дистрибутивов, где важны контроль компонентов, отсутствие лишнего программного обеспечения и возможность адаптировать запуск под конкретную инфраструктуру.

Прокрутить вверх