# 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 - Chat input history (Up/Down arrow navigation) - Self-deafen toggle - Volume control (input/output gain) - Voice pitch shifting (deeper/higher) - Client certificate authentication - Auto-reconnect on network loss - Config hot-reload (F5) ## Key Bindings | Key | Action | |-----|--------| | `Tab` | Cycle focus (chat input / channel tree) | | `F1` | Toggle self-deafen | | `F2` | Cycle output volume | | `F3` | Cycle input volume | | `F4` | Push-to-talk (configurable) | | `F5` | Reload config from disk | | `F6` | Pitch down (1 semitone) | | `F7` | Pitch up (1 semitone) | | `Enter` | Send message / join channel (sidebar) | | `Up` | Previous message (input) / previous channel (sidebar) | | `Down` | Next message (input) / next channel (sidebar) | | `q` | Quit | | `Ctrl+C` | Quit | ## Quick Start ```sh make setup make run ``` ## Configuration ```sh mkdir -p ~/.config/tuimble ``` `~/.config/tuimble/config.toml`: ```toml [server] host = "mumble.example.com" port = 64738 username = "myname" # certfile = "/path/to/cert.pem" # keyfile = "/path/to/key.pem" [audio] # output_gain = 1.0 # input_gain = 1.0 # pitch = 0 # semitones, -12 to +12 [ptt] key = "f4" mode = "hold" backend = "auto" ``` ## Requirements - Python 3.11+ - libopus - portaudio (libportaudio2) - A Mumble server to connect to