I have been looking into various options of GUI/Windowing systems to implement in AquilaOS and here is what I found so far


While X is the defacto when it comes to GUI, it is extremely heavy, mostly optimized for Linux and requires too much dependencies.


Wayland is a little promising than X due to its lightweight design, however it still makes certain assumptions about the underlying kernel that might not be very easy for everyone to support.


That could have been a really promising project, only now it is deprecated and way out-of-sync.


Well, first, Nuklear should have not been on this list, it is not a replacement for X server but it supports a few features that took my interest way too far:

  • Extrememly portable, doesn’t even depend on libc!
  • Entirely written in C with many bindings
  • Has a basic windowing system and widgets
  • Can be optimized to use HW acceleration for various targets easily
  • It’s design is simple and straightforward

All in all, Nuklear is an amazing GUI library, well done Micha Mettke!

So, one could say that Nuklear is a replacement for GTK/X for example, only Nuklear is not based on a server/client model, all applications are hosted in the same binary and executed as a single program.

However, that doesn’t stop us from trying to make it work as a server/client model, I’ve started project NuklearUI exactly for that, it should serve as a starting point for OSDevers willing to incorportate a GUI system in their OS with minimum requirements. My first idea is to use POSIX shared-memory for communication due to its simplicity, but we could think of other design patterns (like Nuklear would be fully contained in kernel space). I will try to make that decision on the developer side.

Currently, there isn’t much, other than some “Hello, Nuklear!” stuff. I just managed to implement a basic PS/2 Keyboard & Mouse drivers and Aquila framebuffer backend, it works as a standalone application and safetly returns to fbterm (and shell).

Here is a screenshot of a demo of Nuklear running on AquilaOS Image of Nuklear

And a video showing the switch between fbterm and Nuklear https://youtu.be/gfuRbHAGhl8