-
-
Notifications
You must be signed in to change notification settings - Fork 5
Desktop Applications
Every built-in application is a kernel window — one *_win.c file each — driven by the compositor through on_click, on_key and on_pressed callbacks. The one exception is DOOM, which is a real ring-3 ELF.
See also: GUI-Subsystem, Selene-Browser, Shell, Filesystem, Userspace
Ten, drag-reorderable, each with its own drawn emblem:
Files · Terminal · Editor · Viewer · Settings · Paint · Sounds · Calc · Games · Selene
The Start menu adds Task Manager, Wallpaper, About and Shutdown.
An 80×24 grid with 2000 lines of scrollback, running the kernel shell.
| Feature | Detail |
|---|---|
| Scrollback | PgUp/PgDn, mouse wheel, scrollbar |
| Completion | Tab — builtins, *.elf programs, and paths |
| History | Command recall |
| Working directory | Per-window; starts in the persistent home /mnt/home/<user> (v6.0.8) — see [[Filesystem#persistent-home-directory |
| Colour | ANSI SGR (ESC[…m) |
| Screen mode | Full CSI cursor addressing, so ring-3 TUIs render live |
Full-screen ring-3 programs — top, edit, less — display inside the window while the compositor keeps recompositing at ~16 fps. See Shell.
Browses the VFS, including the persistent /mnt EXT2 filesystem — where the logged-in user's home now lives (see Filesystem#persistent-home-directory).
- Directory listing with a scrollbar, starting in the persistent home
- A Size column (v6.0.3) showing each file's byte size (B/KB/MB), like a real file manager
-
Sorted listing (v6.0.4): directories first, then case-insensitive alphabetical, instead of raw
readdirorder - A Properties panel (v6.0.5): the context-menu Properties item opens a modal with the entry's name, type and size
- Per-row icons (v6.4.35), colour-coded by type — exec / object / source / image / archive (v6.4.43)
- Clickable column headers (v6.4.75): click Name or Size to sort by it; click the active column again to reverse
- A Type column (v6.4.185) showing native file-type labels (from the same magic-based identification as the
filecommand) - A right-aligned directory-totals summary in the status bar (dir/file counts + summed size, human-readable) (v6.4.67)
- Copy and paste, drag-and-drop into folders
- Right-click context menu: New Folder, New File, Refresh, Properties, Settings, Wallpaper
- Search
- Opening a file launches it in the Text Editor — cross-app integration
Named Mnemosyne (the goddess of memory) since v6.4.363 — shown in nyxfetch and the window title, in the Nyx family with Hemera, Erebus and Selene. Open, edit and save files with cursor navigation, click-to-position and scrolling. Reached from the File Manager, from the desktop icon, or with open <file> from the shell. Save writes through to disk (v6.0.10), and a new note defaults into the persistent home /mnt/home/<user> so it survives a reboot.
Not to be confused with
edit.elf, the ring-3 full-screen editor that runs inside the terminal. See Userspace.
Displays images with zoom, pan and a grid overlay.
Freehand drawing with the mouse.
Basic arithmetic, mouse and keyboard.
PC speaker beeps, melodies and alarms, plus Sound Blaster 16 sine, square and sweep tones. See Drivers.
A live process list from the same process table ps reads.
A colour picker for the desktop background, plus a wallpaper style axis (v6.0.0) — the v6 desktop defaults to a clean, minimal look rather than the flat brand purple. See the theme section of GUI-Subsystem.
The web browser. It has its own page: Selene-Browser.
The Games desktop icon opens a shelf holding all five.
The original 1993 shareware DOOM, on the doomgeneric engine — and unlike everything else here, a genuine ring-3 ELF (~448 KB, zero undefined symbols), not a kernel window.
| Aspect | Detail |
|---|---|
| Graphics |
fbpresent() — the program owns the screen while it keeps calling it |
| Input |
getkeyevent() — raw press and release with Set-1 scancodes |
| Sound | SB16 |
| Data | Requires /mnt/doom1.wad (attach ext2-test.img) |
| Launch | The Games shelf, the doom command, or exec /doom.elf
|
It runs in a window, not fullscreen, so the desktop stays visible around it. Ctrl-C quits.
The desktop launcher goes through the shell's foreground-run path — spawn, pump the desktop, block until exit — because a bare spawn_user_path() leaves the child unscheduled, and its framebuffer takeover then never gets serviced.
Left-click to reveal, right-click to flag.
Mouse or arrow keys. The compositor's first animated window.
Arrow keys or WASD.
Arrows to move and rotate, Space to hard-drop.
The v6.4 line added a family of compositor windows that double as software-renderer benchmarks — all fixed-point, no floating point (the kernel is built -mno-sse). Most carry a benchmark HUD showing per-frame render time and a derived rate, and scale their load with +/- so you can watch the cost move.
| Command | Window | What it is |
|---|---|---|
voxel |
Nyx Voxels | An isometric voxel sandbox — place a block (left-click) / break one (right-click), 6 block types (grass/dirt/stone/wood/sand/water, keys 1–6), procedural worldgen (G), a rotatable/orbiting camera (R), and a benchmark HUD (B) with a rolling frame-time graph (v6.4.38–42, 52, 61) |
fire |
Nyx Fire | Animated doom-fire — an integer heat-grid propagated through a black-to-white palette (v6.4.55) |
matrix |
Nyx Matrix | cmatrix-style green code-rain, per-column falling heads with a fading tail (v6.4.57) |
lava |
Nyx Lava | Plasma / lava-lamp — four phase-shifted integer sine waves through a heat palette (v6.4.59) |
fractal |
Nyx Fractal | Q8.24 fixed-point Mandelbrot that auto-zooms toward the seahorse valley; HUD shows render time, FPS, iteration cap, zoom (v6.4.66) |
julia |
Nyx Julia | Fixed-point Julia set whose constant c orbits a circle so the set continuously morphs (v6.4.74) |
rotor |
Nyx Rotor | A spinning 3D point-lattice — an N×N×N cube tumbling on two axes, perspective-projected and depth-shaded (v6.4.99) |
fill |
Nyx Fill | A 2D fill-rate / overdraw test — repaints the window N× per frame, reporting Mpx/s (v6.4.110) |
life |
Nyx Life | Conway's Game of Life (B3/S23) as a compute/render testbed — r reseeds, p pauses, c clears (v6.4.118) |
blobs |
Nyx Blobs | A metaballs render-perf demo (v6.4.124) |
selene # browser
doom # DOOM in a window
pong # Pong
snake # Snake
tetris # Tetris
voxel # Nyx Voxels sandbox
fire # Nyx Fire (and matrix / lava / fractal / julia / rotor / fill / life)
desktop # start the compositor from the text shell
open <file> # open a file in the GUI Text EditorThe Start menu became a modern app launcher over v6.4: it surfaces Selene and the Games folder (v6.4.25), draws per-entry icons (v6.4.26), and casts a soft drop shadow floating above the desktop (v6.4.33). An optional minimal desktop hides the app-launcher icons (every app is on the Start menu) for a clean look, and replaces the three stacked boot windows with a single subtle centered greeting (v6.4.48, v6.4.51). The taskbar clock shows the date alongside the time (v6.4.29).
- GUI-Subsystem - the compositor these run on
- HOWTO-Add-a-GUI-application - write your own
- Selene-Browser - the web browser in detail
- Userspace - DOOM and the ring-3 programs
- doomgeneric - the DOOM porting layer used here
- DOOM source release - id Software
NyxOS v6.4.363 · GPL v2 · GitHub · uselessalter on Discord · nyxos@inbox.lv
NyxOS Wiki
Getting started
Kernel
Storage & network
Graphics & apps
Userspace
HOWTO
- HOWTO-Add-a-system-call
- HOWTO-Write-a-userspace-program
- HOWTO-Add-a-shell-command
- HOWTO-Add-a-GUI-application
Reference
- Syscall-Reference
- Command-Reference
- Hardware-Reference
- Format-Reference
- Kernel-Data-Structures
- Source-Tree-Reference
Project