daedalOS Documentation

Desktop environment in the browser

12,622 stars JavaScript JavaScript 1 file ยท ~2,627 tokens #desktop-environment#javascript#os#web-desktop
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy daedalOS on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name daedalos --restart always dustinbrett/daedalos:latest

๐ŸŒŒ **daedalOS** ๐ŸŒŒ

_Desktop environment in the browser_

Feature Overview

System ๐Ÿง 

[File System](https://github.com/jvilk/BrowserFS)

  • File Explorer
    • Back, Forward, Recent locations, Up one level, Address bar, Search
    • Thumbnail & Details Views
  • Drag & Drop File Support (internal & external)
    • Loading progress dialog
  • ZIP (write support), ZIP/ISO read support, 7Z/GZ/RAR/TAR/etc. extract support
  • Writes to IndexedDb
  • Group selection/manipulation & drag to sort/arrange
  • Dynamic and auto cached icons for music, images, video & emulator states
  • Context Menus
    • Cut, Copy, Create shortcut, Delete, Rename
    • Add file(s), Map directory
    • Open with options/dialog, Open file/folder location, Open in new window, Open Terminal here
    • Download, Add to archive, Extract here, Set as wallpaper, Set as mouse pointer, Convert audio/video/photo/spreadsheets, Properties (w/Details)
    • Sort by, New Folder, New Text Document
    • Screen Capture
  • Keyboard Shortcuts
    • CTRL+C, CTRL+V, CTRL+X, CTRL+A, Delete
    • F2, F5, Backspace, Arrows, Enter
    • SHIFT+CTRL+R, SHIFT+F10, SHIFT+F12
    • In Fullscreen: Windows Key, Windows Key + R
  • File information tooltips
  • Allow sorting by name, size, type or date
    • Persists icon position/sort order

Windows

Start Menu

  • Expandable Sidebar
    • Apps list, Documents/Pictures/Videos shortcuts, Power (clears session)
  • Spotlight visual effect
  • Folder support
  • Keyboard shortcut opens with SHIFT+ESC
    • Or Windows Key when in fullscreen

Taskbar

  • Peek hover preview of windows
  • Focused window indicator
  • Search menu (w/Recent files)
  • AI Chat Agent (Prompt API & WebLLM) (w/Summarize & Image Generation)

Clock

Background & Screensaver

Run Dialog

  • Launch apps by alias or paths
  • Opens ipfs: & nostr: URIs

URL

  • Query parameter loading
    • Examples:
      • /?url=/CREDITS.md
      • /?app=Browser

Apps ๐Ÿงช

[BoxedWine](http://www.boxedwine.org/) (**_.exe, .zip_**)

  • Runs 16/32-bit Windows applications

Browser (**_.htm, .html_**)

  • Loads websites (w/CORS support)
  • Bookmark bar with favicon support
  • Proxy support (Wayback Machine & The Old Net)
  • Back/Forward & Reload
  • Google search via Address bar
  • IPFS protocol support
  • chrome://dino game

[DesktopFly](https://github.com/DenisSergeevitch/desktop-fly)

  • Fruit fly pets driven by a live spiking simulation of 1,275 real FlyWire connectome neurons, with escape, backward retreat, grooming, sleep & circadian rhythm
  • Every fly has its own brain & senses: window edges are walkable terrain, dragged windows & the cursor loom, clicks swat, and a takeoff startles nearby flies
  • Spawn via fly in Terminal or Run dialog

[DevTools](https://eruda.liriliri.io/)

  • Console, Elements, Network, Resources, Sources, DOM
  • Activate from Start Menu or SHIFT+F12

[EmulatorJS](https://github.com/ethanaobrien/emulatorjs) (**_.32x, .a26, .a52, .a78, .gb, .gba, .gbc, .gen, .gg, .j64, .jag, .lnx, .n64, .nds, .nes, .ngc, .ngp, .pce, .sfc, .smc, .smd, .sms, .v64, .vb, .vboy, .ws, .wsc, .z64_**)

  • Plays console game roms

[IRC](https://kiwiirc.com/)

  • Internet Relay Chat Client
  • Connects over WebSockets

[js-dos](https://js-dos.com/) (**_.exe, .jsdos, .zip_**)

  • DOS emulator
  • Automatic save states on close
    • /Users/Public/Snapshots
  • Automatic window resize

[Marked](https://marked.js.org/) (**_.md_**)

  • Markdown Viewer

Messenger

  • Encrypted direct messaging client
  • Utilizes Nostr Protocol (NIP-04)
  • Automatic public/private key creation

[Monaco Editor](https://microsoft.github.io/monaco-editor/)

  • Code/text editor
  • Supports all file types
  • Save files via CTRL+S
  • Line count, cursor position, language id
  • Prettier formatting
    • json, js/ts, css/sass/less, html, markdown

[OpenType](https://github.com/opentypejs/opentype.js) (**_.otf, .ttf, .woff_**)

  • Font viewer

[Paint](https://github.com/1j01/jspaint) (**_.bmp, .gif, .ico, .jpg, .png, .tiff, .webp,_**)

  • Create & edit images

[PDF](https://mozilla.github.io/pdf.js/) (**_.pdf_**)

  • Render/Print PDF's
  • Page current/count & Zoom

Photos

[Ruffle](https://ruffle.rs/) (**_.swf, .spl_**)

  • Flash Player emulator

[Stable Diffusion](https://stability.ai/stable-diffusion)

  • Creates 512x512 images using artificial intelligence
  • Runs locally using WebSD

[Terminal](https://xtermjs.org/)

[TIC-80](https://tic80.com/) (**_.tic_**)

  • Runs "fantasy computer" games

[TinyMCE](https://www.tiny.cloud/tinymce/) (**_.rtf, .whtml_**)

  • Read & WYSIWYG modes
  • File save support

[Virtual x86](https://copy.sh/v86/) (**_.img, .iso_**)

  • x86 emulator
  • Automatic save states on close
    • /Users/Public/Snapshots
  • Automatic window resize

[Video Player](https://videojs.com/)

[Vim](https://github.com/coolwanglu/vim.js)

  • Code/text editor
  • Supports all file types

[Webamp](https://webamp.org/) (**_.mp3, .wsz_**)

Games ๐ŸŽฎ

[Chess](https://github.com/jhlywa/chess.js) (**_.pgn_**)

  • Play against stockfish.js, a friend, or watch CPU vs CPU
  • Load PGN games w/move navigation

[ClassiCube](https://www.classicube.net/)

  • Minecraft Classic compatible client

[DX-Ball](https://habr.com/en/post/147339/)

  • Block breaker arcade game like Arkanoid

[Space Cadet Pinball](https://github.com/alula/SpaceCadetPinball)

  • Reverse engineering of 3D Pinball from Windows

[Quake III Arena](https://github.com/lrusso/Quake3)

  • Port of the classic first-person shooter

Try It ๐Ÿš€

Requirements

Development

text
yarn install
yarn build:prebuild
yarn dev

Production

text
yarn install
yarn build
yarn serve

Docker

text
docker build -t daedalos .
docker run -dp 3000:3000 --rm --name daedalos daedalos

Notes

  • If during yarn install you receive the error digital envelope routines::unsupported, you need to set NODE_OPTIONS to --openssl-legacy-provider (1, 2, 3)