Skip to main content

Quickcast

A radial menu terminal UI for executing shell scripts ("spells") configured via TOML dotfile. Inspired by Baldur's Gate's quick spell menu.

Features

  • Radial Menu: Interactive spell slots arranged in a ring around a central hub
  • Mouse & Keyboard Navigation: Click buttons or use arrow keys/WASD to navigate
  • Real-time Output: View command execution output in real-time
  • TOML Configuration: Define spells in ~/.quickcastrc or ~/.config/quickcast/spells.toml
  • Async Execution: Non-blocking command execution using asyncio
  • Theme Support: Respects Textual themes with hover and focus effects

Installation

pip install quickcast

Or install from source:

git clone https://github.com/zorexsalvo/quickcast-tui
cd quickcast-tui
pip install -e .

Quick Start

Create a configuration file at ~/.quickcastrc:

[spell.ls]
name = "List Files"
command = "ls -la"
description = "List files in current directory"

[spell.whoami]
name = "Who Am I"
command = "whoami"
description = "Show current user"

Then run:

python3 -m quickcast.app

Navigate the menu with your mouse or arrow keys, click/press Enter to execute a spell.

User Interface

Spells are drawn as a radial ring around a central hub, inspired by Baldur's Gate's quick spell menu. Each slot shows the spell's emoji icon and name; the hub shows the currently selected spell with a cast hint. An output overlay floats over the ring when a spell runs.

                         ╔════════════╗
                         ║ List Files ║
                         ║            ║
         ╭────────────╮  ╚════════════╝ ╭────────────╮
         │ Memory     │·················│ Who Am I   │
         │            │·        ·       │            │
         ╰────────────╯         ·       ╰────────────╯
                 ·· ···         ·        ··· ··
                ··    ╔══════════════════╗    ··
                ·     ║     List Files   ║     ·
                ·     ║    ─────────     ║     ·
     ╭────────────╮   ║    List files    ║  ╭────────────╮
     │ Network    │···║                  ║··│ Disk Usage │
     │            │   ║─ Enter to cast ──║  │            │
     ╰────────────╯   ╚══════════════════╝  ╰────────────╯
                   ··      ··       ·      ··
                     ···  ·          ·  ···
                ╭────────────╮···╭────────────╮
                │ Git Status │  ·│ CPU Load   │
                │            │   │            │
                ╰────────────╯   ╰────────────╯

                    ↑↓ navigate   Enter cast

Features:

  • Spell slots arranged in a ring around a central hub
  • Each slot shows an emoji icon and its word-wrapped name
  • A dotted ring and spokes connect the ring to the hub
  • The active slot is highlighted with a gold double-line border
  • The hub shows the selected spell's icon, name, description, and cast hint
  • Up to 8 spells per page — browse pages with [ / ]
  • Output overlay appears over the ring while a spell runs
  • Click a slot or navigate with arrow keys/WASD to select
  • Theme colors adapt to the terminal

For more details, see RADIAL_MENU_DEMO.txt.

Configuration

File Locations

The application looks for configuration in this order:

  1. ~/.quickcastrc
  2. ~/.config/quickcast/spells.toml

Spell Definition

Each spell is defined as a TOML section:

[spell.unique_id]
name = "Display Name"
command = "shell command to execute"
description = "Optional description"
icon = "🎯"  # Optional emoji icon

Example Configuration

[spell.git_status]
name = "Git Status"
command = "git status"
description = "Check git repository status"
icon = "📊"

[spell.disk_usage]
name = "Disk Usage"
command = "df -h"
description = "Show disk usage"
icon = "💾"

[spell.cpu_load]
name = "CPU Load"
command = "top -l 1 | head -n 4"
description = "Show CPU load"
icon = "⚙️"

Controls

  • Mouse: Click on a spell to execute
  • Arrow Keys / WASD: Navigate the menu
  • Enter / Space: Execute selected spell
  • Q / ESC: Quit application

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Format code
black src/

# Lint
ruff check src/

Architecture

  • config.py - Configuration loading and parsing
  • spell.py - Spell data model
  • executor.py - Command execution with subprocess
  • widgets/radial_menu.py - Radial ring menu widget
  • widgets/output.py - Output display widget
  • app.py - Main application

License

MIT License

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quickcast-0.1.1.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quickcast-0.1.1-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

Details for the file quickcast-0.1.1.tar.gz.

File metadata

  • Download URL: quickcast-0.1.1.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.2

File hashes

Hashes for quickcast-0.1.1.tar.gz
Algorithm Hash digest
SHA256 969561dc3a3e36aa8dad3fd390d17eb131ab0e5400c245facada85a84dd27877
MD5 f717087bc5e832c88b573295d4eb9c60
BLAKE2b-256 1260373a974b8a114b5dbdf7fe370817254a2bef329d632ae7e644e62c366921

See more details on using hashes here.

File details

Details for the file quickcast-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: quickcast-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.2

File hashes

Hashes for quickcast-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d60ef09eb43f7a1544980388ce529c1b5b64b8552254674f77ac54a33eaeec53
MD5 c0973b6ec8b8604a20693a9048c06ba1
BLAKE2b-256 a9e79cbebf9719c8ff898dd4677c02f1a1fa9d2e42b1ede6b8f56ab05dd46d20

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page