Skip to content
liminal-hqPublic

About

A calm graphical shell for MS-DOS — windows, files and small apps on a 486, with any DOS program a double-click away. Rust + DJGPP C. Design and spikes.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Desk

Desk — a pixel-art desktop with a Files window behind a focused Terminal window, a launcher bar and a pointer, beside the name, the tagline

Status: design and spikes Platform: DOS, VESA and VGA Licence: Apache-2.0 OR MIT

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.md is 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 in docs/DIRECTION.md. "Desk" is a working name; docs/NAMING.md has the candidates.

What it will be

  • 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, .EXE or .BAT runs 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.

First milestones

Hosted track (on DOS)

  1. 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.
  2. Shell: compositor, windows, launcher bar, cursor, keyboard focus.
  3. Handoff: run a DOS program and come back.
  4. Core apps: Files, Programs, Settings.

Native track (bare metal)

  1. n0 boot: a Rust kernel that boots in QEMU.
  2. Interrupts, memory, graphics and input, then a disk, a filesystem and a module loader.
  3. The shared Desk core running on the native hardware layer.
  4. 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.

Repository

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

Working on it

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 banner

docs/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.

Licence

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.

About

A calm graphical shell for MS-DOS — windows, files and small apps on a 486, with any DOS program a double-click away. Rust + DJGPP C. Design and spikes.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages