Carbonyl een console-webbrowser
Het nieuws van de lancering van een nieuwe console-webbrowser, Carbonyl, gebaseerd op de motor Chromium en in staat om elke site op de terminal weer te geven, inclusief YouTube.
De browser ondersteunt bijna alle web-API's, waaronder WebGL, WebGPU en hulpmiddelen voor het afspelen van video, geluid en animatie. De bediening is zowel mogelijk met directe lancering van de terminal als met verbinding via SSH.
Over carbonyl
El proyecto continue ontwikkeling van het hulpprogramma html2svg, die oorspronkelijk werd ontwikkeld om HTML te converteren en in vectorafbeeldingen (SVG, PDF) of bitmapafbeeldingen (PNG, JPEG, WebP) en wordt nu gebruikt als basis voor weergave naar de terminal.
Om grafieken weer te geven, wordt de mogelijkheid van terminals zoals xterm-256 gebruikt om Unicode-tekens in kleur weer te geven: het symbool U+2584 ("▄") wordt gebruikt als een virtuele pixel. Door gebruik te maken van het feit dat de beeldverhouding in dit symbool 1:2 is, is het mogelijk om twee vierkante pixels op basis daarvan weer te geven, waarvan de bovenkant de achtergrondkleur bepaalt en de onderkant de voorgrond.
Het downloadt hardwareversnelde afbeeldingen van de GPU, wat het verrassende gebruik van geheugenbandbreedte verklaart. We kunnen herstel uitschakelen en zelfs hardwareversnelling uitschakelen, maar we hebben nog steeds dure IPC-machines die ons tegenhouden.
Softwarerendering is nog steeds heel gewoon, het was zelfs de standaard als je het kunt geloven. Het was eenvoudig genoeg in de dagen van het enkele proces, maar tegenwoordig zijn gedeelde geheugenregio's zo ingesteld dat ze efficiënt worden weergegeven met behulp van meerdere processen.
Als we onze pixels in een van deze geheugenregio's kunnen plaatsen, hoeven we alleen maar ons browserproces op de hoogte te stellen via een eenvoudig IPC-bericht.
ontsnappingsreeksen xterm worden gebruikt om muisbewegingen te volgen, cursorbeweging en tekstkleurveranderingen. Voor de xterm-terminal is het mogelijk om het 6x6x6 RGB-palet te gebruiken, en wanneer de COLORTERM-modus is ingesteld, is het mogelijk om een 24-bit full colour RGB-palet te gebruiken.
De tekst wordt weergegeven op een vaste grootte, gescheiden van de afbeeldingen, plus om tekst in de Skia-bibliotheek te onderscheppen, is een aparte controller aangesloten. De weergavecode is geoptimaliseerd om in de terminal te worden uitgevoerd en stelt u in staat afbeeldingen weer te geven met een vernieuwingsfrequentie van 60 FPS met minimale CPU-belasting.
Voor het renderen van de afbeeldingen wordt vermeld dat CapturePaintPreview geweldig is voor html2svg, maar het is niet ontworpen voor realtime rendering omdat het IPC-oproepen gebruikt om out-of-process iframes correct te ondersteunen, waardoor er heen en weer wordt gereisd tussen browserprocessen, de GPU en de renderer.
Binnen wat Carbonyl kan doen, valt het volgende op:
- cursor verplaatsen
- Schrijf Unicode-tekens
- Stel de achtergrond- en voorgrondkleur van een personage in
- Gebruik een 6x6x6 RGB-palet of 24-bits RGB als COLORTERM is ingesteld op ware kleuren.
Voor geïnteresseerd om er meer over te weten, ze moeten weten dat de Chromium-enginekoppeling is geschreven in TypeScript, C ++ en Rust. U kunt meer leren over de ontwikkeling In de volgende link.
Hoe installeer ik Carbonyl op Linux?
Voor degenen die geïnteresseerd zijn om deze webbrowser op hun systeem te kunnen installeren, Ik moet vermelden dat het een beetje tijdrovend is, omdat het eigenlijk Chromium compileert en pas de nodige patches toe om de docker-image van de browser te kunnen maken.
Het eerste is verkrijg de Chromium-code met:
./scripts/gclient.sh sync
We gaan verder met het toepassen van de patches (alle wijzigingen die in Chromium zijn aangebracht, worden ongedaan gemaakt, dus zorg ervoor dat u de aangebrachte wijzigingen opslaat).
./scripts/patches.sh apply
Daarna we gaan verder met configureren:
./scripts/gn.sh komt uit/Default
Standaard is de bestemmingsnaam, u kunt er meerdere gebruiken en de gewenste naam kiezen, bijvoorbeeld:
- ./scripts/gn.sh pleit uit/release
- ./scripts/gn.sh voert uit/debug
- ./scripts/gn.sh argumenteert/arm64
- ./scripts/gn.sh argumenteert/amd64
Vervolgens moeten desgevraagd de volgende argumenten worden ingevoerd:
import("//carbonyl/src/browser/args.gn")
# verwijder dit commentaar om te bouwen voor arm64
# target_cpu=”arm64″
# verwijder het commentaar om ccache in te schakelen
# cc_wrapper=”env CCACHE_SLOPPINESS=time_macros ccache”
# verwijder het commentaar als je voor macOS bouwt
# use_lld=false
# verwijder dit commentaar voor een release-build
# is_debug=false
# symbol_level=0
We gaan verder met het bouwen van de binaire bestanden met:
./scripts/build.sh Default
Wat de volgende resultaten zou moeten opleveren:
out/Default/headless_shell: browser binary
out/Default/icudtl.dat
out/Default/libEGL.so
out/Default/libGLESv2.so
out/Default/v8_context_snapshot.bin
En tenslotte Voer gewoon uit om een Docker-image te maken het volgende (afhankelijk van het geval van uw architectuur). Voor ARM:
./scripts/docker.sh arm64 Default
Voor x64:
./scripts/docker.sh amd64 Default
Ten slotte kan de browser worden uitgevoerd met:
./scripts/run.sh Default https://wikipedia.org
Wees de eerste om te reageren