Skip to content

hanthor/bluefin-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

150 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bluefin CLI

A powerful, modern CLI tool for managing shell configuration and development environment customization. Built with beautiful TUIs using Charm libraries.

✨ Features

  • 🎨 Interactive Menu: Default TUI experience for easy navigation
  • ✨ Bling: Toggle modern shell enhancements (eza, bat, ugrep, zoxide, atuin, starship)
  • πŸ“° MOTD: Beautiful Message of the Day with system info and random tips
  • πŸ“¦ Bundle Installer: Install curated tool bundles (ai, cli, fonts, k8s) from Universal Blue
  • �️ Wallpapers: Install desktop wallpaper collections from ublue-os/tap
  • 🎨 Starship Themes: Browse and apply Starship prompt themes
  • πŸ“Š Status Command: View configuration and installed tools at a glance

πŸš€ Installation

Windows (PowerShell) - Recommended

Build and install from source:

git clone https://github.com/hanthor/bluefin-cli.git
cd bluefin-cli
go build -o bluefin-cli.exe .

# Optional: move to a permanent location on PATH
New-Item -ItemType Directory -Force "$HOME\\bin" | Out-Null
Move-Item .\\bluefin-cli.exe "$HOME\\bin\\bluefin-cli.exe" -Force
$env:PATH = "$HOME\\bin;$env:PATH"

Enable shell integration for both pwsh and Windows PowerShell profiles:

bluefin-cli shell powershell on

macOS / Linux (Go Install)

go install github.com/hanthor/bluefin-cli@latest

Build from Source (Any OS)

Prerequisites:

  • Go 1.21 or later
git clone https://github.com/hanthor/bluefin-cli.git
cd bluefin-cli
go build -o bluefin-cli .

On Windows, use go build -o bluefin-cli.exe ..

Homebrew (Experimental)

brew tap ublue-os/homebrew-experimental-tap
brew install bluefin-cli

Winget (Planned)

Once published to Winget, installation will be:

winget install --id Hanthor.BluefinCLI --exact

Maintainers: automated Winget submission is configured in .github/workflows/winget.yml.

πŸ“– Usage

Interactive Menu (Default)

Simply run the command to launch the interactive menu:

bluefin-cli

Or explicitly:

bluefin-cli menu

Command Line Usage

Check Status

View your current configuration and installed tools:

bluefin-cli status

✨ Shell Experience

Bluefin CLI includes a "Shell Experience" module (formerly "bling") that configures your shell with modern tools and aliases.

To enable the shell experience:

bluefin-cli shell bash on
# or
bluefin-cli shell zsh on
# or
bluefin-cli shell fish on

Or use the interactive menu: bluefin-cli menu -> "Shell Experience".

Features:

  • eza: Modern replacement for ls
  • bat: Syntax highlighting for cat
  • ugrep: Faster grep
  • zoxide: Smarter cd
  • atuin: Shell history sync
  • starship: Cross-shell prompt
  • uutils: Rust rewrite of coreutilsl

MOTD - Message of the Day

Show the MOTD:

bluefin-cli motd show

Toggle MOTD for shells:

# Enable for all shells
bluefin-cli motd toggle all on

# Enable for specific shell
bluefin-cli motd toggle zsh on

# Disable MOTD
bluefin-cli motd toggle all off

Install Tool Bundles

Install curated Homebrew bundles:

# List available bundles
bluefin-cli install list

# Install specific bundle
bluefin-cli install ai       # AI tools
bluefin-cli install cli      # CLI essentials
bluefin-cli install fonts    # Development fonts
bluefin-cli install k8s      # Kubernetes tools

# Interactive mode
bluefin-cli install

Install Wallpapers

Install desktop wallpaper collections:

# Interactive selection
bluefin-cli install wallpapers

# Install specific wallpaper casks
bluefin-cli install wallpapers bluefin-wallpapers aurora-wallpapers bazzite-wallpapers

# Non-interactive test run: apply theme + enable all automation
bluefin-cli install wallpapers bluefin-wallpapers --yes

# Non-interactive with explicit controls
bluefin-cli install wallpapers bluefin-wallpapers --non-interactive --apply-theme --theme Bluefin --enable-mode-sync --enable-auto-dark-light --trigger-source polling

# Use startup-only mode sync (no minute polling task)
bluefin-cli install wallpapers bluefin-wallpapers --non-interactive --enable-mode-sync --trigger-source startup

# Auto Dark Mode integration mode (startup sync + external mode-change utility)
bluefin-cli install wallpapers bluefin-wallpapers --non-interactive --enable-mode-sync --trigger-source autodarkmode

# Cleanup Windows sync artifacts/state/tasks generated by wallpaper integration
bluefin-cli install wallpapers cleanup

# Full reset for testing: cleanup + uninstall known wallpaper casks + local wallpaper folders
bluefin-cli install wallpapers cleanup --all

Non-interactive wallpaper flags:

  • --non-interactive: Skip prompts and use provided flags.
  • --yes: Shortcut for --non-interactive --apply-theme --enable-mode-sync --enable-auto-dark-light.
  • --apply-theme: Apply a Windows theme after registration (WSL only).
  • --theme <name>: Theme to apply in non-interactive mode (Bluefin, Aurora, Bazzite).
  • --enable-mode-sync: Enable day/night wallpaper sync task.
  • --enable-auto-dark-light: Enable 6 AM/6 PM light/dark switching tasks (requires --enable-mode-sync).
  • --trigger-source <source>: Mode-sync trigger source (polling, startup, autodarkmode).

autodarkmode notes:

  • Bluefin CLI ensures %LOCALAPPDATA%\\BluefinCLI\\set-light-mode.ps1 and %LOCALAPPDATA%\\BluefinCLI\\set-dark-mode.ps1 exist.
  • In Auto Dark Mode, point light/dark custom script hooks to those two scripts.

Starship Themes

you can change your prompy lookks Browse and apply Starship preset themes:

bluefin-cli starship theme

Install Starship if not already present:

bluefin-cli starship install

πŸ”§ What Gets Configured

Bling Tools

The bling command configures these modern CLI tools:

  • eza: Modern replacement for ls with icons and colors
  • bat: cat clone with syntax highlighting
  • zoxide: Smarter cd command that learns your habits
  • atuin: Magical shell history with sync and search (optional)
  • starship: Fast, customizable prompt for any shell
  • ugrep: Ultra-fast grep alternative (optional)

Shell Aliases

When bling is enabled in your shell:

ll      # eza -l --icons=auto --group-directories-first
ls      # eza
cat     # bat --style=plain --pager=never
grep    # ugrep (if installed)

πŸ“š Documentation

πŸ—οΈ Project Structure

bluefin-cli/
β”œβ”€β”€ main.go              # Application entry point
β”œβ”€β”€ cmd/                 # Cobra commands
β”‚   β”œβ”€β”€ root.go         # Root command & menu default
β”‚   β”œβ”€β”€ menu.go         # Interactive TUI menu
β”‚   β”œβ”€β”€ bling.go        # Bling command
β”‚   β”œβ”€β”€ motd.go         # MOTD command
β”‚   β”œβ”€β”€ install.go      # Install bundles/wallpapers
β”‚   β”œβ”€β”€ starship.go     # Starship theme management
β”‚   └── status.go       # Status display
β”œβ”€β”€ internal/            # Internal packages
β”‚   β”œβ”€β”€ bling/          # Bling logic & embedded scripts
β”‚   β”œβ”€β”€ motd/           # MOTD generation
β”‚   β”œβ”€β”€ install/        # Bundle & wallpaper installation
β”‚   β”œβ”€β”€ starship/       # Starship integration
β”‚   └── status/         # Status checking
└── test/                # Integration tests

πŸ“š Inspiration

This project consolidates and modernizes functionality from:

  • ublue-bling: Shell aliases and tool initialization scripts
  • bluefin-cli (cask): Homebrew package management and MOTD
  • ujust recipes: Task runner and development environment helpers

πŸ› οΈ Development

Prerequisites

  • Go 1.21+
  • Podman (for containerized testing)
  • just (for running recipes)

Building

just build

Testing

# Run tests in container
just test

# Run tests locally
go test ./...

Interactive Development

Launch shells with bling pre-configured:

just bash   # Test in bash
just zsh    # Test in zsh
just fish   # Test in fish

Dependencies

This project uses:

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Universal Blue - For the original bluefin-cli and ublue-bling
  • Charm - For the amazing TUI libraries
  • The Homebrew community

πŸ”— Related Projects

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors