Skip to content

rubberpirate/kido-tui

Repository files navigation

🔥 Kido-tui

A beautiful, modern terminal-based chat interface for Meshtastic devices with smooth animations and an intuitive user experience.

✨ Features

🔥 Modern Chat Interface (Kido-tui)

  • Bubble-style messages: Clean, WhatsApp-like message display
  • Real-time animations: Smooth connecting animations and progress indicators
  • Color-coded messages: Green for sent messages, blue for received
  • Smart text wrapping: Messages automatically wrap for better readability
  • Channel awareness: Shows current channel info (LongFast, etc.)

🔌 Advanced Connection Management

  • Interactive port selection: Visual port selector with live refresh
  • Connection animations: Spinning loader with progress bar during connection
  • Status indicators: Real-time connection status with emoji indicators
  • Auto-retry logic: Robust connection handling with error recovery
  • Smart serial handling: Prevents send/receive conflicts

📊 Rich Device Information

  • Device details: Shows device name, model, firmware version
  • Channel info: Displays current channel name and index
  • Node identification: Shows device ID and connection details
  • Live statistics: Message counts, uptime, and current time
  • Connection details: Port information and connection status
  • Activity tracking: Last activity timestamps and message flow

⚡ Smooth User Experience

  • 60 FPS animations: Buttery smooth UI updates
  • Responsive controls: Intuitive keyboard navigation
  • Context-aware help: Dynamic help text based on current mode
  • Progress feedback: Visual feedback for all operations

🚀 Quick Start

Prerequisites

  • Rust toolchain (latest stable)
  • A Meshtastic device connected via USB/serial

Installation

git clone <repository-url>
cd Dn-susty
cargo build --release

Usage

# Auto-detect and select port interactively
./target/release/meshtastic-chat

# Connect to specific port
./target/release/meshtastic-chat --port /dev/ttyUSB0

# Custom baud rate
./target/release/meshtastic-chat --port /dev/ttyUSB0 --baud 9600

# Enable verbose logging
./target/release/meshtastic-chat --verbose

🎮 Controls

Normal Mode

  • i - Enter message input mode
  • p - Open port selection dialog
  • q - Quit application

Input Mode

  • Enter - Send message
  • Esc - Return to normal mode
  • Type normally to compose messages

Port Selection

  • ↑/↓ - Navigate port list
  • Enter - Connect to selected port
  • r - Refresh available ports
  • Esc - Cancel and return

🛠️ Technical Features

Architecture

  • Async runtime: Built on Tokio for non-blocking I/O
  • Channel-based communication: Clean separation between UI and serial handling
  • Stateful UI: Persistent state management with smooth transitions
  • Error resilience: Comprehensive error handling and recovery

Dependencies

  • ratatui: Modern TUI framework with rich widgets
  • crossterm: Cross-platform terminal manipulation
  • tokio: Async runtime for concurrent operations
  • serialport: Cross-platform serial port access
  • chrono: Date/time handling with timezone support
  • indicatif: Progress bars and spinners
  • textwrap: Intelligent text wrapping

Performance

  • Efficient rendering: Only redraws when necessary
  • Memory management: Automatic message buffer limits (1000 messages)
  • Low latency: Sub-16ms UI update cycles
  • Minimal CPU usage: Event-driven architecture

🤝 Contributing

Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.


Made with ❤️ for the Meshtastic community

About

Terminal based chat interface for Meshtastic devices written in Rust

Resources

Stars

Watchers

Forks