Забавно, как иногда жизнь подкидывает штуки, которых вроде не ждал, но они идеально вписываются в какую-то странную нишу — как Carbonyl. Вроде бы терминальных браузеров уже наплодилось сколько хочешь: кто-то живёт в w3m, кто-то даже Lynx ещё помнит, а кто-то — ну да, мы все знаем этих ребят, которые открывают Firefox в X11 через VNC. Но всё это как-то… ну, не то. И вот появляется Carbonyl, который, кажется, вообще другой уровень. Тут уже не просто текст, а целый Chromium — только без привычных окон, прямо в терминале, да ещё и с поддержкой всяких современных наворотов.
Вообще, Carbonyl выглядит как такой немного хакерский фокус: под капотом Chromium, но работает, как будто это что-то с середины девяностых — только уже совсем другой масштаб возможностей. Всё, что можно было себе представить в терминальном браузере, тут реализовано, и даже чуточку больше. Можно, конечно, поразмышлять, зачем вообще браузер на Chromium запускать в терминале, когда есть X11, Wayland, да хоть что — но иногда нужен именно такой инструмент. Например, когда доступ только по SSH, никакого X-сервера и не предвидится, а вот страничку посмотреть — надо.
Ну, и про рендеринг, конечно, отдельная история. Большинство «терминальных» браузеров — они всё-таки больше про текст. Там цвета — и то уже праздник, не говоря уж про какие-нибудь картинки или видео. А тут — Carbonyl умеет отрисовывать страницы практически как обычный Chrome, только прямо в терминал. WebGL, CSS, анимации, шрифты, SVG — всё это работает. Нет, не идеально, конечно — но на фоне конкурентов это, мягко говоря, прорыв. К тому же браузер реально быстрый: он грузится почти мгновенно, потребляет ресурсов меньше, чем даже какой-нибудь старенький Firefox, и при этом не требует ничего, кроме обычного терминала.
Работает Carbonyl без оконного сервера, что, кстати, тоже плюс. Потому что многие альтернативные браузеры для терминала рано или поздно начинают чего-то хотеть — X11, какие-то дополнительные зависимости, ещё что-то. Здесь же всё работает, где есть SSH-доступ, а значит, пригодится и на сервере, и на каком-нибудь старом ноутбуке, и даже на Raspberry Pi, если вдруг очень захочется что-то быстро проверить. Просто запускаешь — и у тебя в терминале появляется почти что полноценный современный браузер.
Немного магии, как оно вообще возможно: Carbonyl не изобретает свой рендерер — он реально запускает Chromium. Только запускает его так, что всё выводится не в окно, а в терминал, в виде, скажем так, «псевдографики». То есть, HTML превращается в нечто, что терминал понимает, и даже медиаконтент — тот же WebGL — каким-то чудом появляется на экране, пусть и с поправкой на ограничения самого терминала. Работает всё через обёртку, которая ловко перехватывает вывод и трансформирует его под возможности консоли.
По поводу скорости — тут удивительно, но Carbonyl реально не жрёт ресурсы. Можно открыть несколько вкладок, и при этом не услышать, как взлетает кулер. Процесс работает быстро, потому что Chromium запускается в «голом» виде, без кучи оконной мишуры, без десятка фоновых процессов, которые обычно тянут браузер на дно. В Carbonyl всё оптимизировано: только то, что реально нужно для рендера и взаимодействия. А это значит — меньше памяти, меньше процессора, и всё это — прямо в любимом терминале.
Что касается интерфейса — ну, тут всё довольно аскетично. Нет привычных кнопок «назад» и «вперёд», нет вкладок в привычном понимании. Всё управление через клавиатуру, по-честному, как мы любим: хотел перезагрузить страницу — вот команда, хотел перейти по ссылке — пожалуйста, вперёд. Ощущается, будто управляешь браузером через TUI, но с современным «начинкой». Для тех, кто вырос на Midnight Commander и vim — будет только в кайф, а вот любители мышки, наверное, слегка удивятся. Хотя, если уж пришёл в терминал, мышкой обычно и так не размахиваешь.
В целом, Carbonyl создаёт очень странное, но приятное ощущение — вроде как сидишь в консоли, а перед глазами почти что обычный интернет. Можно посмотреть новости, залогиниться на каком-нибудь сайте, даже видео проиграть (да, оно работает, правда, звук может быть не всегда идеальным — терминал всё же не плеер). Особенно впечатляет поддержка WebGL — обычно даже многие «обычные» браузеры начинают кашлять на этом моменте, а тут всё рендерится, пусть и не на всю катушку.
Есть, конечно, и свои ограничения. Например, с JavaScript-сложными страницами могут возникнуть нюансы — иногда скрипты работают чуть иначе, чем в стандартном Chrome, где-то что-то может не подгрузиться, особенно если на сайте куча модных фреймворков. Но для большинства задач — от поиска документации до работы с какими-то админками — Carbonyl подходит отлично. И, что важно, никакой зависимости от оконной системы: запустил через SSH — и пошёл работать.
Для чего это вообще нужно? Вот тут начинается самое интересное. У каждого, кто хоть раз админил сервер, был этот момент: сидишь где-нибудь в tmux, нужно срочно проверить страницу, посмотреть отчёт, что-то быстро глянуть, а никакого графического интерфейса под рукой нет. Вот для таких ситуаций Carbonyl — просто палочка-выручалочка. Не надо городить X11, не надо тащить VNC, всё работает здесь и сейчас. Плюс, иногда просто хочется по-быстрому проверить, как сайт выглядит без всяких наворотов — тут Carbonyl тоже заходит.
Установка не требует каких-то особых знаний: репозиторий на GitHub вполне дружелюбный, там всё описано. Проблем с зависимостями обычно не возникает — если стоит нормальный терминал, всё заведётся. Разработчики регулярно обновляют проект, баги фиксят, новые фичи добавляют — так что на месте всё это не топчется. Для энтузиастов всегда есть возможность собрать под себя, докрутить какие-то настройки, включить или выключить нужные опции.
Ну и да, Carbonyl не пытается заменить привычные браузеры, он именно что дополняет их — для особых случаев. Основной рабочий Chrome никто не отбирает, просто иногда удобно иметь что-то такое «карманное», которое не привязано к графической оболочке.
В общем, Carbonyl — не просто терминальный браузер, а, скорее, мостик между двумя мирами: графическим и консольным. Он не идеален, и уж точно не для всех, но если нужно максимально быстро и без лишних телодвижений получить нормальный рендеринг веба там, где обычно можно только мечтать о «графике» — это прямо находка. Для старых машин, серверов, всяких экзотических случаев — must have в арсенале.
Если интересно потыкать — вот и репозиторий.