[3][4] It is an open source project aimed at bringing the features of modern graphical windowing environments to smaller devices and platforms.
The Nano-X Window System is extremely portable, and completely written in C. It has been ported to the Intel 16, 32 and 64 bit CPUs, the Broadcom BCM2837 ARM Cortex-A53, as well as MIPS R4000 (NEC Vr41xx) StrongARM and PowerPC chips found on handheld and pocket PCs.
[5] At the lowest level, screen, mouse/touchpad and keyboard drivers provide access to the actual display and other user-input hardware.
At the mid level, a portable graphics engine is implemented, providing support for line draws, area fills, polygons, clipping and color models.
The mid level routines in the device-independent graphics engine core then call the device driver directly to perform the hardware-specific operations.
Based on the NX11 API the FLTK graphical user interface library can be used to provide a GUI for application programs.
The Nanolinux distribution uses the NX11 API and FLTK to implement a Linux operating system using 19 MB of disk space.
The Nano-X API is modeled after the mini-x server written initially by David Bell, which was a reimplementation of X on the MINIX operating system.
The basic model of any API on top of Microwindows is to initialize the screen, keyboard and mouse drivers, then hang in a select() loop waiting for an event.
The Microwindows API is message-based, and allows programs to be written without regard to the eventual window management policies implemented by the system.
The message-passing architecture allows the core API to manage many system functions by sending messages on all sorts of events, like window creation, painting needed, moving, etc.
Major window management policies can be redefined by merely re-implementing DefWindowProc, rather than making changes throughout the system.
NanoGUI was created by Alex Holden by taking David Bell's mini-X server and Alan Cox's modifications and adding client/server networking.