# 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
