Theme manager for Oh My Posh that lets you browse, preview, install, activate, add custom and tweak themes directly inside your terminal.
Features
- π» Fast and simple: runs from terminal. Simple interface.
- π Real-time Search: Filter local and remote theme repo
- β‘ Fast Installation: Single or multiple theme download
- π Easy Theme Switching: Theme activation (Bash/Zsh/Fish)
- ποΈ Dual Panel Interface: Local and remote theme management
- π― Custom Repositories: Add themes from Git repository (json has to be in root)
- π¨ Theme Customization: Built-in color editor
- π¨ Basic Previews: Sample prompt structure with basic metadata (Name, Version, Source, Color variation)
- π Performance Optimized: Smart caching and modular architecture
Prerequisites
Before using this tool, you need:
- Oh My Posh installed - Visit ohmyposh.dev for installation instructions
- Compatible shell: Bash, Zsh, or Fish
- Python 3.6+ with standard libraries
Installation
Method 1: PyPI (Recommended)
pip install oh-my-theme
Method 2: AUR (Arch Linux)
yay -S oh-my-theme
# or
paru -S oh-my-theme
Method 3: Git Clone
git clone https://github.com/mikeisfree/oh-my-theme.git
pip install -e .
Usage After Installation
Once installed run with:
omt
Shell Config
The tool automatically updates your shell configuration:
-
Bash:
~/.bashrc
-
Zsh:
~/.zshrc
-
Fish:
~/.config/fish/config.fish
Clean Theme Management:
- Removes all existing Oh My Posh theme lines when activating a new theme - If You want to keep existing oh-my-posh configuration commenting it out will not be enough - back it up to a separate file!
- Adds only the new active theme command
- Preserves all other shell configuration! (aliases, exports, functions)
After activating a theme, reload your shell:
source ~/.bashrc # For Bash
source ~/.zshrc # For Zsh
Usage Details
Interface Overview
The tool displays two panels:
- Left Panel: installed themes (local)
- Right Panel: Available themes from Oh My Posh main repository + custom repos added by user (remote)
Keyboard Shortcuts
Key | Action |
---|---|
TAB |
Switch between panels |
β/β |
Navigate theme list |
ENTER |
Activate/Remove/Customize local theme or Select remote theme |
SPACE |
Toggle selection for remote themes |
p |
Preview selected theme |
i |
Install selected remote themes |
/ |
NEW: Enter search mode for real-time theme filtering |
+ |
NEW: Add custom Git repository |
ESC |
Exit search mode & cancel dialogs |
q |
Quit application |
Local Theme Actions (ENTER)
When you press ENTER on a local theme, you'll see these options:
-
A
- Activate theme in shell -
R
- Remove theme -
C
- Customize theme colors
Getting Started
-
Browse Remote Themes: Use
TAB
to switch to the right panel and browse available themes -
Search Themes: Press
/
to search and filter themes in real-time -
Preview Themes: Press
p
to see previews with sample prompts and metadata -
Select Themes: Use
SPACE
to select multiple themes for installation -
Install Themes: Press
i
to download selected themes -
Activate Theme: Switch to local panel (
TAB
) and pressENTER
βA
on your desired theme -
Customize Theme: Press
ENTER
βC
on local themes to edit colors -
Add Custom Repos: Press
+
to add themes from custom Git repositories
Theme Previews
Preview feature shows:
- Sample prompt structure git status, paths, segments
- Essential metadata: Name, Version, Source (git repository), Color variation
Filter
- Press
/
to enter search mode - Type to filter themes in real-time across both local and remote panels
- Search results highlight matching text
- Press
ESC
to exit search and process filtered items
Custom Repository Support
- Press
+
to add themes from custom Git repository - Enter the Git repository URL when prompted
- The tool will fetch all
.omp.json
files from the repository root - Custom themes are downloaded to your local themes directory
- repository address will be added to filter array
Theme Customization
- Select any local theme and press
ENTER
βC
- Visual color editor shows current segment colors
- Simple color picker interface for modifications
- Save as new theme (new json file) or overwrite original
- Preserve customizations across updates
Theme Storage
Downloaded themes are stored in ~/.poshthemes/
directory. The tool manages this directory automatically.
Troubleshooting
"Unsupported shell" Error
Make sure your SHELL
environment variable is set correctly:
echo $SHELL
Safety measures:
Backup-friendly: Uses a clean replacement strategy that preserves non-Oh My Posh configurations
Atomic updates: Reads entire file, modifies in memory, then writes back
Error handling: Returns success/failure status
uses regex pattern to identify Oh My Posh lines:
init_pattern = re.compile(r"^\s*(eval.*oh-my-posh init.*|oh-my-posh init.*fish.*)")
User confirmation: Always asks for confirmation before activating themes
Theme Not Activating
- Ensure Oh My Posh is properly installed and in your PATH
- Check that your shell configuration file exists and is writable
- Reload your shell after theme activation
Preview Not Working
- For remote themes: The tool will offer to download the theme for preview
- For local themes: Ensure the theme file exists in
~/.poshthemes/
Search Not Responding
- Make sure you're in search mode (press
/
first) - Press
ESC
to exit search mode if stuck - Search works across both local and remote theme panels
Custom Repository Issues
- Ensure the Git repository URL is valid and accessible
- Repository must contain
.omp.json
files in the root directory - Check your internet connection for repository access
Theme Customization Problems
- Only local themes can be customized
- Ensure you have write permissions to the themes directory
- Invalid JSON themes cannot be edited safely
Performance Features
- Smart Caching: Theme metadata is cached to speed up repeated previews
- File Reuse: Existing downloaded themes are reused for previews
- Memory Management: Cache size is limited to prevent memory bloat
- Lazy Loading: Theme parsing only when needed
What's New in v2.0
- π Search: Filter themes instantly with
/
keybind - π― Custom Repositories: Add themes from Git repository with
+
keybind - π¨ Theme Customization: Built-in color editor for personalizing themes
- β¨ Enhanced Previews: sample prompts with essential metadata
- ποΈ Modular Architecture: Improved code organization and maintainability
Contributing
β Star on GitHub if you like it!
π¦ Review the package on PyPI or AUR
π Report issues on GitHub
π§ Submit pull requests with updates/upgrades
License
This project is open source. Please check the license file for details.
Architecture
Oh My Theme v2.0 features a modular architecture:
-
oh_my_theme/main.py
: Core UI and application logic -
oh_my_theme/preview.py
: Enhanced theme previews and sample generation -
oh_my_theme/search.py
: Real-time search and filtering functionality -
oh_my_theme/repositories.py
: Custom Git repository management -
oh_my_theme/editor.py
: Theme color customization interface -
oh_my_theme/config.py
: Configuration and settings management
Dependencies
- Python 3.6+: Core runtime requirement
- Standard libraries only: curses, json, os, subprocess, urllib
- No external dependencies required: Pure Python implementation
Related Links
- Oh My Posh Official Website
- Oh My Posh Documentation
- Oh My Posh Themes Repository (main)
- Project Repository
- PyPI Package
Note: This tool modifies your shell configuration files. It's recommended to backup your configuration before first use.
Top comments (0)