Username 5fecebaa12 client: replace async wrapper with thread-safe dispatcher
Convert connect/disconnect to blocking calls (pymumble is synchronous).
Remove asyncio loop coupling. Add set_dispatcher() for marshalling
callbacks into the host event loop. Register all pymumble callbacks:
connected, disconnected, user/channel CRUD, text message, sound.
2026-02-24 12:00:59 +01:00

tuimble

TUI Mumble client with voice support and push-to-talk.

Features

  • Terminal-based UI (Textual)
  • Voice transmission with Opus codec
  • Push-to-talk via Kitty keyboard protocol, evdev, or toggle
  • Channel browsing and text chat

Quick Start

make setup
make run

Configuration

mkdir -p ~/.config/tuimble

~/.config/tuimble/config.toml:

[server]
host = "mumble.example.com"
port = 64738
username = "myname"

[ptt]
key = "space"
mode = "hold"
backend = "auto"

Requirements

  • Python 3.11+
  • libopus
  • portaudio (libportaudio2)
  • A Mumble server to connect to
Description
No description provided
Readme 236 KiB
Languages
Python 99.6%
Makefile 0.4%