๐๏ธ EverestOS
May 24, 2026 ยท View on GitHub
A premium, modular web-based desktop environment โ born in Nepal, the land of Mount Everest.
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) /gilibraries. - 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
| Layer | Technology |
|---|---|
| Language | Vanilla JavaScript (ES Modules) |
| Build Tool | Vite 6.x |
| Styling | CSS3 โ Variables, Grid, Flexbox, Glassmorphism |
| Fonts | Inter, JetBrains Mono (Google Fonts) |
| Storage | IndexedDB (client) / Node.js FS API (dev server) |
| Runtime | Bun (recommended) or Node.js |
| Icons | Bloom 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>