Представлен новый консольный web-браузер Carbonyl, основанный на движке Chromium и способный отображать в терминале любые сайты, в том числе YouTube. Браузер поддерживает почти все Web API, включая WebGL, WebGPU и средства для воспроизведения видео, звука и анимации. Работа возможна как при прямом запуске терминала, так и при подключении через SSH. Обвязка вокруг движка Chromium написана на языках TypeScript, C++ и Rust.

Проект продолжает развитие утилиты html2svg, которая изначально была разработана для преобразования HTML и <canvas> в векторные (SVG, PDF) или растровые изображения (PNG, JPEG, WebP), а теперь задействована в качестве основы для отрисовки в терминал. Для вывода графики задействованы возможности терминалов, таких как xterm-256, выводить unicode-символы в цвете - в качестве виртуального пикселя используется символ U+2584 ("▄"). Пользуясь тем, что соотношение сторон в этом символе 1:2, имеется возможность отображения на его основе двух квадратных пикселей, верхний из которых задаёт цвет фона, а нижний - переднего плана.

Для отслеживания движения мыши, перемещения курсора и изменения цвета текста используются escape-последовательности xterm. Для терминала xterm возможно задействование RGB-палитры 6x6x6, а при установке режима COLORTERM - 24-разрядной полноцветной палитры RGB. Текст отрисовывается в фиксированном размере, отдельно от изображений. Для перехвата текста в библиотеке Skia подключается отдельный обработчик.Код отрисовки оптимизирован для работы в терминале и позволяет выводить графику с частотой обновления на уровне 60 FPS с минимальной нагрузкой на CPU.

// cc-by opennet.ru
// converted with crypt’s opennet autoreposter <<<

  • TheAnonymous
    link
    fedilink
    arrow-up
    0
    ·
    3 years ago

    Ну это никакие не сиксели, на знакоместо два квадрата. Символ - половина закрашенного знакоместа, соответственно два цвета, фон - один квадрат, основной - второй. Это любой терминал умеет. А сиксели выглядит как какое-то ненужно, т.к. нужен специальный терминал с их поддержкой, тогда уж можно и нормальное графическое приложение запустить, а в терминале всё равно цвета шакальные (судя по странице https://linuxtalks.co/news/chrome/56312?cid=56325). Вот что неплохо было бы - сделать легковесный браузер а-ля опера-мини, только графику не в сиксели преобразовывать (и тем более не в квадраты-знакоместа), а в например обычные растровые жпеги. А то веб на клиентской стороне разжирел, а так хоть можно будет браузер вынести на отдельный сервер