Консоль Linux обычно имеет дисплей с клавиатурой и используется для подключения к главному компьютеру для обмена данными и отображения результатов обработки. В большинстве случаев сама обработка выполняется хост-компьютером. Однако есть гики, которые хотят на консоли просматривать веб-страницы, и есть программное обеспечение, такие как текстовые браузеры типа «Browsh», которые могут отображать веб-сайты в графическом виде без графического интерфейса.

Большинство основных дистрибутивов Linux поставляются с предустановленными Firefox или Falkon. И идея текстового браузера для консоли Linux может показаться абсурдной. В конце концов, первые браузеры были основаны на графическом интерфейсе, а современный Интернет так вообще состоит из графики и JavaScript — элементов, с которыми консольным браузерам трудно или даже невозможно работать. Но именно эта несовместимость с современной Сетью делает консольные браузеры такими привлекательными для некоторых пользователей. Для этого есть несколько причин. Интерфейсы таких браузеров чрезвычайно просты в компоновке и работают очень быстро. Текстовые браузеры требуют меньше пропускной способности для работы, и загружают страницы намного быстрее, чем графические. Кроме того, графические браузеры потребляют больше ресурсов ЦП для Javascript, CSS и т. д. Также изображения, автоматически воспроизводимые видео и звуковые эффекты могут отвлекать внимание пользователя.

Но как можно сохранить малое потребление ресурсов ЦП текстовых браузеров, при этом отображая графику через консоль?

Через Carbonyl.

Сколько вешать...


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

На момент написания статьи домашняя страница Lenta.ru весила почти 10 МБ (замерено через 2ip.ru). Это довольно много (оптимально веб-страницы должны весить не больше 3 МБ). Если вы посещаете новостные порталы или другие сайты каждый день с помощью обычного браузера, потребление трафика может быстро увеличиться, а это уже влетит вам в копеечку. Если вы используете браузер через консоль, вы загружаете HTML, но не изображения, видео и рекламу, экономя десятки, а то и сотни МБ в течение дня. JavaScript также не выполняется в текстовом браузере, а это означает, что программные платные сети, такие как The New York Times, не срабатывают. Вы можете читать столько статей, сколько хотите, без перерывов и бесплатно.

Новый браузер Carbonyl, основан на движке Chromium и способен отображать на консоли любой сайт, включая YouTube. Браузер поддерживает почти все веб-API, включая WebGL, WebGPU и инструменты для воспроизведения видео, звука и анимации. Работа возможна как при прямом запуске консоли, так и при подключении по SSH. Carbonyl можно назвать лучшим браузером Linux. Это полноценный браузер, который соответствует и совместим с современными стандартами, а это означает, что страницы открываются так, как должны, и пользователь может смотреть потоковое видео в консоли Linux.


Все консольные браузеры имеют ограничения: Lynx — старейший браузер из тех, которые до сих пор поддерживается, функциональный и мало потребляет трафик, но не поддерживает мультимедиа любого типа. w3m может отображать изображения, но полностью нарушает форматирование и имеет тенденцию тормозить и зависать. Browsh, который работает, запуская Firefox в автономном режиме и подключаясь к нему через протокол автоматизации, достаточно ресурсоёмкий и медленный, и, несмотря на лежащий в его основе стек Firefox, тоже имеет серьёзные проблемы с форматированием.

Carbonyl является ответвлением проекта Google Chromium и не имеет ни одной из упомянутых выше проблем. Страницы открываются и отображаются мгновенно — быстрее, чем браузер с графическим интерфейсом на рабочем столе. Использование ресурсов невелико, особенно если запускать Linux без среды рабочего стола. Более того, Carbonyl обладает почти всеми возможностями обычного Chromium. Можно смотреть видео на YouTube или играть в онлайн-игры такие, как например Doom. Миниатюры предварительного просмотра видео, GIF-файлы запускаются автоматически.

К сожалению, в настоящее время расширения не поддерживаются, хотя, вероятно, будут в будущем.


В то время как вход в онлайн-аккаунты является рутиной с такими браузерами, как Lynx, с Carbonyl можно быстро и без усилий войти в Gmail, Slack, Asana и OpenAI. Carbonyl протестирован на ряде консолях Linux, включая XFCE, GNOME, kitty и Cool Retro Terminal. Браузер был плавным и быстрым на всех. Также Carbonyl удалённо запускается на Raspberry Pi через SSH в ЭЛТ.

Как запустить Carbonyl на консоли Linux


Carbonyl доступен в виде образа Docker, поэтому убедитесь, что у вас установлен Docker и что ваш аккаунт входит в группу Docker.

Загрузите образ Carbonyl Docker:

docker run -ti fathyb/carbonyl https://duckduckgo.com


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

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

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

Carbonyl на GitHub.


Fathy Boundjadj, один из разработчиков Carbonyl, изначально работал над программой под названием html2svg, написанный на Rust, и который преобразует веб-страницы в векторные (SVG, PDF) или растровые изображения (PNG, JPEG, WebP). html2svg включён как среда выполнения Carbonyl. По словам Фати, помимо гарантии того, что консоль может «отрисовывать моноширинные символы в фиксированной сетке», он мало что может сделать, как правило, «перемещать курсор», «отображать символы Unicode» и «устанавливать цвет фона и цвет переднего плана».

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

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

Через html2svg вот так открывается страница YouTube с помощью эмулятора консоли.



После улучшения анимации и прокрутки, решения проблем с макетом, Carbonyl сможет отображать Википедию или воспроизводить DOOM.






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


  1. up40k
    00.00.0000 00:00
    +13

    Если вы используете браузер через консоль, вы загружаете HTML, но не изображения, видео и рекламу, экономя десятки, а то и сотни МБ в течение дня.

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

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

    Browsh, который работает, запуская Firefox в автономном режиме

    Автономный и headless режимы - это две разные сущности.

    Загрузите образ Carbonyl Docker: docker run -ti fathyb/carbonyl https://duckduckgo.com

    При первом запуске этой команды придётся подождать до нескольких минут, пока изображения будут загружены

    После изображений уже не смог читать, извините.


  1. alexander222
    00.00.0000 00:00
    +5

    Тема экономии траффика не понятна, чтобы преобразовать картинку в символы ее все равно надо скачать.


    1. login0101
      00.00.0000 00:00
      +4

      возможно в переводе что-то потерялось и имеется в виду вариант когда этот "браузер" работает где-то на сервере, а ты подключаешься к нему как к удалённому терминалу по ssh или типа того


      1. vlad196
        00.00.0000 00:00

        Всё равно спорно. Мозайка символов получаются + в потоке и при каждом взаимодействии с браузером оно постоянно грузит с сервера новую картинку, ну и поток данных получается избыточен (всегда грузит одно и то же количество символов на окно, даже если это пустой белый фон). Намного экономней будет просто запретить картинки и видео в браузере и пусть полностью прогрузит страницу. Один фиг при таком отображении медиа это нечитабельно будет.

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


  1. invasy
    00.00.0000 00:00
    +5

    Это перевод ведь (причём корявый). Почему нет плашки соответствующей со ссылкой на оригинал? На английском понятней было бы.


    Upd: нашёл оригинальную статью.


  1. baldr
    00.00.0000 00:00
    +4

    p<censored>hub в этом браузере прямо вышиб слезу ностальгии по интернету конца 90-х.


  1. zbot
    00.00.0000 00:00

    угу понятно типа как GeForce NOW только теперь уже браузер для слабых компьютеров. Что там дальше редактор текста и таблицы запущенные где-то в облаке и в виде картинок пересылаемые на компьютер пользователя?


    1. thevlad
      00.00.0000 00:00
      +1

      редактор текста и таблицы запущенные где-то в облаке и в виде картинок пересылаемые на компьютер пользователя

      Так вроде уже давно, как есть RDP и VCN.


      1. zbot
        00.00.0000 00:00

        ну так а накой тогда этот мудреж в статье? Или браузер так через RDP не работает? (Помнится где-то в начале нулевых еще работало.)


        1. kmeaw
          00.00.0000 00:00

          Текст (пусть и подкрашенный ANSI escape-последовательностями) пересылать ещё дешевле, чем скриншот окна браузера.


  1. dmitryrf
    00.00.0000 00:00

    Перевод ужасный

    является рутиной с такими браузерами, как Lynx

    в оригинале
    is a chore with browsers such as Lynx

    Здесь не рутина, а кошмар, который противопоставлен удобству Carbonyl, о чём и сказано во второй части предложения. А вы смысл полность перевернули и потеряли в процессе.


  1. znesterov
    00.00.0000 00:00

    на первой же капче возникли трудности )