A calm graphical operating system in Rust for old hardware, from Liminal HQ: windows, files, programs and a few small apps on a 486-class PC with VGA or VBE graphics, Sound Blaster and OPL sound, a PS/2 keyboard and mouse, and floppy and IDE storage. It is built on two tracks in parallel that share one OS-independent core behind a small hardware abstraction layer: a hosted track, Desk running on top of DOS (DJGPP, CWSDPMI, tested in DOSBox), for fast iteration, and a native track, a bootable Rust kernel tested in QEMU, 86Box and Bochs. docs/DIRECTION.md has the plan.
It is the spiritual successor to Lieutenant Fizz for DOS, which proved that Rust can drive a real DOS machine. This project starts from scratch with what that port taught us, and its toolchain is written fresh for this project rather than copied.
Status: design, a hosted DOS walking skeleton, a native boot skeleton (a NASM boot sector and a Rust kernel in QEMU), and fonts and emoji work.
docs/SPEC.mdis the working design of the hosted track and the OS-independent parts, written before any code, so its numbers and formats are targets until a spike confirms them; the native track is described indocs/DIRECTION.md. "Desk" is a working name;docs/NAMING.mdhas the candidates.
- A richer place than the prompt. Move between files and programs with a mouse or the keyboard, run several small apps side by side, and come back to where you were.
- Small core, everything else optional. The shell, Files, Programs and Settings are the core; every other app installs and removes on its own.
- Runs DOS programs. Desk apps run in windows. In the hosted track any
.COM,.EXEor.BATruns full-screen with the whole machine, then returns to the Desk (docs/HANDOFF.md). The native OS is planned to bundle FreeDOS for this, as a later milestone. - An operating system, not only a shell. The native track is a Rust kernel with its own drivers, filesystem and module loader, so Desk can run on bare metal.
- An SDK for apps. Independent modules that talk to the Desk through one C ABI (
docs/SDK.md). - Calm. Nothing badgers you: no unread counts, no alarm red, quiet toasts that time out.
Hosted track (on DOS)
- Spikes that decide the architecture (
spikes/): a Rust module loaded into the core; VBE 2.0 and VGA mode 12h from Rust; the mouse; the handoff with a tiny real-mode program. - Shell: compositor, windows, launcher bar, cursor, keyboard focus.
- Handoff: run a DOS program and come back.
- Core apps: Files, Programs, Settings.
Native track (bare metal)
- n0 boot: a Rust kernel that boots in QEMU.
- Interrupts, memory, graphics and input, then a disk, a filesystem and a module loader.
- The shared Desk core running on the native hardware layer.
- Bundled FreeDOS for DOS programs.
The hosted list is in docs/SPEC.md, the native one in docs/DIRECTION.md, and docs/OPEN-QUESTIONS.md says what is decided and what is not.
| Folder | What it holds |
|---|---|
docs |
The working design: direction, spec (the hosted track's), SDK, file formats, handoff, palette, app guidelines, open questions, naming |
design |
Boards and prototypes from the design brainstorm, kept as reference only |
core |
The OS-independent shell in Rust (no_std) and the DOS target specification; today the walking skeleton's one function |
c |
The hosted track's hardware layer in C for DJGPP; today main, result output and the panic exit |
launcher |
DESK.COM, the hosted track's real-mode launcher (empty until the handoff spike) |
sdk |
The app interface (empty until milestone 2; the first spike settled that apps are DXE3 modules, docs/S1-DXE3.md) |
spikes |
Experiments that decide the architecture |
tests/dos |
Test programs of our own for the headless DOS runs |
fonts |
The four bitmap faces as pixel grids, the modern outline faces (Desk Sans, Mono and Serif), the emoji, and their build into OTF, TTF, .DFN and .DEM files (docs/FONTS.md, docs/EMOJI.md); the fonts are under the SIL Open Font License 1.1 |
tools |
Repository checks, the DOS build pipeline (setup, fetch, build, object converter, headless DOSBox runner) and the banner builder |
tools/setup.sh # once: the pinned Rust pieces, then DJGPP, DOSBox Staging and CWSDPMI into vendor/
tools/check.sh # everything the CI runs: checks, then build dist/DESK.EXE and run it in headless DOSBox
python3 -I tools/build-hero.py > assets/hero.svg # rebuild the bannerdocs/TOOLCHAIN.md explains the build pipeline and what it was checked against. AGENTS.md has the conventions: Canadian English, unwrapped markdown, Conventional Commits, merge commits only.
Apache-2.0 OR MIT (LICENSE-APACHE, LICENSE-MIT). In the hosted track CWSDPMI and JEMMEX will ship beside the Desk as separate programs under their own licences, and the native track plans to bundle FreeDOS, whose licensing is still to be checked; see NOTICE.