Skip to content

Desktop Applications

kazah-png edited this page Aug 25, 2026 · 8 revisions

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

Desktop icons

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.

Terminal (terminal_win.c)

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.

File Manager (fileman_win.c)

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 readdir order
  • 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 file command)
  • 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

Text Editor (editor_win.c)

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.

Image Viewer (imageview_win.c)

Displays images with zoom, pan and a grid overlay.

Paint (paint_win.c)

Freehand drawing with the mouse.

Calculator (calc_win.c)

Basic arithmetic, mouse and keyboard.

Sound Test (soundtest_win.c)

PC speaker beeps, melodies and alarms, plus Sound Blaster 16 sine, square and sweep tones. See Drivers.

Task Manager (taskman_win.c)

A live process list from the same process table ps reads.

Wallpaper (wallpaper_win.c)

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.

Selene (selene_win.c)

The web browser. It has its own page: Selene-Browser.

Games

The Games desktop icon opens a shelf holding all five.

DOOM

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.

Minesweeper (minesweeper_win.c)

Left-click to reveal, right-click to flag.

Pong (pong_win.c)

Mouse or arrow keys. The compositor's first animated window.

Snake (snake_win.c)

Arrow keys or WASD.

Tetris (tetris_win.c)

Arrows to move and rotate, Space to hard-drop.

Visual effects and render-performance demos

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)

Launching from the shell

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 Editor

Start menu and desktop

The 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).

See also

External resources

Clone this wiki locally