exaequOS
exaequOS (https://exaequos.com) is a Unix-like operating system fully running in a Web browser. It allows you to build and share cross platform applications written in various languages C, C++, Javascript, Lua, Tcl, Scheme, Forth, etc... There are running in WebAssembly in the Web browser.
Developer's guide
You fill find the developer's guide here: https://www.exaequos.com/doc/build/html/dev.html
Raylib for exaequOS
Raylib has been compiled in Web Assembly for the Web browser with OpenGL ES 3.0 (WebGL 2.0), GLFW3 and Wayland thanks to emscripten-exa toolchain. This toolchain is an adaptation of emscripten for supporting exaequOS syscalls.
Text editors
There are 5 text editors embedded in exaequOS for editing source code and storing it in the local persistent file system:
- Monaco editor: /usr/bin/mc
- Vim: /usr/bin/vim
- microEMACS: /usr/bin/em
- nano: /usr/bin/nano
- ed: /usr/bin/ed
Note Files can be imported/exported into exaequOS with the exio command line tool.
Source code
You will find source code on GitHub:
- exeaquOS kernel: https://github.com/baudaux/exa-kernel
- emscripten-exa: https://github.com/baudaux/exa-kernel
- exa-wayland: https://github.com/exaequos/exa-wayland
Developping Raylib apps
There are currently three ways of developping a Raylib app for exaequOS:
- In C/C++ with emscripten-exa toolchain
- In Javascript with QuickJS 2024-02-14
- In Lua with Lua 5.4.6 interpreter
C/C++
Developer's guide explains how to use emscripten-exa toolchain for building an app in C/C++ from your host machine (using Docker or not).
QuickJS
Raylib bindings for QuickJS have been developped and source code is there: https://github.com/exaequos/raylib-qjs
These bindings include raylib, raymath and raygui. There are loaded with this line on top of the Javascript file:
import * as ray from 'raylib_qjs.so'
Example of Raylib app in Javascript:
import * as ray from 'raylib_qjs.so'
ray.InitWindow(800, 600, "Raylib app");
while (!ray.WindowShouldClose()) {
ray.BeginDrawing()
ray.ClearBackground(ray.RAYWHITE);
ray.DrawText("Raylib app in Javascript running in exaequOS", 100, 200, 20, ray.BLACK);
ray.EndDrawing()
}
ray.CloseWindow();
Lua
Raylib bindings for Lua have been developped partially: https://github.com/exaequos/raylib-lua
There are loaded with this line on top of the Lua file:
require "raylib_lua"
InitWindow(800, 600, "Raylib app")
while (not WindowShouldClose()) do
BeginDrawing()
ClearBackground(RAYWHITE)
DrawText("Raylib app in Javascript running in exaequOS", 100, 200, 20, BLACK)
EndDrawing()
end
CloseWindow()
Publishing Raylib app
Once developped, the app can be published on the exaequos store for being accessed by everybody. It can also be accessible from itch.io.
Frequently Asked Questions
Library Design
- Architecture
- Syntax analysis
- Data structures
- Enumerated types
- External dependencies
- GLFW dependency
- libc dependency
- Platforms and graphics
- Input system
- Default shader
- Custom shaders
- Coding conventions
- Integration with other libs
Development Platforms
- Working on Windows
- Working on macOS
- Working on GNU Linux
- Working on Chrome OS
- Working on FreeBSD
- Working on Raspberry Pi
- Working for Android
- Working for Web (HTML5)
- Working on exaequOS Web Computer
- Creating Discord Activities
- Working anywhere with CMake
- CMake Build Options
IDE Configurations
- raylib templates: Get started easily
- How To: Quick C/C++ Setup in Visual Studio 2022, GCC or MinGW
- How To: C# Visual Studio Setup
- How To: VSCode
- How To: Eclipse
- How To: Sublime Text
- How To: Code::Blocks
Misc Help
www.raylib.com | itch.io | GitHub | Discord | YouTube