Add mode READMEs and move Bigscreen app

Add comprehensive READMEs for Bigscreen and Desktop modes, and relocate the Tauri frontend prototype into a new Bigscreen/ subdirectory. This moves package.json/package-lock, src, src-tauri, assets, views, styles and related files into Bigscreen/ to separate the controller-first shell from top-level docs. Update the root README.md to reframe the project as "NebulaOS", describe Bigscreen/Desktop modes, the vision, tech stack and development notes. This reorganizes the repo layout for clearer mode separation and documentation.
This commit is contained in:
Andrew Zambazos
2026-05-21 20:11:18 +12:00
parent b141c0a058
commit f0d2926872
87 changed files with 974 additions and 322 deletions
+305
View File
@@ -0,0 +1,305 @@
# NebulaOS Bigscreen Mode
Bigscreen Mode is the controller-first console interface for NebulaOS.
It is designed for gaming PCs, handhelds, TVs, and couch-based setups where the primary input is a controller rather than a mouse and keyboard.
Bigscreen Mode should feel like the main dashboard of a console, but with the freedom of a Linux PC underneath.
---
## Purpose
Bigscreen Mode exists to make NebulaOS feel native on gaming hardware.
It provides:
* A controller-first home screen
* A game and app library
* System settings
* Power controls
* Profile and lock screen flows
* Store and launcher integrations
* A fullscreen interface for TV and handheld use
The goal is not to copy Steam Big Picture or Xbox exactly.
The goal is to create an open, polished, flexible OS shell that feels good to use with a controller.
---
## Current Features
The current v0 prototype includes:
* Lock screen with PIN keypad
* Controller and keyboard input support
* Home dashboard
* Library stub
* Settings stub
* Power overlay
* Controller focus management
* Keyboard mirror controls for development
* Xbox-inspired horizontal tile layout
* Dynamic nebula background stack
* Smooth focus transitions
* Shared top bar with profile and time display
---
## Input Model
Bigscreen Mode uses unified input actions instead of raw button handling.
Core actions:
```text
up
down
left
right
accept
back
menu
```
These actions can come from:
* Controller D-pad
* Controller left stick
* Controller face buttons
* Keyboard arrow keys
* Enter
* Escape
* Backspace
This keeps the UI consistent across controllers, keyboards, and future input devices.
---
## Controller Mapping
```text
D-pad / left stick: Navigate
A: Accept
B: Back
Start: Menu
```
Future mappings may include:
```text
LB / RB: Switch tabs or rails
LT / RT: Page navigation
Guide button: Nebula overlay
Y: Search
X: Context action
```
---
## Design Goals
Bigscreen Mode should be:
* Fast
* Clear
* Controller-first
* Readable from a distance
* Comfortable on TVs
* Comfortable on handheld screens
* Smooth and polished
* Visually distinct from desktop Linux
* Easy to navigate without a mouse
---
## UI Structure
Bigscreen Mode is planned around the following major areas:
```text
Bigscreen Mode
├── Lock Screen
├── Home
├── Library
├── Store
├── Apps
├── Settings
├── Downloads
├── Notifications
├── Power Menu
└── Profile Menu
```
---
## Home
The Home screen is the main landing area.
It should include:
* Recent games
* Installed games
* Featured apps
* Continue playing section
* Quick settings
* Profile status
* Time and network status
* Download status
* Power menu access
The current prototype uses a horizontal app tile rail with Library, Settings, and Power tiles.
---
## Library
The Library is the game and app management area.
Initial v0 scope:
* Display mock entries
* Display locally added games
* Launch local executables
* Store metadata locally
* Support controller navigation
* Separate games from apps
Future scope:
* Steam integration
* GOG integration
* Epic Games integration
* Proton and Wine configuration
* Per-game settings
* Save sync support
* Mod manager integration
* Metadata and artwork scraping
---
## Settings
Settings should expose system controls in a controller-friendly way.
Planned categories:
* Network
* Bluetooth
* Audio
* Display
* Controller
* Storage
* Accounts
* Appearance
* Updates
* System
* Desktop Mode
The settings UI should avoid feeling like a desktop control panel.
It should feel like a native console settings app.
---
## Lock Screen
The lock screen currently supports a v0 PIN keypad.
Current v0 PIN:
```text
1234
```
Future improvements:
* User profiles
* Custom PINs
* Avatar selection
* Local account linking
* Parental controls
* Optional password fallback
* Automatic login into Bigscreen profile
---
## Power Menu
The power overlay should support:
* Sleep
* Restart
* Shut down
* Log out
* Switch to Desktop Mode
* Return to login
* Restart Bigscreen shell
Current v0 scope includes a power overlay that traps focus and closes with Back.
---
## Technology
Bigscreen Mode is built with:
* Tauri
* HTML
* CSS
* JavaScript
* Rust backend through Tauri
* Web Gamepad API
* Nebula Core adapters
---
## Run
From the root of the repository:
```bash
npm install
npm run dev
```
---
## Build
```bash
npm run build
```
---
## Development Notes
Bigscreen Mode is currently developed primarily on Windows for faster UI iteration.
Linux testing is still required for:
* Fullscreen behavior
* Session integration
* Controller detection
* System commands
* App launching
* Proton and Wine workflows
* Power controls
---
## Success Criteria
Bigscreen Mode is successful when:
* The entire interface works with a controller
* Users can unlock the system
* Users can navigate Home
* Users can open Library
* Users can open Settings
* Users can launch games or apps
* Users can access power controls
* Users can switch to Desktop Mode
* The UI feels like a native OS shell, not a web app
View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Before

Width:  |  Height:  |  Size: 974 B

After

Width:  |  Height:  |  Size: 974 B

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Before

Width:  |  Height:  |  Size: 903 B

After

Width:  |  Height:  |  Size: 903 B

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before

Width:  |  Height:  |  Size: 995 B

After

Width:  |  Height:  |  Size: 995 B

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

+271
View File
@@ -0,0 +1,271 @@
# NebulaOS Desktop Mode
Desktop Mode is the full Linux desktop experience for NebulaOS.
It exists because NebulaOS should not only be a console-style interface.
It should also be a capable desktop operating system when the user needs one.
Bigscreen Mode is for controller-first gaming and media.
Desktop Mode is for everything else.
---
## Purpose
Desktop Mode gives users access to a normal computer environment.
It is designed for:
* File management
* Web browsing
* Productivity
* Development
* Modding
* Troubleshooting
* Advanced settings
* Desktop gaming
* App management
* System maintenance
NebulaOS should feel simple in Bigscreen Mode, but never locked down.
Desktop Mode is what keeps NebulaOS flexible.
---
## Recommended Foundation
The recommended Desktop Mode foundation is:
* Linux
* KDE Plasma
* SDDM
* Wayland where possible
* X11 fallback where needed
* Custom Nebula theme
* Custom Nebula session entries
KDE Plasma is recommended because it is:
* Highly customizable
* Friendly to Linux gaming workflows
* Themeable
* Mature
* Flexible
* Suitable for both desktop and handheld layouts
---
## Design Direction
Desktop Mode should feel:
* Clean
* Smooth
* Modern
* Minimal
* Polished
* Fast
* Familiar
* Slightly futuristic
The design should take inspiration from the clarity and polish of macOS while keeping the flexibility and openness of Linux.
NebulaOS Desktop Mode should not look like a generic KDE install forever.
The long-term goal is to make it feel like a distinct Nebula desktop experience.
---
## Desktop Mode Responsibilities
Desktop Mode should provide:
* File manager access
* Browser access
* Terminal access
* App launcher
* System settings
* Development tools
* Game modding tools
* Desktop game launching
* Access to Bigscreen Mode
* Advanced troubleshooting tools
---
## Relationship to Bigscreen Mode
NebulaOS has two main sessions:
```text
Nebula Bigscreen
Nebula Desktop
```
### Bigscreen Mode
Used for:
* Controller navigation
* Game launching
* TV use
* Handheld use
* Couch workflows
* Simple settings
* Console-like experience
### Desktop Mode
Used for:
* Mouse and keyboard use
* Advanced configuration
* Development
* File browsing
* Modding
* Productivity
* Troubleshooting
Both modes should feel connected, but they should not try to do the same job.
---
## Session Switching
Long-term, NebulaOS should allow users to switch between modes easily.
Possible flows:
```text
Bigscreen Mode → Power Menu → Switch to Desktop Mode
Desktop Mode → App Launcher → Return to Bigscreen Mode
Login Screen → Choose Nebula Bigscreen or Nebula Desktop
```
The user should never feel trapped in either mode.
---
## KDE Customization Goals
Desktop Mode customization may include:
* Nebula global theme
* Nebula icon theme
* Nebula cursor theme
* Nebula wallpaper set
* Custom SDDM theme
* Custom splash screen
* Custom panel layout
* Custom application launcher
* Custom desktop widgets
* Preinstalled Nebula apps
* Desktop shortcut for Bigscreen Mode
---
## Suggested Desktop Layout
A possible default layout:
```text
Top panel
├── App launcher
├── Active window title
├── System tray
├── Network
├── Audio
├── Battery
└── Clock
Desktop
├── Nebula wallpaper
├── Minimal icons
└── Optional widgets
Dock or bottom panel
├── Browser
├── Files
├── Terminal
├── Settings
├── Nebula Bigscreen
└── Nebula Library
```
---
## Visual Identity
Desktop Mode should share visual DNA with Bigscreen Mode.
Shared elements may include:
* Nebula gradients
* Deep blue and purple tones
* Soft glass panels
* Rounded corners
* Subtle glow
* Clean typography
* Space-inspired wallpapers
* Calm animation
* Consistent icon language
Desktop Mode should be calmer and more practical than Bigscreen Mode, but still recognizably Nebula.
---
## System Tools
Desktop Mode may eventually include Nebula-specific tools such as:
* Nebula Control Center
* Nebula Update Manager
* Nebula Library desktop app
* Nebula Browser
* Nebula Store
* Nebula Settings bridge
* Nebula account/profile manager
* Nebula system diagnostics
---
## Development Goals
Initial Desktop Mode goals:
* Pick KDE Plasma as the base
* Create a Nebula desktop theme
* Create a Nebula SDDM login theme
* Add Bigscreen and Desktop sessions
* Add a launcher shortcut back into Bigscreen Mode
* Keep normal Linux tools available
* Avoid breaking standard KDE functionality
---
## What Desktop Mode Should Avoid
Desktop Mode should avoid:
* Removing normal Linux functionality
* Hiding important system tools
* Making KDE harder to use
* Becoming too console-like
* Depending on Bigscreen Mode to function
* Locking users into one workflow
Desktop Mode should be powerful, normal, and clean.
---
## Success Criteria
Desktop Mode is successful when:
* Users can use NebulaOS like a normal Linux desktop
* KDE feels visually integrated with NebulaOS
* Bigscreen Mode can be launched easily
* Advanced settings are accessible
* Development and troubleshooting are possible
* The desktop feels polished instead of temporary
* The system still feels like one unified OS
+403 -327
View File
@@ -1,51 +1,290 @@
# Nebula OS v0 Windows-first Development Plan
# NebulaOS
## Nebula OS Prototype (Current)
NebulaOS is an open source Linux-based operating system experience built around two modes:
This repository now includes a working v0 Nebula OS prototype in the Tauri frontend (`src/`) with:
1. **Bigscreen Mode**: a controller-first console-style interface for games, apps, media, settings, and system navigation.
2. **Desktop Mode**: a clean KDE-based desktop experience for productivity, development, file management, and advanced system control.
- Lock Screen with controller/keyboard PIN keypad (`1234` for v0)
- Home dashboard tile grid (Library, Settings, Power)
- Settings split-pane stub (category list + content panel)
- Library stub view with controller back behavior
- Start/Menu power overlay that traps focus and closes with Back
- Unified input actions (`up/down/left/right/accept/back/menu`) from keyboard + gamepad
NebulaOS is not just a launcher, Steam skin, or Big Picture replacement.
It is a full OS experience designed to make Linux feel native on gaming PCs, handhelds, TV setups, and eventually dedicated console-like hardware.
### Dashboard refresh (Xbox-inspired Nebula)
The goal is to combine the best parts of console UX, desktop Linux, and modern operating system design into one flexible system.
The shell now uses a premium horizontal dashboard language inspired by console UI patterns:
---
- Left-aligned horizontal app tile rail (Library, Settings, Power)
- Dynamic nebula background stack (gradient, starfield, fog, vignette)
- Shared top bar with reactive accent line and profile/time status
- Layered tile focus states (scale, cyan glow, ripple, elevation)
- Smooth page/focus transitions with cubic-bezier motion curves
- Immersive lock screen with large clock/date and input-revealed PIN panel
- Settings redesign with top category rail + card-based content panel
## Vision
Animation and component architecture notes are in [src/styles/shell-guidelines.md](src/styles/shell-guidelines.md).
NebulaOS is designed around a simple idea:
### Install
> A gaming OS should feel like a console when you are gaming, and like a real desktop when you need one.
Most gaming-focused Linux setups are either:
* Too desktop-oriented for controller use
* Too launcher-dependent
* Too tied to Steam
* Too limited when the user needs full desktop control
NebulaOS aims to solve that by providing both:
* A polished controller-first Bigscreen interface
* A proper Linux desktop mode
The long-term goal is to create an OS that can work as:
* A Steam Deck-style handheld interface
* A living room gaming console UI
* A gaming PC frontend
* A full Linux desktop
* A foundation for future Nebula hardware
---
## Modes
### Bigscreen Mode
Bigscreen Mode is the main console-style experience.
It is designed for:
* Controllers
* TVs
* Handhelds
* Game launching
* App launching
* System settings
* Power controls
* Profiles
* Media-focused workflows
Bigscreen Mode is built as a fullscreen Nebula shell using Tauri, HTML, CSS, JavaScript, and a controller-first navigation system.
Current v0 features include:
* Lock screen with controller and keyboard PIN keypad
* Home dashboard tile grid
* Library screen
* Settings screen
* Power overlay
* Unified input actions from keyboard and gamepad
* Xbox-inspired horizontal dashboard layout
* Dynamic nebula background visuals
* Controller focus states and smooth transitions
Read more in:
```text
bigscreen/README.md
```
---
### Desktop Mode
Desktop Mode is the full Linux desktop experience.
It is intended for:
* File browsing
* Productivity
* Web browsing
* Development
* System configuration
* Troubleshooting
* Advanced settings
* Desktop gaming workflows
The recommended Desktop Mode foundation is KDE Plasma because it is flexible, themeable, controller-adaptable, and already well-suited to Linux gaming environments.
Desktop Mode should feel clean, modern, and polished, with a design direction inspired by the clarity and smoothness of macOS while keeping the flexibility of Linux.
Read more in:
```text
Desktop/README.md
```
---
## What NebulaOS Is
NebulaOS is:
* A Linux-based gaming operating system experience
* A controller-first shell for Bigscreen use
* A KDE-based desktop experience for normal computer use
* A unified game and app launcher
* A modular platform for Nebula apps
* An open alternative to proprietary gaming frontends
* A foundation for future console-like hardware
---
## What NebulaOS Is Not
NebulaOS is not:
* A Steam skin
* A Steam Big Picture clone
* A launcher-only project
* A proprietary console OS
* A replacement for Linux itself
* A locked-down gaming environment
NebulaOS should work with Steam, GOG, Epic Games, local apps, native Linux games, Proton, Wine, and other tools without depending on one companys frontend.
---
## Core Principles
1. **Controller-first, not controller-compatible**
Bigscreen Mode should be designed from the ground up for controller navigation.
2. **Desktop when needed**
Users should always be able to access a proper desktop environment.
3. **Open and modular**
NebulaOS should be built from replaceable, understandable components.
4. **Independent from proprietary launchers**
Store integrations should exist, but NebulaOS should have its own interface.
5. **Console feel, PC freedom**
NebulaOS should feel simple and polished without removing user control.
6. **Built for iteration**
v0 should be simple, but the architecture should leave room for long-term growth.
---
## High-Level Architecture
NebulaOS is split into several layers:
```text
NebulaOS
├── Bigscreen Mode
│ ├── Nebula Home
│ ├── Nebula Library
│ ├── Controller Settings
│ ├── Power Menu
│ └── Profile / Lock Screen
├── Desktop Mode
│ ├── KDE Plasma
│ ├── Nebula desktop theme
│ ├── Desktop apps
│ └── Advanced system tools
├── Nebula Core
│ ├── Input
│ ├── Navigation
│ ├── Theme
│ ├── Glyphs
│ └── Shared UI logic
└── System Integration Layer
├── Game discovery
├── App launching
├── Store integrations
├── Proton / Wine handling
├── Network settings
├── Audio settings
├── Display settings
└── Power controls
```
---
## Technology Stack
### Bigscreen Mode
* Tauri
* HTML
* CSS
* JavaScript
* Rust backend through Tauri
* Web Gamepad API
* Nebula Core
### Desktop Mode
* Linux
* KDE Plasma
* SDDM
* Custom Nebula theme
* Custom session configuration
* Optional Nebula desktop tools
### Game and App Layer
Planned integrations include:
* Native Linux apps
* Local executables
* Steam
* SteamCMD
* Proton
* Wine
* GOG
* Epic Games
* Legendary
* Heroic backend concepts
* Local metadata databases
---
## Current Repository Status
This repository currently contains the early NebulaOS v0 prototype.
Current features include:
* Tauri frontend shell
* Controller and keyboard input mapping
* Lock screen
* Home dashboard
* Library stub
* Settings stub
* Power overlay
* Nebula Core adapter structure
* Xbox-inspired dashboard refresh
* Windows-first development setup
* Linux build pathway
The project is currently focused on building the Bigscreen shell first, while planning Desktop Mode as the second major pillar of the OS.
---
## Install
```bash
npm install
```
### Run (dev)
---
## Run in Development
```bash
npm run dev
```
### Build
---
## Build
```bash
npm run build
```
### Linux prerequisites (Ubuntu/Debian)
---
Install system dependencies required by Tauri/WebKit:
## Linux Prerequisites
For Ubuntu, Debian, and related distributions, install the system dependencies required by Tauri and WebKit:
```bash
sudo apt update
@@ -62,48 +301,75 @@ sudo apt install -y \
libgtk-3-dev
```
Install Node.js LTS and Rust (if not already installed), then run:
You will also need:
* Node.js LTS
* Rust
* npm
Then run:
```bash
npm install
npm run dev
```
### Controller testing notes (Windows)
---
- Connect an Xbox-compatible controller before launching dev mode.
- Navigation: D-pad or left stick.
- Actions: `A` = Accept, `B` = Back, `Start` = Menu.
- Keyboard mirror for development: arrow keys, Enter, Escape/Backspace.
## Controller Testing
### Nebula Core integration status
For development, connect an Xbox-compatible controller before launching the app.
`@nebulaproject/core` is installed and used through runtime adapters in:
### Controller Mapping
- `src/core/input.js`
- `src/core/nav.js`
- `src/core/state.js`
```text
D-pad / left stick: Navigate
A: Accept
B: Back
Start: Menu
```
If Nebula Core exports are available, the shell uses them for input/navigation/glyphs/theme.
If not, local fallback adapters keep the shell fully functional.
### Keyboard Mirror
### Local Nebula Core development (Windows-safe)
```text
Arrow keys: Navigate
Enter: Accept
Escape / Backspace: Back
```
Current npm package `@nebulaproject/core@0.1.3` re-exports internal `@nebula/*` packages that are not published, so local linking is recommended for active core development.
---
1. Clone Nebula Core monorepo next to this repo.
2. Build Nebula Core packages.
3. Link from the core repo and consume in this repo:
## Nebula Core Integration
NebulaOS uses `@nebulaproject/core` through runtime adapters.
Current adapter files:
```text
src/core/input.js
src/core/nav.js
src/core/state.js
```
If Nebula Core exports are available, NebulaOS uses them for input, navigation, glyphs, and theme handling.
If they are unavailable, local fallback adapters keep the shell functional during development.
---
## Local Nebula Core Development
For active local development, clone Nebula Core next to this repository.
```bash
# In Nebula-Core repo
npm link
# In Nebula-OS repo
# In NebulaOS repo
npm link @nebulaproject/core
```
Alternative (more deterministic): use `file:` dependency in `package.json`:
Alternative deterministic setup using `file:` dependency:
```json
{
@@ -119,341 +385,151 @@ Then run:
npm install
```
### Linux VM build (high-level)
- Install Rust, Node.js, and the Linux prerequisites above.
- Clone this repo in the Linux VM.
- Run `npm install`.
- Run `npm run dev` for integration checks in Linux session.
- Run `npm run build` to produce Linux artifacts.
## Vision
Nebula OS is a **controller-first, open source operating system experience** built on Linux.
It has two equally important jobs:
1. **A custom controller-first way to navigate the OS** (like a console shell)
2. **An open source library and launcher layer** for games and apps
Nebula OS is not a skin that launches Steam.
It is an independent UI layer that:
* Acts as the primary **controller-first shell** for the OS
* Provides a unified Home experience for **games, apps, and media**
* Integrates first-install Nebula apps such as **Nebula Browser** and **Nebula Launcher**
* Exposes **system settings** through controller-friendly panels
* Manages game libraries directly (Steam, GOG, Epic, and others)
Nebula OS v0 focuses on building the foundation for this console-grade OS shell.
---
# Core Principles
## Development Strategy
1. Controller-first, not controller-compatible
2. Replace proprietary frontends with an open interface
3. Separate system layer from UI layer
4. Build modular infrastructure for long-term independence
5. Develop iteratively, but architect for autonomy
NebulaOS is currently developed across two environments.
---
# What Nebula OS v0 Actually Is
Nebula OS v0 consists of:
* Base OS: Ubuntu LTS (or Ubuntu-based)
* Desktop Environment: KDE Plasma (recommended)
* Display Manager: SDDM
* Two login sessions:
* Nebula Desktop
* Nebula Game UI
* Nebula OS (Tauri + HTML/CSS/JS)
* Nebula Library (core application responsible for:
* Game discovery
* Installation
* Updates
* Launching
* Compatibility management)
Unlike SteamOS, Nebula OS does not rely on launching Steam Big Picture.
Nebula Library is the primary game management layer.
---
# High-Level Architecture
## Desktop Mode
A standard KDE session for:
* Productivity workflows
* File browsing and system tools
* Development and troubleshooting
* Advanced configuration
Desktop Mode remains a normal Linux desktop.
## Game UI Mode
A dedicated login session that launches **Nebula OS** fullscreen.
Game UI Mode contains:
* Lock screen with controller PIN entry
* Nebula Home dashboard
* Nebula Library
* Controller-friendly Settings
* Power and session controls
Game UI Mode is the **console experience** for the entire OS.
## System Integration Layer (behind the UI)
Nebula OS needs a clean boundary between UI and system operations.
Recommended approach:
* A small privileged backend service (later) that exposes safe operations:
* Wi-Fi and networking
* Audio and output device selection
* Display resolution and scaling
* Bluetooth pairing
* Storage overview
* Power controls
* The UI talks to that layer through a stable API
v0 scope can start with non-privileged read-only data and a few safe commands.
---
# Technology Stack
## UI Layer
* Tauri
* HTML
* CSS
* JavaScript
Why Tauri:
* Lightweight
* Native system integration via Rust backend
* Cross-platform development
* Efficient resource usage
## Controller Input
* Web Gamepad API
* Custom focus/navigation system
Controller mappings:
* D-pad / left stick: navigation
* A: activate
* B: back
* Start: menu
* Shoulder buttons: future navigation layers
Keyboard mirrors controller during development.
---
# Nebula OS The OS UI Layer
Nebula OS is the **controller-first OS shell**.
It is the primary interface in Game UI Mode and should feel like a console dashboard, not a desktop.
Nebula OS responsibilities:
* Home dashboard (games, apps, recent activity)
* App launcher for integrated Nebula apps (Nebula Browser, Nebula Launcher, Nebula Library, Settings)
* System navigation (network, audio, display, storage, accounts)
* Power menu and session switching (Game UI ↔ Desktop)
* Notifications and downloads (later)
* Controller-first focus navigation everywhere
Nebula OS is built with Tauri + HTML/CSS/JS.
---
# Nebula Library The Game and App Management Layer
Nebula Library is the **content manager** inside Nebula OS.
It is not a bridge to proprietary UIs.
It should eventually handle:
* Steam installs via SteamCMD and/or open APIs
* GOG installs via open or community tooling
* Epic installs via open tooling (for example Legendary)
* Proton/Wine configuration and per-title settings
* Game launch parameters and runtime selection
* Updates, integrity checks, and metadata
Initial v0 scope:
* Library UI skeleton and data model
* Local entries (manual add)
* Launch local executables
* Foundation for compatibility and store backends
Long-term direction:
Nebula Library becomes a unified open source platform for managing games and apps.
---
# Development Strategy
Nebula OS is developed in two environments:
## Windows (Primary UI Development)
### Windows
Used for:
* Building Nebula OS UI
* Implementing controller navigation
* Designing lock screen
* Designing Library UI
* Building system state architecture
* UI development
* Controller navigation
* Lock screen work
* Library UI
* Settings UI
* Frontend architecture
UI and logic are platform-agnostic.
## Linux VM (Integration & Replacement Layer)
### Linux VM
Used for:
* Building Linux binaries
* Session integration
* SteamCMD integration testing
* Proton/Wine configuration
* System-level testing
* Linux builds
* Session testing
* KDE integration
* Fullscreen shell testing
* Proton and Wine experiments
* System service experiments
Rule:
The current workflow is:
Develop UI on Windows.
Build and test Linux features inside the VM.
```text
Design and build the UI on Windows.
Test OS-level behavior in Linux.
```
---
# Phase Roadmap
## Roadmap
## Phase 1 Nebula OS (Controller Console Layer)
### Phase 1: Bigscreen Shell
Objective:
Build a polished, console-grade Game UI independent of store integration.
Goal: Build a polished controller-first shell.
Deliverables:
* Lock screen with PIN keypad
* Lock screen
* Home dashboard
* Library screen (mock data)
* Library screen
* Settings screen
* Power menu
* Controller navigation grid system
* Fullscreen window behavior
No external integrations yet.
* Controller navigation
* Fullscreen mode
* Basic app launching
---
## Phase 2 Session Integration
### Phase 2: Desktop Mode Foundation
Objective:
Make Nebula OS a selectable login session.
Goal: Create the NebulaOS desktop environment experience.
Milestones:
Deliverables:
* Nebula Game UI appears at login
* Launches fullscreen
* Exiting returns to login
* Controller works reliably
* KDE Plasma setup
* Nebula theme
* SDDM login configuration
* Bigscreen and Desktop session entries
* Desktop-to-Bigscreen switching
* Basic Nebula desktop tools
---
## Phase 3 Nebula Library Foundations
### Phase 3: Session Integration
Objective:
Begin true replacement behavior.
Goal: Make NebulaOS feel like a real OS experience.
Milestones:
Deliverables:
* Launch local Linux games
* Integrate Proton/Wine execution layer
* Add SteamCMD support for installing Steam titles
* Track installed game metadata
* Unified library view
This is where Nebula begins diverging from SteamOS.
* Bigscreen session selectable from login
* Desktop session selectable from login
* Bigscreen launches fullscreen
* Exit to desktop or login
* Controller works reliably in Bigscreen Mode
---
## Phase 4 Store Integrations
### Phase 4: Nebula Library Foundation
Objective:
Add real backend integration without proprietary UI.
Goal: Begin true game and app management.
Potential directions:
Deliverables:
* SteamCMD for Steam installs
* Legendary (Epic CLI) integration
* Heroic backend reuse (without UI dependency)
* OpenGOG community tools
Nebula Library becomes the single UI.
* Local app database
* Installed games database
* Manual game adding
* Local executable launching
* Metadata structure
* Cover art and banner support
* Store backend abstraction
---
# Security Strategy
### Phase 5: Store and Compatibility Integrations
Game UI lock screen:
Goal: Turn Nebula Library into a real open game manager.
* Local PIN authentication
* Optional profile system (future)
Potential integrations:
Linux account authentication remains system-level.
* SteamCMD
* Proton
* Wine
* Legendary for Epic Games
* GOG tooling
* Heroic backend concepts
* Per-game compatibility settings
---
# What Nebula OS Is Not
* Not a Steam skin
* Not Big Picture mode
* Not a launcher aggregator
* Not dependent on proprietary UIs
It is an open system layer that manages games directly.
---
# Immediate Action Plan
1. Build Nebula OS UI on Windows
2. Implement controller navigation framework
3. Build lock screen system
4. Build Library UI skeleton
5. Set up Linux VM
6. Create Nebula Game UI login session
7. Begin local executable launching support
8. Research SteamCMD integration
---
# Success Criteria for v0
## Success Criteria for v0
NebulaOS v0 is successful when:
* You can log into Nebula Game UI
* The entire UI is controller navigable
* Lock screen works
* You can launch locally managed games
* You can return to Desktop Mode
* Bigscreen Mode can be launched fullscreen
* The entire shell is controller navigable
* The lock screen works
* The Home dashboard works
* The Library can display and launch local entries
* Settings has a usable controller-first structure
* Power controls exist
* Desktop Mode remains accessible
* Bigscreen and Desktop feel like two parts of the same OS
From there, Nebula Library evolves into a true open source game management platform.
---
## Long-Term Goal
NebulaOS should become a gaming OS that feels native, polished, and open.
A user should be able to:
* Turn on a machine
* Pick up a controller
* Navigate the whole system
* Launch a game
* Switch to Desktop Mode when needed
* Manage apps, games, settings, and profiles
* Use the system without needing Steam Big Picture or a traditional desktop launcher
NebulaOS is the bridge between a console experience and a real computer.