Carbonyl , терминальный веб-браузер на основе Chromium.

карбонил

Carbonyl консольный веб-браузер

Новость о запуске новый консольный веб-браузер Carbonyl, основанный на мотор Chromium и способен отображать любой сайт на терминале, включая YouTube.

Браузер поддерживает почти все веб-API, включая WebGL, WebGPU и инструменты для воспроизведения видео, звука и анимации. Работа возможна как при прямом запуске терминала, так и при подключении по SSH.



О карбониле

В рамках проекта продолжает разработку утилиты html2svg, который изначально был разработан для преобразования HTML и в векторных (SVG, PDF) или растровых (PNG, JPEG, WebP) изображениях и теперь используется в качестве основы для рендеринга в терминал.



Для отображения графиков используются возможности терминалов типа xterm-256 для отображения символов Юникода в цвете: используется символ U+2584 («▄») как виртуальный пиксель. Воспользовавшись тем, что соотношение сторон в этом символе 1:2, на его основе можно отобразить два квадратных пикселя, верхний из которых задает цвет фона, а нижний — передний план.

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

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

Если бы мы могли поместить наши пиксели в одну из этих областей памяти, нам просто нужно было бы уведомить наш процесс браузера с помощью простого сообщения IPC.

escape-последовательности xterm используются для отслеживания движения мыши., движение курсора и изменение цвета текста. Для терминала xterm можно использовать палитру RGB 6x6x6, а при установке режима COLORTERM можно использовать 24-битную полноцветную палитру RGB.



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

Для рендеринга изображений упоминается, что CapturePaintPreview отлично подходит для html2svg, но он не предназначен для рендеринга в реальном времени, поскольку использует вызовы IPC для надлежащей поддержки внепроцессных iframe, совершая круговые поездки между процессами браузера, графическим процессором и рендерером.

Среди того, что может сделать Carbonyl, выделяется следующее:



  • переместить курсор
  • Напишите символы Юникода
  • Установите цвет фона и переднего плана персонажа
  • Используйте палитру RGB 6x6x6 или 24-битный RGB, если для параметра COLORTERM установлено значение truecolor.

Для интересно узнать о нем больше, они должны знать, что компоновка движка Chromium написана на TypeScript, C++ и Rust. Вы можете узнать больше о разработке По следующей ссылке.



Как установить Carbonyl на Linux?

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

Во-первых, это получить код Chromium с помощью:

./scripts/gclient.sh sync

Мы приступаем к применению патчей (любые изменения, сделанные в Chromium, будут отменены, поэтому обязательно сохраните внесенные изменения).

./scripts/patches.sh apply

После этого приступаем к настройке:

./scripts/gn.sh указывает/по умолчанию

По умолчанию это имя назначения, вы можете использовать несколько и выбрать имя, которое вы хотите, например:

  • ./scripts/gn.sh указывает/выпускает
  • ./scripts/gn.sh аргументирует/отлаживает
  • ./scripts/gn.sh аргументирует/arm64
  •  ./scripts/gn.sh аргументирует выход/amd64

Затем при появлении запроса необходимо ввести следующие аргументы:

import("//carbonyl/src/browser/args.gn")

# раскомментируйте это, чтобы собрать для arm64

# target_cpu=»arm64″

# раскомментируйте это, чтобы включить ccache

# cc_wrapper=»env CCACHE_SLOPPINESS=time_macros ccache»

# раскомментируйте это, если вы собираете для macOS

# use_lld = ложь

# раскомментируйте это для релизной сборки

# is_debug=ложь

# уровень_символа=0

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

./scripts/build.sh Default

Что должно привести к следующим результатам:

out/Default/headless_shell: browser binary

out/Default/icudtl.dat

out/Default/libEGL.so

out/Default/libGLESv2.so

out/Default/v8_context_snapshot.bin

И, наконец, Чтобы создать образ Docker, просто запустите следующее (в зависимости от случая вашей архитектуры). Для АРМ:

./scripts/docker.sh arm64 Default

Для x64:

./scripts/docker.sh amd64 Default

Наконец, браузер можно запустить с помощью:

./scripts/run.sh Default https://wikipedia.org





2023-01-30T21:03:54
приложений