opensourceprojects.dev

A broadsheet for software that doesn't ask for your email

Cross-platform C++ framework with native HTML and CSS rendering
GitHub RepoImpressions3

Project Description

View on GitHub

A C++ Framework That Renders HTML and CSS Natively

Building a desktop or mobile app in C++ usually means choosing between a game engine with a clunky UI toolkit or a native framework that locks you into one platform. What if you could style your interface with CSS and structure it with HTML, then ship it natively across Linux, Windows, macOS, and mobile? That's the idea behind eepp.

What It Does

eepp (short for Entropia Engine++) is an open source, cross-platform game and application development framework with a heavy focus on rich graphical user interfaces. It's written in C++ and officially supports Linux, Windows, macOS, FreeBSD, Haiku, Android, and iOS, with HTML5 export via emscripten (with some minor limitations).

The framework is split into modules. The UI module gives you a full widget system with buttons, textboxes, comboboxes, input boxes, menus, listboxes, and scrollbars, along with animation, scaling, rotating, clipping, events, and messages. The graphics module handles rendering through OpenGL 2, OpenGL 3, OpenGL ES 2, OpenGL ES 1, and OpenGL Core Profile, with a batch renderer that automatically batches all rendering. It also supports TrueType, BMFont, and XNA fonts, frame buffers, and shaders.

The part that stands out is the HTML+CSS compatibility layer, which renders HTML documents natively through a UIWebView component (also used by UIMarkdownView for Markdown rendering).

Why It's Cool

Here's what makes eepp worth a look:

  • Native HTML and CSS rendering in C++. This isn't a webview wrapper. The CSS layout system covers block, inline, inline-block, flex (Flexbox Level 1), inline-flex, grid, inline-grid, table, list-item, and none display modes. Positioning supports absolute, fixed, float, relative, and sticky. If you've ever wanted to style a native C++ interface the way you'd style a web page, this is that.

  • It follows the specs, not its own rules. The README is explicit that the project aims to be spec-compliant where implemented and follows the CSS and HTML Living Standard specifications rather than inventing custom behavior. That matters if you're porting existing markup or just want predictable results.

  • Android-style layouts for native UI. Beyond the web layer, the framework offers a layout system similar to Android's (LinearLayout, RelativeLayout, GridLayout). You can also load and style layouts from XML, and use cascading style sheets for styling.

  • Draw invalidation for real apps. The UI system only redraws when needed, which keeps resource usage low. That's a detail that separates a toy framework from one you'd actually ship a desktop application with.

  • Practical widget features you'd expect from a mature toolkit. Text selection, copy and paste, key bindings, themes and skins, pixel density scaling, and document-scoped stylesheets with CSS viewport and media queries. There's also support for scoped @font-face font resources.

  • A surprisingly wide platform list. FreeBSD and Haiku support isn't something you see every day, and the CI badges cover Linux, Windows, macOS, iOS, Android, and emscripten.

How to Try It

The README doesn't include install commands, so you'll want to head to the repository for build instructions and documentation:

  1. Go to https://github.com/spartanj/eepp and check the repository's build and setup documentation for your target platform.
  2. Clone the repo and follow the platform-specific build steps for Linux, Windows, macOS, or whichever target you're working with.
  3. Once built, look at the examples to see how the UI module, layout system, and the HTML+CSS compatibility layer are used in practice.
  4. If you're specifically interested in the web rendering side, explore the UIWebView component and its use in UIMarkdownView for Markdown rendering.

Since the README was truncated, treat the repository itself as the source of truth for dependencies, build requirements, and the full feature list.

Final Thoughts

eepp is a framework for a specific kind of developer: someone building a C++ application or game with a complex UI who'd rather write CSS than wrestle with a bespoke styling system. The HTML+CSS layer is described as an ongoing effort, so it's worth checking how complete it is for your use case before committing. But the combination of a mature widget set, a spec-oriented CSS engine, and support for seven-plus platforms is a genuinely unusual package. If native UI work in C++ has always felt like a trade-off, this project is worth exploring.


Follow @githubprojects for more developer tools and open source projects.

Back to Projects
Project ID: 7ae1ebb8-95ed-49e4-b362-744e74c38cc6Last updated: October 1, 2026 at 06:00 AM