This project provides a GUI skeleton using the Nuklear immediate mode library, integrated with the CherryUSB stack, and prepared for a kernel environment using the Limine bootloader.
You can see what the "R-TECH™" desktop environment looks like by opening preview.html in your web browser. This provides a high-fidelity mockup of the GUI theme and layout.
src/: Hosted application source code (SDL2/OpenGL3).kernel/: Basic kernel skeleton and Limine bootloader configuration.include/: Shared headers, including the service plugin architecture.external/CherryUSB/: The CherryUSB stack.
The system uses a service_table_t (defined in include/services.h) to link hardware or OS services (like Storage, Clock, etc.) to the GUI.
If a service is not provided (NULL pointer in the table), the corresponding GUI elements are automatically grayed out and disabled.
To automatically install dependencies, build the OS, and launch it in QEMU:
make runTo generate a statically linked library (rtech_gui.a) that you can link into your own operating system:
make binThe result will be at dist/rtech_gui.a. You can then link this into your project and call ui_render and nk_sw_render.
To test the GUI quickly on your current OS using SDL2:
- Build:
make hosted - Run:
./build/nuklear_cherry_usb
To build only the freestanding x86_64 kernel:
make kernel- Testing in QEMU:
To test the kernel, you would typically create an ISO image using
limineandxorriso, then run:Note: A full ISO creation script requires theqemu-system-x86_64 -cdrom image.iso
liminebinary andxorrisowhich are not included in this minimal skeleton.
To add a feature (e.g., a real storage driver):
- Implement the
service_tinterface. - Assign your implementation to the
g_servicestable. - The GUI will automatically enable the relevant buttons.