🌐
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
| Function | Description |
|---|---|
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 |