Jose Luis Montañes Ojados 81d73e9b08
All checks were successful
Build Linux / build-linux (push) Successful in 57s
Build Windows / build-windows (push) Successful in 2m19s
ci: disable go cache to prevent hangs on self-hosted runner
2026-01-17 02:40:11 +01:00
2026-01-15 17:14:39 +01:00

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:

  1. Install PulseAudio on Windows (e.g., via portable binaries).
  2. Enable TCP: Edit default.pa in PulseAudio and add: load-module module-native-protocol-tcp auth-anonymous=1 listen=0.0.0.0
  3. Environment Variable: Set the PULSE_SERVER in 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.

  1. Windows + MSYS2: If you are developing on Windows and have Opus/PortAudio installed via MSYS2, your .vscode/settings.json should 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"
        }
    }
    
  2. 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 (like Player or Capturer).
  3. 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:

  1. Descarga act_runner: Descarga el binario oficial de Gitea Actions Runner.
  2. 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.
  3. Ejecución:
    • Lanza el runner: ./act_runner daemon.
    • Ahora, cualquier push lanzará la build en tu PC de forma automática.

Tip

El workflow usa MSYS2 automáticamente para instalar opus y portaudio en el entorno temporal de la build, así que no necesitas configurar nada extra en el sistema del runner.

Description
No description provided
Readme 22 MiB
v1.2.0 Latest
2026-01-17 20:55:14 +01:00
Languages
Go 99%
PowerShell 0.9%
Dockerfile 0.1%