Example 01: Hello CLI

The absolute basics. Writing a terminal program.

--- This example demonstrates the bare minimum structure of a BoredOS application that outputs text to the standard output (usually the Terminal executing the binary). ## Concepts Introduced * Including `stdlib.h` for basic IO. * The `main()` entry point. * Using `printf()` for formatted output. * Declaring app metadata via source annotations. --- ## The Code (`src/userland/cli/hello_world.c`) ```c // BOREDOS_APP_DESC: Hello World — a minimal CLI demo. #include int main(int argc, char **argv) { // Standard library initialization is handled automatically by crt0.asm // Print a simple string to the terminal printf("Hello, World from BoredOS Userland!\n"); // Print some formatted data int favorite_number = 67; printf("Did you know my favorite number is %d?\n", favorite_number); // Returning from main automatically terminates the process cleanly return 0; } ``` ## How it Works 1. **`#include `**: We include the SDK's standard library header which gives us access to `printf`. 2. **`int main(...)`**: Every process begins execution here (managed transparently by `crt0.asm`). 3. **`printf(...)`**: The SDK routes this call internally directly to the `SYS_WRITE` system call, making it available on the terminal. 4. **`return 0`**: A successful exit code. 5. **`BOREDOS_APP_DESC` / `BOREDOS_APP_ICONS`**: These comment annotations are read by the build system (`gen_userland_note.sh`) and embedded as a `boredos_app_metadata_t` NOTE entry inside the compiled `.elf`. The File Explorer and Desktop use this to display the correct icon. See [`elf_metadata.md`](../elf_metadata.md) for full details. ## Running It If you build the project, you can open the Terminal and type: ```sh / # hello_world Hello, World from BoredOS Userland! Did you know my favorite number is 67? / # ```