feat: scaffold tuimble TUI mumble client

Core modules: TUI app (textual), mumble protocol client,
audio pipeline (sounddevice + opus), push-to-talk with
kitty protocol / evdev / toggle backends. Config via TOML.
This commit is contained in:
Username
2026-02-24 11:44:06 +01:00
commit 836018d146
22 changed files with 1040 additions and 0 deletions

12
docs/CHEATSHEET.md Normal file
View File

@@ -0,0 +1,12 @@
# Cheatsheet
```
make setup setup venv + deps
make run launch tuimble
make test run tests
make lint check code style
q quit
space push-to-talk (hold)
Enter send message
```

45
docs/DEBUG.md Normal file
View File

@@ -0,0 +1,45 @@
# Debugging
## Verbose Mode
```sh
tuimble --verbose # (planned)
```
## Common Issues
### No audio devices found
```sh
python3 -c "import sounddevice; print(sounddevice.query_devices())"
```
Check that portaudio is installed and devices are accessible.
### opuslib import error
```sh
python3 -c "import opuslib"
```
If this fails, install libopus: `apt install libopus0`
### Kitty protocol not detected
Verify terminal supports the Kitty keyboard protocol.
Known working: Kitty, WezTerm, Ghostty, foot.
### evdev permission denied
```sh
ls -la /dev/input/event*
groups # should include 'input'
```
Add user to `input` group: `sudo usermod -aG input $USER`
### Connection refused
- Verify server address and port
- Check firewall allows outbound TCP/UDP to port 64738
- Test with: `nc -zv <host> 64738`

52
docs/INSTALL.md Normal file
View File

@@ -0,0 +1,52 @@
# Installation
## Prerequisites
### System Libraries
```sh
# Debian/Ubuntu
sudo apt install libopus0 libopus-dev portaudio19-dev
# Fedora/RHEL
sudo dnf install opus opus-devel portaudio-devel
# Arch
sudo pacman -S opus portaudio
```
### Python
Python 3.11 or later required.
## Setup
```sh
git clone <repo-url> ~/git/tuimble
cd ~/git/tuimble
make setup
```
## Verify
```sh
make test
tuimble --version
```
## Optional: evdev PTT
For Linux evdev push-to-talk (physical key detection):
```sh
pip install tuimble[evdev]
sudo usermod -aG input $USER
# Log out and back in for group change
```
## Symlink
```sh
ln -sf ~/git/tuimble/.venv/bin/tuimble ~/.local/bin/tuimble
which tuimble
```

27
docs/USAGE.md Normal file
View File

@@ -0,0 +1,27 @@
# Usage
## Running
```sh
tuimble # uses ~/.config/tuimble/config.toml
tuimble --host mumble.example.com --user myname
```
## Key Bindings
| Key | Action |
|-----|--------|
| `q` | Quit |
| `space` | Push-to-talk (configurable) |
| `Enter` | Send message |
| `Ctrl+C` | Quit |
## Push-to-Talk Modes
- **hold** — hold key to transmit, release to stop (default)
- **toggle** — press to start, press again to stop
## Configuration
See `~/.config/tuimble/config.toml`. All fields are optional;
defaults connect to localhost:64738.