Nyheten om lanseringen av en ny konsolwebbläsare, Carbonyl, baserad på motorn krom och kan visa vilken webbplats som helst på terminalen, inklusive YouTube.
Webbläsaren stöder nästan alla webb-API:er inklusive WebGL, WebGPU och verktyg för att spela upp video, ljud och animationer. Driften är möjlig både med direktstart av terminalen och med anslutning via SSH.
Om Carbonyl
Projektet fortsätter utvecklingen av verktyget html2svg, som ursprungligen utvecklades för att konvertera HTML och i vektorbilder (SVG, PDF) eller bitmappsbilder (PNG, JPEG, WebP), och används nu som grund för rendering till terminalen.
För att visa grafer används kapaciteten hos terminaler som xterm-256 för att visa Unicode-tecken i färg: symbolen U+2584 ("▄") används som en virtuell pixel. Genom att dra fördel av det faktum att bildförhållandet i denna symbol är 1:2, är det möjligt att visa två kvadratiska pixlar baserat på den, vars överkant anger bakgrundsfärgen och den nedre anger förgrunden.
Den laddar ner hårdvaruaccelererade bilder från GPU:n, vilket förklarar den överraskande användningen av minnesbandbredd. Vi kan inaktivera återställning och till och med inaktivera hårdvaruacceleration, men vi har fortfarande dyra IPC-maskiner som håller oss tillbaka.
Programvarurendering är fortfarande mycket vanligt, det brukade till och med vara standard om du kan tro det. Det var tillräckligt enkelt under de enstaka processdagarna, men idag ställs delade minnesregioner in för att rendera effektivt med flera processer.
Om vi kan placera våra pixlar i en av dessa minnesregioner, skulle vi bara behöva meddela vår webbläsarprocess via ett enkelt IPC-meddelande.
flyktsekvenser xterm används för att spåra musrörelser, markörrörelser och textfärgändringar. För xterm-terminalen är det möjligt att använda 6x6x6 RGB-paletten, och när den är inställd på COLORTERM-läge är det möjligt att använda en 24-bitars fullfärgs RGB-palett.
Texten återges i en fast storlek, separat från bilderna, plus för att fånga upp text i Skia-biblioteket är en separat kontrollenhet inkopplad. Återgivningskoden är optimerad för att köras i terminalen och låter dig visa grafik med en uppdateringshastighet på 60 FPS med minimal CPU-belastning.
För att rendera bilderna nämns att CapturePaintPreview är bra för html2svg, men det är inte designat för realtidsrendering eftersom det använder IPC-anrop för att korrekt stödja out-of-process iframes, vilket gör rundresor mellan webbläsarprocesser, GPU:n och renderaren.
Inom vad Carbonyl kan göra, sticker följande ut:
- flytta markören
- Skriv Unicode-tecken
- Ställ in bakgrunds- och förgrundsfärgen för en karaktär
- Använd en 6x6x6 RGB-palett eller 24-bitars RGB om COLORTERM är inställd på truecolor.
För intresserad av att veta mer om det, de borde veta att Chromium-motorlänken är skriven i TypeScript, C++ och Rust. Du kan lära dig mer om utvecklingen I följande länk.
Hur installerar man Carbonyl på Linux?
För de som är intresserade av att kunna installera den här webbläsaren på sitt system, Jag bör nämna att det är lite tidskrävande, eftersom det i princip är att kompilera Chromium och tillämpa de nödvändiga korrigeringarna för att kunna skapa docker-bilden för webbläsaren.
Den första är hämta Chromium-koden med:
./scripts/gclient.sh sync
Vi fortsätter att applicera korrigeringarna (alla ändringar som görs i Chromium kommer att återställas, så se till att spara ändringarna du har gjort).
./scripts/patches.sh apply
Efter det vi fortsätter att konfigurera:
./scripts/gn.sh args out/Default
Standard är destinationsnamnet, du kan använda flera och välja det namn du vill ha, dvs:
- ./scripts/gn.sh argumenterar ut/släpper
- ./scripts/gn.sh args out/debug
- ./scripts/gn.sh args out/arm64
- ./scripts/gn.sh args out/amd64
Sedan, när du uppmanas, måste följande argument anges:
import("//carbonyl/src/browser/args.gn")
# avkommentera detta för att bygga för arm64
# target_cpu="arm64"
# avkommentera detta för att aktivera ccache
# cc_wrapper=”env CCACHE_SLOPPINESS=time_macros ccache”
# avkommentera detta om du bygger för macOS
# use_lld=falskt
# avkommentera detta för en versionsversion
# is_debug=false
#symbol_level=0
Vi fortsätter att bygga binärfilerna med:
./scripts/build.sh Default
Vilket borde ge följande resultat:
out/Default/headless_shell: browser binary
out/Default/icudtl.dat
out/Default/libEGL.so
out/Default/libGLESv2.so
out/Default/v8_context_snapshot.bin
och slutligen För att skapa en Docker-bild, bara kör följande (beroende på fallet med din arkitektur). För ARM:
./scripts/docker.sh arm64 Default
För x64:
./scripts/docker.sh amd64 Default
Slutligen kan webbläsaren köras med:
./scripts/run.sh Default https://wikipedia.org