๐Ÿ”๏ธ EverestOS

May 24, 2026 ยท View on GitHub

A premium, modular web-based desktop environment โ€” born in Nepal, the land of Mount Everest.

EverestOS Desktop

EverestOS brings the power and familiarity of a traditional Linux desktop to the browser. Inspired by the Cinnamon Desktop Environment from Linux Mint, it features a complete windowing system, a virtual filesystem, a powerful extension architecture, and a suite of built-in applications โ€” all rendered entirely with modern web technologies.


โœจ Highlights

  • Full Desktop Experience โ€” Window management, taskbar, app menu, desktop icons, right-click context menus, and keyboard shortcuts (Ctrl+C/V/X, Delete, Ctrl+/).
  • Virtual File System (VFS) โ€” A dual-mode storage layer: IndexedDB for standalone deployments, and a native Node.js backend for development with real file persistence.
  • Cinnamon-Compatible Extensions โ€” Write Applets (panel widgets) and Desklets (desktop widgets) using a custom-ported CommonJS loader and mock St (Shell Toolkit) / gi libraries.
  • 18 Built-in Applications โ€” File Manager, Terminal, Web Browser, Text Editor, Calculator, System Settings, App Center, Extension Manager, and more.
  • Adaptive Theming โ€” Full light/dark mode support with the high-fidelity Bloom icon theme Copied from Deepin project (600+ SVG icons), CSS variable-driven color systems, and multiple bundled themes.
  • Developer Tooling โ€” Built-in Developer Center for creating apps, Looking Glass debug console, and live code editor.

๐Ÿ› ๏ธ Tech Stack

LayerTechnology
LanguageVanilla JavaScript (ES Modules)
Build ToolVite 6.x
StylingCSS3 โ€” Variables, Grid, Flexbox, Glassmorphism
FontsInter, JetBrains Mono (Google Fonts)
StorageIndexedDB (client) / Node.js FS API (dev server)
RuntimeBun (recommended) or Node.js
IconsBloom SVG icon theme (deepin-inspired)

๐Ÿ“ฅ Getting Started

Prerequisites

  • Bun (recommended) or Node.js 18+.

Installation

# Clone the repository
git clone https://github.com/Everest-Os/everest-os.github.io.git
cd everest-os.github.io

# Install dependencies
bun install      # or: npm install

# Start the development server
bun run dev      # or: npm run dev

The development server starts at http://localhost:5173 with full VFS backend support (reads/writes to the fs/ directory on disk).

Production Build

# Build optimized static assets
bun run build

# Serve the static build (uses vfs-seed.json for offline VFS)
bun run serve:static or npx serve dist for 100% static mode.

The production build generates a vfs-seed.json from fs/ at build time and copies the filesystem into dist/fs/ for complete offline operation.


๐Ÿ“‚ Project Structure

EverestOS/
โ”œโ”€โ”€ index.html              # Shell HTML โ€” desktop layout, panel, overlays
โ”œโ”€โ”€ vite.config.js          # Vite configuration
โ”œโ”€โ”€ package.json            # Project metadata and scripts
โ”‚
โ”œโ”€โ”€ src/                    # Core Shell Source Code
โ”‚   โ”œโ”€โ”€ main.js             # Boot orchestrator & Sandbox kernel
โ”‚   โ”œโ”€โ”€ loader/             # Module discovery & Sandboxing
โ”‚   โ”‚   โ”œโ”€โ”€ appLoader.js    #   App discovery (System + User)
โ”‚   โ”‚   โ””โ”€โ”€ extensionLoader.js # Cinnamon-compatible plugin loader
โ”‚   โ”œโ”€โ”€ runtime/            # OS Services & Mock APIs
โ”‚   โ”‚   โ”œโ”€โ”€ vfs.js          #   VirtualFileSystem engine
โ”‚   โ”‚   โ”œโ”€โ”€ windowManager.js #  Windowing system
โ”‚   โ”‚   โ”œโ”€โ”€ panelManager.js #   Taskbar & System Tray
โ”‚   โ”‚   โ”œโ”€โ”€ appMenu.js      #   Application menu logic
โ”‚   โ”‚   โ”œโ”€โ”€ themeManager.js #   CSS variable & theme engine
โ”‚   โ”‚   โ”œโ”€โ”€ iconHelper.js   #   Multi-layer icon resolution
โ”‚   โ”‚   โ”œโ”€โ”€ imports.js      #   CJS / Cinnamon API shims
โ”‚   โ”‚   โ””โ”€โ”€ zipHelper.js    #   Package extraction (JSZip)
โ”‚   โ”œโ”€โ”€ console/            # Looking Glass debug tool
โ”‚   โ”œโ”€โ”€ editor/             # Built-in code editor
โ”‚   โ””โ”€โ”€ styles/             # Global CSS & Design System
โ”‚
โ”œโ”€โ”€ public/                 # Static Assets & System Binaries
โ”‚   โ”œโ”€โ”€ system/             # Read-only System files
โ”‚   โ”‚   โ”œโ”€โ”€ apps/           #   19 Built-in applications
โ”‚   โ”‚   โ”œโ”€โ”€ plugins/        #   Built-in applets & desklets
โ”‚   โ”‚   โ”œโ”€โ”€ lib/            #   Shared system libraries (JSZip, etc.)
โ”‚   โ”‚   โ”œโ”€โ”€ themes/         #   Color theme definitions (.json)
โ”‚   โ”‚   โ””โ”€โ”€ icons/          #   Themed icons (Bloom, Modern, Emoji)
โ”‚   โ”œโ”€โ”€ vfs-seed.json       # Generated user profile snapshot
โ”‚   โ””โ”€โ”€ system-manifest.json # Generated system directory index
โ”‚
โ”œโ”€โ”€ fs/                     # VFS Root Template (packed at build time)
โ”‚   โ””โ”€โ”€ home/user/
โ”‚       โ”œโ”€โ”€ .config/        # User settings & app state
โ”‚       โ”œโ”€โ”€ .local/share/   # Standard storage for installed software
โ”‚       โ”‚   โ”œโ”€โ”€ applications/ # One-click installed apps
โ”‚       โ”‚   โ”œโ”€โ”€ plugins/    # One-click installed plugins
โ”‚       โ”‚   โ””โ”€โ”€ icons/      # Extracted app/plugin icons
โ”‚       โ”œโ”€โ”€ Apps/           # Legacy/Local development apps
โ”‚       โ”œโ”€โ”€ Plugins/        # Legacy/Local development plugins
โ”‚       โ””โ”€โ”€ Desktop/         # Desktop shortcuts
โ”‚
โ””โ”€โ”€ scripts/                # Build & Deployment Utilities
    โ”œโ”€โ”€ pack-vfs.js         # Generates vfs-seed.json from fs/
    โ”œโ”€โ”€ pack-system.js      # Generates system-manifest.json from public/system/
    โ””โ”€โ”€ serve.js            # Production static server

---

## ๐Ÿงฉ Extension System

EverestOS supports three types of extensions, modeled after the Cinnamon Desktop:

### Applets (Panel Widgets)
Panel applets live in `~/.local/share/plugins/applets/<uuid>/` (installed) or `~/Plugins/applets/<uuid>/` (dev) or `public/system/plugins/applets/<uuid>/` (built-in). They use the CommonJS `require()` pattern with mock `St` and `gi` libraries.

### Desklets (Desktop Widgets)
Desktop desklets live in `~/.local/share/plugins/desklets/<uuid>/` (installed) or `~/Plugins/desklets/<uuid>/` (dev) or `public/system/plugins/desklets/<uuid>/` (built-in) and can render floating, draggable widgets on the desktop surface.

### User Applications
Custom apps live in `~/.local/share/applications/<app-name>/` with an `app.json` manifest and `app.js` entry point.

See the **[Developer Guide](DEVELOPER_GUIDE.md)** for complete documentation and contribution instructions.

---

## โŒจ๏ธ Keyboard Shortcuts

| Shortcut | Action |
|---|---|
| `Ctrl + /` | Toggle Looking Glass developer console |
| `Ctrl + A` | Select all (desktop/file manager) |
| `Ctrl + C` | Copy selected items |
| `Ctrl + X` | Cut selected items |
| `Ctrl + V` | Paste items |
| `Delete` | Move selected items to Trash |
| `Escape` | Close overlays and dialogs |

---

## ๐ŸŽจ Themes

EverestOS ships with multiple themes that control both colors and icon styles:

| Theme | Description |
|---|---|
| **Mint Dark** | Default dark theme inspired by Linux Mint |
| **Mint Light** | Clean light variant |
| **Minimal** | Ultra-minimal interface |
| **Windows 95** | Retro nostalgia theme |

Themes are defined as JSON files in `public/themes/` and applied through the **System Settings > Appearance** panel. Each theme maps to a set of CSS variables and an icon pack (Bloom, Bloom Dark, Emoji, or Modern).

---

## ๐Ÿค Acknowledgments & Attributions

### ๐Ÿ‡ณ๐Ÿ‡ต Origin
EverestOS was born in **Nepal** โ€” the country of **Mount Everest**, the highest peak on Earth. The project name and branding pay tribute to this heritage.

### Cinnamon Desktop Environment
A massive thank you to the **Linux Mint team** and the developers of the **Cinnamon Desktop Environment**. The following components draw heavy inspiration from Cinnamon:
- Panel and applet architecture
- Desklet system and lifecycle
- Extension settings schema format
- Looking Glass debug console
- Context menu patterns
- Shell Toolkit (St) API surface

### Individual Plugin Creators
The following community plugins are included and attributed to their original authors:

| Plugin | Type | Author | UUID |
|---|---|---|---|
| **Seven Segment Clock** | Desklet | lxs242 | `SevenSegmentClock@lxs242` |
| **Nepali Date** | Applet | Bishal Acharya | `nepali-date@bishalacharya` |
| **Nepali Date** | Desklet | Khumnath | `nepali-date@khumnath` |
| **Panchang** | Desklet | OnlineLearningTutorials | `panchang@india` |
| **Main Menu** | Applet | EverestOS | `menu@everest` |
| **Status Bar** | Applet | EverestOS | `statusbar` |
| **System Monitor** | Desklet | EverestOS | `system` |

### AI Assistance
- **Google Gemini** โ€” Extensive assistance in code generation, architectural planning, debugging, and documentation throughout the development of this project.

### Open Source Libraries
- **[JSZip](https://stuk.github.io/jszip/)** โ€” Used by the Zip Manager and Office App to process and extract `.zip` and `.odt` archives.
- **[lucide-icon](https://lucide.dev/)** - Used by the File Manager,Terminal and other apps when lucid icon applied

### Iconography
- System icons are based on the **Bloom** icon theme from the **deepin** desktop project and various open-source SVG sets.

---

## ๐Ÿ“œ License

EverestOS is open-source software licensed under the **GNU General Public License v3.0 or later (GPL-3.0-or-later)**.

Copyright (C) 2026 EverestOS Project

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.


---

<p align="center">
  Built with โค๏ธ in Nepal for the Open Web
</p>