🌐

eBrowser

Embedded Web Browser

Lightweight web browser for embedded and IoT devices. Renders modern web content on devices with as little as 16 MB RAM — kiosks, automotive, smart home panels.

Application LayerC/C++Active Development

Key Features

HTML5/CSS3 Rendering — Flexbox/grid layout
JavaScript Engine — ES6+ support
SDL2 Hardware Acceleration
LVGL v9.2 Widget Integration
HTTP/HTTPS with TLS 1.3
Touch, Mouse, Keyboard, Rotary Input
130+ Tests across 7 test suites

Architecture

User Interface (Tab Manager, Address Bar, DevTools)
├── Core Engine (HTML Parser, CSS Parser, Layout, JS Engine)
├── Rendering Backend (SDL2, LVGL v9.2, Canvas, Fonts)
├── Network Stack (HTTP, TLS, DNS, Cache, Cookies)
├── Input Layer (Touch, Mouse, Keyboard, Gestures)
└── Platform Abstraction (Linux FB, X11, Wayland, eos)

Code Example

cpp

#include <ebrowser/engine.h>
#include <ebrowser/view.h>

ebrowser::Engine engine;
engine.init({
    .backend = ebrowser::Backend::SDL2,
    .width = 800, .height = 480,
    .enable_js = true,
    .cache_size_mb = 8
});

auto view = engine.create_view();
view->navigate("https://dashboard.local");
view->on_load([](ebrowser::View& v) {
    printf("Loaded: %s\n", v.get_title().c_str());
});
engine.run();

API Highlights

FunctionDescription
engine.init()Initialize browser engine with config
engine.create_view()Create a new browser view
view->navigate()Navigate to URL
view->on_load()Register page load callback