Accueil Astuces et Informations Carbonyl, un navigateur Web de terminal basé sur Chromium

Carbonyl, un navigateur Web de terminal basé sur Chromium

2
2
Carbonyl

Carbonyl un navigateur Web de console

La nouvelle du lancement de un nouveau navigateur Web pour console, Carbonyl, basé sur moteur chrome et capable d’afficher n’importe quel site sur le terminal, y compris YouTube.

Le Navigateur prend en charge presque toutes les API Web, y compris WebGL, WebGPU et des outils pour lire de la vidéo, du son et de l’animation. L’opération est possible à la fois avec le lancement direct du terminal et avec une connexion via SSH.

À propos de Carbonyle

Le projet poursuit le développement de l’utilitaire html2svg, qui a été développé à l’origine pour convertir HTML et en images vectorielles (SVG, PDF) ou bitmap (PNG, JPEG, WebP), et sert désormais de base au rendu vers le Terminal.

Pour afficher des graphiques, la capacité des terminaux comme xterm-256 est utilisée pour afficher les caractères Unicode en couleur : le symbole U+2584 (“▄”) est utilisé comme un pixel virtuel. Profitant du fait que le rapport d’aspect de ce symbole est de 1: 2, il est possible d’afficher deux pixels carrés basés sur celui-ci, dont le haut définit la couleur d’arrière-plan et le bas définit le premier plan.

Il télécharge des images accélérées par le matériel à partir du GPU, ce qui explique l’utilisation surprenante de la bande passante mémoire. Nous pouvons désactiver la récupération et même désactiver l’accélération matérielle, mais nous avons toujours des machines IPC coûteuses qui nous retiennent.

Le rendu logiciel est encore très courant, il était même utilisé par défaut si vous pouvez le croire. C’était assez facile à l’époque des processus uniques, mais aujourd’hui, les régions de mémoire partagée sont configurées pour effectuer un rendu efficace à l’aide de plusieurs processus.

Si nous pouvions placer nos pixels dans l’une de ces régions de mémoire, nous n’aurions qu’à en informer notre processus de navigation via un simple message IPC.

Séquences d’échappement xterm sont utilisés pour suivre le mouvement de la souris, le mouvement du curseur et les changements de couleur du texte. Pour le terminal xterm, il est possible d’utiliser la palette RVB 6x6x6, et lorsqu’il est réglé sur le mode COLORTERM, il est possible d’utiliser une palette RVB couleur 24 bits.

Le texte est rendu à une taille fixe, séparé des images, plus pour intercepter le texte dans la bibliothèque Skia, un contrôleur séparé est branché. Le code de rendu est optimisé pour s’exécuter dans le terminal et vous permet d’afficher des graphiques à un taux de rafraîchissement de 60 FPS avec une charge CPU minimale.

Pour le rendu des images, il est mentionné que CapturePaintPreview est idéal pour html2svg, mais il n’est pas conçu pour le rendu en temps réel car il utilise des appels IPC pour prendre en charge correctement les iframes hors processus, faisant des allers-retours entre les processus du navigateur, le GPU et le moteur de rendu.

Dans ce que Carbonyl peut faire, ce qui suit se démarque :

  • déplacer le curseur
  • Écrire des caractères Unicode
  • Définir la couleur d’arrière-plan et de premier plan d’un personnage
  • Utilisez une palette RVB 6x6x6 ou RVB 24 bits si COLORTERM est défini sur truecolor.

Pour les intéressé à en savoir plus, ils doivent savoir que la liaison du moteur Chromium est écrite en TypeScript, C++ et Rust. Vous pouvez en savoir plus sur le développement dans le lien suivant.

Comment installer Carbonyl sous Linux ?

Pour ceux qui souhaitent pouvoir installer ce navigateur Web sur leur système, Je dois mentionner que cela prend un peu de temps, car il s’agit essentiellement de compiler Chromium et appliquez les correctifs nécessaires pour pouvoir créer l’image docker du navigateur.

La première chose est obtenir le code Chromium avec :

./scripts/gclient.sh sync

Nous procédons à l’application des correctifs (toutes les modifications apportées dans Chromium seront annulées, alors assurez-vous de sauvegarder les modifications que vous avez apportées).

./scripts/patches.sh apply

après ça nous procédons à la configuration :

./scripts/gn.sh args out/Default

Par défaut c’est le nom de la destination, vous pouvez en utiliser plusieurs et choisir le nom que vous voulez, c’est à dire :

  • ./scripts/gn.sh args out/release
  • ./scripts/gn.sh args out/débogage
  • ./scripts/gn.sh args out/arm64
  • ./scripts/gn.sh args out/amd64

Ensuite, lorsque vous y êtes invité, les arguments suivants doivent être saisis :

import("//carbonyl/src/browser/args.gn")

# décommentez ceci pour construire pour arm64
# target_cpu=”arm64″

# décommentez ceci pour activer ccache
# cc_wrapper=”env CCACHE_SLOPPIESS=time_macros ccache”

# décommentez ceci si vous construisez pour macOS
# use_lld=false

# décommentez ceci pour une version de version
# est_debug=faux
# niveau_symbole=0

Nous procédons à la construction des binaires avec :

./scripts/build.sh Default

Ce qui devrait produire les résultats suivants :

out/Default/headless_shell: browser binary
out/Default/icudtl.dat
out/Default/libEGL.so
out/Default/libGLESv2.so
out/Default/v8_context_snapshot.bin

Et finalement Pour créer une image Docker, exécutez simplement les suivants (selon le cas de votre architecture). Pour ARM :

./scripts/docker.sh arm64 Default

Pour x64 :
./scripts/docker.sh amd64 Default

Enfin, le navigateur peut être exécuté avec :

./scripts/run.sh Default https://wikipedia.org