4.0 KiB
TeamSpeak TUI Client
A modern, fast, and lightweight TeamSpeak 3 client built in Go with a beautiful Terminal User Interface (TUI).
🚀 Features
- Low Latency Audio: Optimized for both Windows (WASAPI) and Linux (PortAudio).
- Responsive UI: Built with Bubble Tea for a smooth terminal experience.
- Cross-Platform: Full support for Windows and Linux (including WSL2).
- Audio Controls: Per-user volume and mute indicators.
🛠️ Linux Dependencies
To build the project on Linux (including Ubuntu/WSL2), you need to install the following system libraries:
sudo apt-get update
sudo apt-get install -y \
libportaudio2 \
portaudio19-dev \
libopus-dev \
libpulse-dev
🔊 WSL2 Audio Setup
WSL2 does not have direct access to your Windows audio hardware. To enable audio, we recommend using a PulseAudio network bridge:
- Install PulseAudio on Windows (e.g., via portable binaries).
- Enable TCP: Edit
default.pain PulseAudio and add:load-module module-native-protocol-tcp auth-anonymous=1 listen=0.0.0.0 - Environment Variable: Set the
PULSE_SERVERin your WSL2 shell:export PULSE_SERVER=tcp:$(grep nameserver /etc/resolv.conf | awk '{print $2}'):4713
🏗️ Building
# General build
go build -o ts-tui ./cmd/tui
# Run with debug logging (highly recommended for audio setup)
go run ./cmd/tui --server your-ip:9987 --debug
⌨️ Common Keys
q: Quit cleanly.Arrows / hjkl: Navigate channels and users.Enter: Join channel.1: Poke user (in User View).m: Mute/Unmute audio.
💻 Development with VS Code
This project uses Go build tags to support multiple platforms from the same codebase. This can sometimes cause "redeclared" errors or "undefined" symbols in VS Code if not configured correctly.
Recommended Setup
- Windows + MSYS2: If you are developing on Windows and have Opus/PortAudio installed via MSYS2, your
.vscode/settings.jsonshould include the paths to your MinGW64 environment:{ "go.toolsEnvVars": { "CGO_ENABLED": "1", "PATH": "C:\\msys64\\mingw64\\bin;${env:PATH}", "PKG_CONFIG_PATH": "C:\\msys64\\mingw64\\lib\\pkgconfig" } } - Build Tags: Do not force both tags simultaneously (e.g.,
-tags=linux,windows) as this will cause "redeclared" errors for types defined in both systems (likePlayerorCapturer). - Switching OS Analysis: If you are on Windows but want to check for errors in the Linux files, update your settings to:
"go.toolsEnvVars": { "GOOS": "linux" }
Pro Tip: VS Code Remote - WSL
For the best experience when working on Linux features from Windows, use the WSL extension. Open VS Code inside your WSL environment (code . from the WSL terminal). This allows gopls to run directly in Linux, where all system headers and libraries are natively available.
🤖 Gitea Actions (CI/CD)
El archivo .gitea/workflows/build-windows.yml automatiza la compilación en cada push.
Cómo usar tu propio Windows como Runner
Si tu Gitea no tiene runners públicos, puedes convertir tu propia máquina Windows en uno:
- Descarga
act_runner: Descarga el binario oficial de Gitea Actions Runner. - Registro:
- Ve a tu instancia de Gitea -> Administración del Sitio -> Actions -> Runners.
- Copia el Registration Token.
- Ejecuta:
./act_runner register - Introduce la URL de tu Gitea y el token.
- En labels, asegúrate de poner
windows-latest:host.
- Ejecución:
- Lanza el runner:
./act_runner daemon. - Ahora, cualquier push lanzará la build en tu PC de forma automática.
- Lanza el runner:
Tip
El workflow usa MSYS2 automáticamente para instalar
opusyportaudioen el entorno temporal de la build, así que no necesitas configurar nada extra en el sistema del runner.