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

  • Button-Based Radial Menu: Interactive spell buttons arranged in a grid with proper Textual styling
  • 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

The menu uses interactive Textual button widgets arranged in a 5×5 grid:

┌────────────────────────────┐
│  👤  📁  🕐  📋  💾       │
│  🌐  ⚙️        ⚡  🔥     │
│  📊        [CENTER]  🎯  💻│
│  🔧  📝  🚀  🛠️  🔄       │
│  💾  🎵  📞  ⌨️  🖱️       │
├────────────────────────────┤
│ 🎯 Who Am I — Show user    │
└────────────────────────────┘

Features:

  • Spell buttons with emoji icons and names
  • Click any button to select and execute
  • Hover effects for visual feedback
  • Selected button shows with primary styling
  • Information panel shows current selection
  • Keyboard navigation with arrow keys/WASD
  • Theme support with responsive colors

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 menu widget with buttons
  • 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.0.tar.gz (14.9 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.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: quickcast-0.1.0.tar.gz
  • Upload date:
  • Size: 14.9 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.0.tar.gz
Algorithm Hash digest
SHA256 6cc80212aebefa4c51084bbb53347fe1dd60af2d3784e4c7ce4d29128319eca8
MD5 18cce10bd382cdd28846c737a24aad73
BLAKE2b-256 e197313e37ab734dc78220d75d9c70932d1f636682ad6190aa16e38f203968fa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quickcast-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.2 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 18baee99d4eda9ad788a439e34b82eaff26ac6109904d2c8153f9a79254bb74f
MD5 1ad70e3864bd700af9b02d1c368f04b5
BLAKE2b-256 f3ab461d65bbdfa4aa744c02128c8647038b34fe97af90174c657283f829c00d

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.1

2 files

This release

0.1.0 This release

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