Skip to content

mdonaberger/figlet-studio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Figlet Studio ✨

A delightful terminal user interface (TUI) for creating ASCII art using figlet and toilet. Because your terminal deserves to be an art studio.

Preview

Features

  • Live Preview: See your ASCII art update instantly as you type
  • Font Gallery: Browse all installed figlet and toilet fonts in a colorful scrollable list
  • Font Discovery: Automatically discovers fonts from common system locations across different operating systems
  • Cross-Platform: Works on macOS, Linux, and Windows (WSL)
  • Clipboard Support: Copy your creations with a single keypress
  • Save to File: Export your artwork to timestamped files in ~/.figlet-studio/
  • Colorful & Charming: Full of witty messages and vibrant colors
  • Error-Tolerant: Gracefully handles missing fonts, render errors, and edge cases

Keyboard Shortcuts

Key Action
Space Copy current render to clipboard
S Save to file (~/.figlet-studio/)
Tab Focus next widget
Shift+Tab Focus previous widget
Q Quit application
Ctrl+C Quit application

Installation

Prerequisites

First, install figlet (and optionally toilet):

# macOS (Homebrew)
brew install figlet toilet

# macOS (MacPorts)
sudo port install figlet toilet

# Ubuntu/Debian
sudo apt install figlet toilet

# Fedora/RHEL
sudo dnf install figlet toilet

# Arch Linux
sudo pacman -S figlet toilet

# Windows (WSL)
sudo apt install figlet toilet

Install Figlet Studio

# Clone or download this repository
cd figlet-studio

# Install with pip (recommended)
pip install -e .

# Or run directly
python figlet_studio.py

Usage

figlet-studio

Or:

python figlet_studio.py

How It Works

┌─────────────────────────────────────────────────────────────┐
│  HEADER (with clock)                                         │
├─────────────────────────────────────────────────────────────┤
│  Status Bar (witty messages)                                 │
├──────────────────────────────┬──────────────────────────────┤
│                              │                              │
│  ┌────────────────────────┐  │  ┌────────────────────────┐ │
│  │                        │  │  │   ✨ FONT GALLERY ✨   │ │
│  │   LIVE ASCII PREVIEW   │  │  │                        │ │
│  │                        │  │  │  🎭 banner.flf        │ │
│  │    Your text art       │  │  │  ✏️ big.flf           │ │
│  │    rendered here       │  │  │  🎭 block.tlf         │ │
│  │                        │  │  │  ✏️ standard.flf      │ │
│  │                        │  │  │  ...                  │ │
│  └────────────────────────┘  │  └────────────────────────┘ │
│                              │                              │
│  ┌────────────────────────┐  │                              │
│  │ [Your text here]       │  │     (scrollable list)       │
│  └────────────────────────┘  │                              │
│                              │                              │
│  Space: Copy | S: Save      │                              │
└──────────────────────────────┴──────────────────────────────┘

Configuration

Font discovery automatically checks these paths:

macOS

  • /usr/local/share/figlet (and subdirectories)
  • /opt/homebrew/share/figlet (and subdirectories)
  • /usr/share/figlet (and subdirectories)
  • ~/Library/Fonts/figlet (and subdirectories)
  • /usr/local/share/toilet/fonts (and subdirectories)
  • /opt/homebrew/share/toilet/fonts (and subdirectories)
  • /usr/share/toilet/fonts (and subdirectories)

Linux

  • /usr/share/figlet (and subdirectories)
  • /usr/local/share/figlet (and subdirectories)
  • ~/.local/share/figlet (and subdirectories)
  • /usr/share/toilet/fonts (and subdirectories)
  • /usr/local/share/toilet/fonts (and subdirectories)
  • ~/.local/share/toilet/fonts (and subdirectories)

Windows (WSL)

  • /usr/share/figlet (and subdirectories)
  • /usr/share/toilet/fonts (and subdirectories)

Project Structure

figlet-studio/
├── figlet_studio.py    # Main application
├── pyproject.toml      # Project configuration
└── README.md           # This file

Dependencies

  • textual>=0.86.0 - The TUI framework
  • pyperclip>=1.8.2 - Clipboard functionality

Troubleshooting

"figlet is not installed" error on startup

Figlet Studio requires figlet to be installed on your system. Install it using your package manager (see Installation section above).

"No fonts found" warning

This is unusual but may happen with custom figlet installations. The app will still proceed with the default font. Check that:

  • figlet -I returns a valid font directory
  • Font files (.flf) exist in the expected locations

Clipboard copy fails

If clipboard operations fail:

  • On macOS, ensure you have the latest version of pyperclip
  • On Wayland (Linux), you may need wl-clipboard installed
  • On headless systems, the clipboard may not be available

Font rendering shows garbage or errors

If you see garbled characters or font errors:

  • Try selecting a different font
  • Some fonts may have issues with certain characters
  • Very long text may timeout; try shorter text

Font selection doesn't change preview

If selecting a font doesn't update the preview:

  • Try typing a character in the text input to force a re-render
  • The font may be corrupted; try a different font

Development

Running from Source

git clone https://github.com/yourusername/figlet-studio.git
cd figlet-studio
pip install -e .
python figlet_studio.py

License

MIT License - feel free to use this for your terminal art adventures!

Acknowledgments

  • Built with Textual - the amazing TUI framework for Python
  • Uses figlet for ASCII art rendering
  • Uses toilet for extended font support and color
  • Inspired by the timeless beauty of ASCII art and terminal aesthetics

Made with love for ASCII art enthusiasts. 🎨✨

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages