|
@ -0,0 +1,101 @@ |
|
|
|
|
|
## 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 with various languages C, C++, Javascript, Lua, Tcl, Scheme, Forth, etc... There are running in Web Assemmbly 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. |
|
|
|
|
|
|
|
|
|
|
|
See [Developer's guide](https://www.exaequos.com/doc/build/html/dev.html) |
|
|
|
|
|
|
|
|
|
|
|
|