This second release of Carbonyl is very special!
Introducing Bitmap Mode
You can now start Carbonyl with a --bitmap
flag to disable terminal text rendering.
Combined with the new --zoom
flag, this lets you get a high-res browser in most terminals with zoom control. Look ma', no SIXEL!
Some terminals such as the macOS stock terminal are not efficient enough to render in bitmap mode. We found Alacritty and Kitty to perform the best, although Kitty's zoom is limited. Alacritty can render Carbonyl in 1080p at ~40FPS on an M1.
More is coming to bitmap mode. Most notably, we will integrate the complete Chromium UI.
Bigger
Carbonyl now uses a process we call "quadrant binarization": we take 4 pixels and turn them into a foreground color, a background color, and one of these unicode quadrant characters: ▄
, ▖
, ▗
, ▝
, ▘
, ▞
, ▐
, ▌
, ▚
. (code)
This allows Carbonyl to render 4 visible pixels per terminal cells, instead of 2 for previous versions. The page zoom also got tweaked to look better on terminals.
0.0.2
| 0.0.3
|
---|---|
Faster
Bitmap mode puts more pressure on Carbonyl's renderer, so the renderer now runs in a dedicated thread and batches input events. This frees the browser thread to handle inputs and send them to tab processes. This makes expensive inputs such as scrolling far smoother.
All binaries are now compiled with Chromium PGO profiles, this brings a ~4% speedup. macOS binaries are now compiled with LLVM lld
and have LTO enabled, this brings a ~15% speedup.
Lighter
Previous versions required a cocktail of ~20 dependencies to work on Linux. It makes sense for Chromium to have that many dependencies, but in our case we do not render in a window server or use GUI toolkits.
This version of Carbonyl only requires 4 dependencies now:
libnss3
: SSL library needed for root SSL certificateslibexpat1
: XML library, will be removed in the futurelibasound2
: ALSA library for audio playbacklibfontconfig1
: we need the configuration this package generates
This makes the Docker image go from 160 MB to 110 MB.
🚀 Features
- Add
--help
and--version
(#105) - Add logo and description to
--help
(#106) - Use Cmd instead of Alt for navigation shortcuts (#109)
- Enable h.264 support (#103)
- Introduce quadrant rendering (#120)
🐛 Bug Fixes
- Fix arguments parsing (#108)
- Fix missing module error on npm package (#113)
- Enable threaded compositing with bitmap mode
- Fix idling CPU usage (#126)
- Package proper library in binaries (#127)