<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adebayo Emmanuel</title>
    <description>The latest articles on DEV Community by Adebayo Emmanuel (@adebayo_emmanuel_75baca6a).</description>
    <link>https://dev.to/adebayo_emmanuel_75baca6a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4185618%2F152f0cca-22f1-45bf-a9ce-e06294cb2d46.png</url>
      <title>DEV Community: Adebayo Emmanuel</title>
      <link>https://dev.to/adebayo_emmanuel_75baca6a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adebayo_emmanuel_75baca6a"/>
    <language>en</language>
    <item>
      <title>UltraCanvas: a C++20 GUI framework for Windows, Linux, macOS and the browser</title>
      <dc:creator>Adebayo Emmanuel</dc:creator>
      <pubDate>Thu, 15 Oct 2026 21:02:58 +0000</pubDate>
      <link>https://dev.to/adebayo_emmanuel_75baca6a/ultracanvas-a-c20-gui-framework-for-windows-linux-macos-and-the-browser-3b0</link>
      <guid>https://dev.to/adebayo_emmanuel_75baca6a/ultracanvas-a-c20-gui-framework-for-windows-linux-macos-and-the-browser-3b0</guid>
      <description>&lt;p&gt;Every couple of years another C++ GUI framework turns up claiming one API for every desktop platform. Usually it turns out to be a thin wrapper over one native toolkit, and the other platforms are an afterthought.&lt;/p&gt;

&lt;p&gt;UltraCanvas is a newer one, and it looks further along than that. I spent the last few weeks running its builds on an ordinary Windows laptop and a Linux install, and this is what I found.&lt;/p&gt;

&lt;p&gt;The short version: a C++20 framework, CMake-based and MIT-licensed, with one API for windowing, rendering, input and events across Windows, Linux and macOS, plus a WebAssembly build you can open in a browser tab with nothing to install.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure
&lt;/h2&gt;

&lt;p&gt;I work with the ULTRA OS team on developer outreach, and UltraCanvas is the graphics layer of that project.&lt;/p&gt;

&lt;p&gt;Everything below comes from builds I ran myself, on a Windows laptop and a Linux install, or from facts I asked the maintainer to confirm. Where a number is his measurement rather than mine, I say so.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;UltraCanvas gives you one API for windows, rendering, input and events, and keeps the platform-specific code strictly separate underneath:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux: X11 and Cairo&lt;/li&gt;
&lt;li&gt;Windows: Win32 and Direct2D&lt;/li&gt;
&lt;li&gt;macOS: Cocoa and Core Graphics&lt;/li&gt;
&lt;li&gt;WASM: the same API compiled for the browser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Text rendering runs on FreeType, Pango and HarfBuzz. Image work goes through libvips. The repo structure makes the promise checkable: a public include set, a platform-independent core, and one folder per OS. If the abstraction holds, those folders should be the only code that knows what an operating system is. From what I could see in the tree, that is how it is laid out.&lt;/p&gt;

&lt;p&gt;The component count surprised me for a project this young. Around fifty, including split buttons, tree views, tabbed containers, toasts, color and date pickers, segmented controls, and Box/Grid/Flex layouts. There is a chart engine (line, bar, area, scatter, candlesticks, waterfall, Sankey), full Unicode text with styled rendering, and a plugin system for formats and renderers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it in a tab before you build anything
&lt;/h2&gt;

&lt;p&gt;If you read nothing else here, open this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://ultraos.eu/wasm/UltraCanvasDemo.html" rel="noopener noreferrer"&gt;https://ultraos.eu/wasm/UltraCanvasDemo.html&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the demo app compiled to WebAssembly. The first load pulls about 50 MB, which is the whole API plus a sample app in one payload rather than a trimmed hello world. For comparison, that is roughly what one Electron app ships just to say hello. On a fast connection it takes a few seconds. On mobile, wait it out once and it caches.&lt;/p&gt;

&lt;p&gt;What you get is a component browser where every entry carries a status marker: what works, what is partial, what is planned.&lt;/p&gt;

&lt;h2&gt;
  
  
  The modules behind it
&lt;/h2&gt;

&lt;p&gt;UltraCanvas is one of ten public repositories that together form a small platform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FileLoader&lt;/strong&gt;: load, save and convert across bitmap, vector, 3D, text, audio and movie formats. An app built on it stops caring what format the user shows up with.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UltraNet&lt;/strong&gt;: one surface for HTTP/S, WebSocket, FTP/SFTP, TCP/UDP, TLS and DNS, with plugins for the rest (SMTP, IMAP, MQTT, SSH, LDAP, RTSP, gRPC).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UltraAI&lt;/strong&gt;: a single C++ surface for chat, vision, speech, generation and translation, with interchangeable providers: cloud, local models, or in-process mocks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PixelFX&lt;/strong&gt;: bitmap manipulation built on libvips and ImageMagick behind a C++20 API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IODeviceManager&lt;/strong&gt;: scanners, cameras, GPIO and other hardware behind one abstraction layer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea is the same in each case. An app written against these modules stays portable, so the layers underneath can be swapped without app code noticing. That includes a future ULTRA OS running below everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  What already runs on it
&lt;/h2&gt;

&lt;p&gt;The repositories include a stack of applications built on the framework. I ran most of them. What stood out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UltraFiler&lt;/strong&gt;: the file manager, and the best demonstration of the stack. It previews SVG artwork properly, where Explorer shows a generic icon. Image metadata is shown inline. You can pin favorite folders. It speaks FTP and SFTP, and the format list in its settings is longer than any file manager I have used. The maintainer measures ZIP extraction at roughly four to five times Windows Explorer's speed on his machine, which I could not reproduce on my own hardware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Texter&lt;/strong&gt;: an editor with syntax highlighting and a Markdown preview that kept up with everything I threw at it. Of the lot, this one felt the most finished.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UltraViewer&lt;/strong&gt;: opens images, video, audio, PDF, Word and Excel documents, and exports between them. Load an SVG, save it as a JPG at whatever size you set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UltraMail&lt;/strong&gt;: a mail client with some nice touches, including favicons per sender and a copy button for login codes. Planned to stay free as the entry point to the ecosystem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CoderBox&lt;/strong&gt;: an IDE built on the same framework, in testing.&lt;/li&gt;
&lt;li&gt;Also UltraPaint, ArtCreator, ChatCube, UltraAI, UltraCleaner, UltraAuthenticator, UltraNetMonitor, UltraClipboard, and a demo app that previews every ULTRA OS module in one place.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two details for the C++ crowd.&lt;/p&gt;

&lt;p&gt;There is a native DWG decoder in-tree, covering AutoCAD drawings R13 through R2018 and the whole drawing family (.dwg, .dwt, .dws, .bak), with no external CAD engine. Writing DWG files goes through GNU LibreDWG's converter instead.&lt;/p&gt;

&lt;p&gt;The plugin system covers CDR via librevenge, XAR, and PDF via poppler, plus PNG, JPG, BMP, GIF, AVIF, WebP and QOI on the bitmap side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where things stand
&lt;/h2&gt;

&lt;p&gt;The framework is further along than the apps. That is the layering rather than an excuse, and the project is unusually willing to show it: the component browser marks every component's status, and nothing pretends to be finished before it is.&lt;/p&gt;

&lt;p&gt;A few notes from testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some apps are done (Texter, UltraFiler). Others are early and it shows (UltraPaint and ArtCreator are still in testing).&lt;/li&gt;
&lt;li&gt;UltraMail needs an OAuth client for full Gmail sign-in, though an app password works today. UltraAI's translation and generation features are waiting on provider keys.&lt;/li&gt;
&lt;li&gt;On Windows, the maintainer recommends Windows 11 for now. Some apps still have rough edges on Windows 10.&lt;/li&gt;
&lt;li&gt;There are no published framework-wide benchmarks, and I would distrust any for a project this young.&lt;/li&gt;
&lt;li&gt;Fixes move fast. Favicons and a login-code copy button in UltraMail, and pinned folders in UltraFiler, all landed in new builds within days of my asking.&lt;/li&gt;
&lt;li&gt;Nothing is on sale yet. Product plans exist (a free tier, paid apps, an OS) but are not final, and the payment side is still being set up.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;The maintainer is finishing UltraDesktop, the desktop environment itself, this month. The plan is free on Linux and paid on macOS and Windows. Further out: a Vulkan backend, Wayland support, 3D model loading and smart-home drivers, then the OS in two phases, a Linux-based desktop first and a custom kernel later. It is self-funded.&lt;/p&gt;

&lt;p&gt;None of that matters if you just want a GUI toolkit to evaluate. The quickest way to judge UltraCanvas is the browser demo: one tab, about 50 MB, and you are clicking through the same components I was testing on a desktop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Demo (WASM): &lt;a href="https://ultraos.eu/wasm/UltraCanvasDemo.html" rel="noopener noreferrer"&gt;https://ultraos.eu/wasm/UltraCanvasDemo.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/ULTRA-OS-Project/UltraCanvas" rel="noopener noreferrer"&gt;https://github.com/ULTRA-OS-Project/UltraCanvas&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;All repositories: &lt;a href="https://github.com/ULTRA-OS-Project" rel="noopener noreferrer"&gt;https://github.com/ULTRA-OS-Project&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Project site: &lt;a href="https://ultraos.eu" rel="noopener noreferrer"&gt;https://ultraos.eu&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MIT-licensed, early, and still moving. Bug reports are getting acted on within days.&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>webassembly</category>
      <category>linux</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
