# Oh My Posh Manager
A terminal UI (TUI) that sets up **[Oh My Posh](https://ohmyposh.dev)** from scratch - no prior knowledge needed.
> **You don't need Oh My Posh installed.** The app detects what's missing and walks you through everything: installing Oh My Posh, picking a Nerd Font, previewing and applying a theme, and configuring your shell. Just run it and follow the wizard.
Built with **Rust**, **Ratatui**, and a PowerShell-blue color scheme.

---
## Installation
### Cargo (from crates.io)
```sh
cargo install omp-manager
```
### Chocolatey (Windows)
```sh
choco install omp-manager
```
### Winget (Windows)
```sh
winget install marlocarlo.omp-manager
```
### From source
```sh
git clone https://github.com/marlocarlo/omp-manager.git
cd omp-manager
cargo install --path .
```
Then run:
```sh
omp-manager
```
### 2. Follow the Setup Wizard
When you launch the app, go to **Quick Setup** (first item on the Dashboard) and press **Enter** at each step:
| **1. Install Oh My Posh** | Downloads and installs the OMP binary (winget on Windows, brew on macOS, official script on Linux) |
| **2. Install a Nerd Font** | Presents a curated list of Nerd Fonts - pick one, press Enter, done |
| **3. Pick a Theme** | Quick-pick from popular themes, or go to the Themes tab to browse all 100+ with live preview |
| **4. Configure Shells** | Auto-detects your installed shells, toggle which ones to configure, press Enter |
After step 4, **restart your terminal** and your prompt is ready.
---
## Features
### Dashboard
System status at a glance - OMP version, active theme, Nerd Font status, shell config status. Quick actions: open Setup Wizard, jump to Themes, install fonts, update, or reset everything to default.
### Themes Browser
Browse **100+ built-in themes** with:
- **Category sidebar** - Popular, Minimal, Powerline, Colorful, Dark, Light
- **Live search** - press `/` and type to filter
- **Visual preview** - see colored PowerLine segments, blocks, and colors rendered in your terminal before applying
- **One-key apply** - press `Enter` to download (if needed) and apply any theme
Themes are auto-downloaded from the official Oh My Posh GitHub repo on demand. No manual file management needed.
---
## Keybindings
| `Tab` / `1-3` | Switch tabs |
| `↑` `↓` | Navigate lists |
| `←` `→` | Switch panels / categories |
| `/` | Search themes |
| `Enter` | Execute / Apply |
| `Space` | Toggle (setup shells) |
| `R` | Reset to default (dashboard) |
| `q` | Quit |
**Mouse is fully supported** - click tabs, click list items, scroll with the wheel, right-click themes for options.
---
## Supported Shells
The app auto-detects which of these are installed and lets you configure any combination:
| PowerShell 7+ | `$PROFILE` |
| Windows PowerShell | `~/Documents/WindowsPowerShell/...profile.ps1` |
| Bash | `~/.bashrc` |
| Zsh | `~/.zshrc` |
| Fish | `~/.config/fish/config.fish` |
| Nushell | `~/.config/nushell/config.nu` |
| Cmd (Clink) | `~/.config/clink/oh-my-posh.lua` |
| Elvish | `~/.config/elvish/rc.elv` |
---
## How It Works (under the hood)
1. **Detection** - On startup, scans for the `oh-my-posh` binary, checks `POSH_THEMES_PATH`, detects installed shells and Nerd Fonts
2. **Theme catalog** - Merges a built-in catalog of 100+ themes with any `.omp.json` files found on disk
3. **Downloads** - Themes are fetched on demand from `https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/`
4. **Shell config** - Writes the standard OMP init line to each shell's profile file (and can cleanly remove it)
---
## Project Structure
```
src/
├── main.rs Entry point, event loop, input handlers
├── app.rs Central state machine (App struct, Tab/Focus enums)
├── ui.rs All ratatui rendering - tabs, body, overlays, footer
├── theme.rs PowerShell-inspired color palette constants
├── detect.rs OS, Oh My Posh binary, Nerd Font detection
├── install.rs Platform-specific OMP install, shell configuration
├── themes.rs 100+ built-in theme catalog, discovery from disk
├── config.rs OMP JSON config parsing (Block, Segment, etc.)
├── segments.rs 70+ segment type catalog with icons/examples
├── fonts.rs 18 Nerd Font catalog, install via `oh-my-posh font`
├── shell.rs Shell profile paths, init command generation
└── preview.rs Theme preview renderer (colored PowerLine segments)
```
## Requirements
- **Rust 1.70+** (for building from source)
- A terminal with 256-color or truecolor support (Windows Terminal, iTerm2, most modern terminals)
> You do **not** need Oh My Posh or a Nerd Font pre-installed - the app installs both for you.
## License
MIT