Automated multi-website slideshow and digital display runner for Windows.
⬇ Download Installer (OrbitSlide-Setup-1.0.0.exe)
OrbitSlide is an open-source desktop application that displays multiple web pages on a rotating schedule for wallboards, control rooms, kiosk PCs, and ambient secondary monitors. Each website runs in an isolated Chromium view (WebContentsView) with persistent cookies and configurable reload intervals.
All configurations and slide data are stored locally in SQLite (orbitslide.db). OrbitSlide operates standalone without cloud dependencies, external telemetry, or tracking pings.
- NOC & IT Operations: Rotate Grafana dashboards, Zabbix, Portainer, and Kubernetes status portals with persistent login cookies and self-signed SSL bypass.
- Offices & Workspaces: Cycle agile boards (Trello, Jira, Linear), sales dashboards, KPI trackers, and internal announcement pages on wall-mounted screens.
- Retail & Digital Signage: Run web-based menu boards, price lists, promo slides, or customer queue displays on unattended kiosk PCs.
- Smart Home & Homelabs: Turn an idle secondary monitor or mini PC into a continuous display for Home Assistant, live weather, or network statistics.
- Automated Rotation & Preloading
- Slides rotate based on individual or default duration timers.
- Next slide preloads in the background to avoid blank white screens during transitions.
- Off-screen slide views throttle rendering to conserve CPU and RAM while keeping active background WebSocket connections alive.
- Isolated Sessions & Persistent Cookies
- Uses separate Chromium session partitions (
persist:default,persist:admin, or custom profiles). - Login sessions and cookies remain saved across application restarts.
- Optional ignore-certificate-errors toggle for internal intranet hosts using self-signed SSL certificates.
- Uses separate Chromium session partitions (
- Operator Interaction & Idle Detection
- Moving the mouse over an active slide automatically pauses the rotation timer so operators can interact with the page.
- Rotation resumes automatically after a configurable period of inactivity (default: 30 seconds).
- Offline Standby Screen & Wallpapers
- When no slides are active, OrbitSlide displays a standby screen with a digital clock, local date, and live status beacon.
- Supports custom wallpaper uploads (up to 3 local images) with alternating crossfade transitions.
- Bilingual Interface
- Full interface support for Indonesian and English, with automatic locale detection.
- Kiosk Mode & Auto-Start
- Supports borderless fullscreen mode (
F11). - Includes a PowerShell setup script to configure Windows Task Scheduler for auto-start on user logon.
- Supports borderless fullscreen mode (
flowchart TD
subgraph Main["Electron Main Process"]
App["App Lifecycle & Single Instance"]
DB[("Local SQLite Database\n(sql.js WASM)")]
Scheduler["Slide Scheduler & Idle Watcher"]
ViewMgr["WebContentsView Manager\n(View Pool, Preload, Throttling)"]
Standby["Standby Page Generator\n(Clock & Wallpapers)"]
end
subgraph Preload["Preload Layer"]
Bridge["contextBridge (monitorAPI)"]
end
subgraph UI["Renderer Process (React 19 + Tailwind)"]
HUD["Floating HUD Controls"]
Settings["Settings & Slide Management"]
end
subgraph Views["Rendered Target Slides"]
Slide1["Slide 1 (WebContentsView - Session A)"]
Slide2["Slide 2 (WebContentsView - Session B)"]
end
App --> DB
App --> ViewMgr
Scheduler --> ViewMgr
Scheduler -.->|State Broadcast| Bridge
Bridge --> UI
UI -->|IPC Handlers| Bridge
Bridge --> App
ViewMgr --> Slide1
ViewMgr --> Slide2
ViewMgr --> Standby
OrbitSlide/
├── public/ # Static assets, favicon, and SVG logos
├── resources/icons/ # Windows installer & runtime icons (.ico, .png)
├── scripts/
│ ├── setup-windows-kiosk.ps1 # PowerShell script for Windows Task Scheduler auto-start
│ └── README-KIOSK.md # Kiosk deployment documentation
├── src/
│ ├── main/
│ │ ├── database.ts # SQLite WASM storage layer (slides & app settings)
│ │ ├── index.ts # Application entry, IPC handlers, single-instance lock
│ │ ├── scheduler.ts # Rotation timer, pause/resume, and operator idle detection
│ │ ├── standbyPage.ts # Standby screen HTML/CSS/JS generator
│ │ ├── viewHost.ts # Base view host contract
│ │ └── viewManager.ts # WebContentsView lifecycle, preloading, and throttling
│ ├── preload/
│ │ └── index.ts # Secure contextBridge API definition
│ ├── renderer/
│ │ ├── components/ # Floating HUD, Settings modal, Standby, Error fallback
│ │ ├── i18n.ts # Indonesian and English localization dictionaries
│ │ ├── App.tsx # Main application state orchestrator
│ │ └── main.tsx # React 19 entrypoint
│ └── types/ # Shared TypeScript interfaces
├── package.json
└── vite.config.ts
| Shortcut | Description |
|---|---|
Space |
Pause or resume slideshow rotation |
F11 |
Toggle fullscreen mode |
Esc |
Exit fullscreen mode |
Ctrl + Left Arrow |
Navigate to previous slide |
Ctrl + Right Arrow |
Navigate to next slide |
Ctrl + , |
Open or close Settings dialog |
- Node.js 20+ (LTS recommended)
- npm or yarn
git clone https://github.com/pratama1246/OrbitSlide.git
cd OrbitSlide
npm installnpm run dev# Compile and package Windows x64 NSIS installer (.exe)
npm run package
# Build unpacked folder for local testing
npm run package:dirInstaller output is written to the release/ directory (e.g. OrbitSlide-Setup-1.0.0.exe).
For 24/7 unattended display PCs:
- Open PowerShell as Administrator.
- Run the deployment script:
powershell -ExecutionPolicy Bypass -File scripts\setup-windows-kiosk.ps1
- The script registers a Windows Task Scheduler job to launch OrbitSlide automatically when the target user logs in.
For uninstall instructions or custom task configurations, see scripts/README-KIOSK.md.
This project is licensed under the MIT License.