Schon lange gibt es Mumble-Clienten für Windows, Mac OS, Linux, iOS, BSD und seit einiger Zeit auch für Android, siehe hier.

Doch seit gestern gibt es zusätzlich einen Open Source Clienten für Mumble für die Konsole; geschrieben in der Programmiersprache Go.

Er steht unter der Lizenz MIT und wurde programmiert von „Tim Cooper„.

Dass es einen solchen Clienten geben wird, hat der Entwickler vor ein paar Tagen bereits im IRC (#mumble) angekündigt. Gestern folgten dann die Links zu den entsprechenden Github-Repos; hier das Repo für barnard selbst und hier der zugrunde liegende Client gumble.

Selbst kompilieren

Habe noch nie mit Go zu tun gehabt, wenn es also einen besseren Weg gibt, dann bitte melden :)

Zunächst installiert man sich Go, Git und mercurial, in ArchLinux z. B. mit:

pacman -Sy go git mercurial openal

Dann erstellt man irgendwo ein Verzeichnis (hier im Beispiel in /home/user/) mit dem Namen go-apps, wechselt dort hinein und ruft folgende Befehle auf:

mkdir -p /home/user/go-apps/src
cd /home/user/go-apps/src
export GOPATH=/home/user/go-apps
git clone https://github.com/layeh/barnard.git
cd barnard
go get

Jetzt kann man die Anwendung testweise aufrufen mit der Zeile:

go run cmd/barnard/main.go

Dabei versucht barnard per Voreinstellung, einen Mumble-Server auf localhost und dem Standardport 64738 zu erreichen, was vermutlich bei fast niemandem funktionieren wird.

Es wird kein Benutzer-Zertifikat für den Clienten erzeugt, deshalb werden wir später unser eigenes Zertifikat exportieren und in barnard nutzen, siehe weiter unten.

Soundsysteme

Für die Audiounterstützung verwendet Barnard nur das Soundsystem OpenAL.

Damit ich auf meinem System, wie auch für den normalen Mumble-Clienten, das gute Jack verwenden kann, wird zusätzlich Pulseaudio auf meinem System installiert und in der Datei /etc/pulseaudio/default.pa werden am Ende die folgenden beiden Zeilen eingetragen:

load-module module-jack-sink
load-module module-jack-source

Nach einem Neustart von PulseAudio greift sich dieses nicht mehr eine Soundkarte sondern setzt sich auf einen laufenden Jack-Server drauf.

Und da OpenAL per Voreinstellung ein vorhandenes PulseAudio nutzt, habe ich letztlich – mit Umwegen – einen Mumble-Clienten für die Konsole, der Jack nutzt :)

Wer kein Jack einsetzt, dafür aber nur PulseAudio, bei dem sollte der Sound direkt funktionieren.

Hier ein Screenshot von patchage und pavucontrol (main ist die Go-Anwendung barnard):
mumble_console_client_barnard_sound-setup

Barnard erkennen

In den Benutzerinformationen erscheint der Client als „Versionsnummer (gumble)“.

Zertifikat verwenden

Ein bestehendes Zertifikat im Format .p12, welches man aus Mumble exportieren kann, konvertiert man mit folgender Zeile bei installiertem OpenSSL um:

openssl pkcs12 -in zertifikat.p12 -out zertifikat.pem -nodes

Bei der Passwortabfrage drückt man einfach Enter, wenn das Zertifikat nicht durch ein solches geschützt ist.

Danach kann man barnard starten mit z. B.:

go run cmd/barnard/main.go -server=“mumble.natenom.com:64738″ -username=“barnard-tester“ -insecure=true -certificate=/home/user/pfad-zum-zertifikat.pem

Nun erhält man folgende Ansicht unseres Mumble-Servers:
Der CLI Client für Mumble auf Linux, verbunden mit unserem Mumble-Server

Speicherverbrauch des Clienten: Ca. 10 MiB.

Bedienung

Es gibt die folgenden Tastenkombinationen:

  • F1 – Schaltet das Senden ein und aus; rechts oben im kleinen Kasten sieht man den Sendestatus; entweder steht hier „Idle“ oder „Tx“ für Senden.
  • F10 – Beendet das Programm.
  • Tab – Schaltet um zwischen dem Chatfenster und dem Kanalbaum, in dem auch Benutzer angezeigt werden. Hier kann man den Kanal wechseln.
  • Mit Bild-Hoch/-Runter, Home und End scrollt man im Nachrichtenverlauf hin und her.

Bots gefällig?

Aber das ist noch nicht alles …, denn der Client namens gumble, den barnard letztlich verwendet, kann mehr. So gibt es im Verzeichnis „examples“ mehrere Beispiele.

Die kann man genau wie barnard aufrufen, mit denselben Parametern, z. B. den Musikbot mit:

go run /home/user/go-apps/src/github.com/layeh/gumble/examples/audio-player.go -server=“mumble.natenom.com:64738″ -username=“barnard-musicbot“ -insecure=true /pfad/zu/einer/Musikdatei.ogg

Wenn man jetzt an den Benutzer „barnard-musicbot“ den Text „Musikdatei.ogg“ ohne die Anführungsstriche schickt, so wird das Musikstück abgespielt.

\o/

Cool :)

Ich sehs schon kommen, da wird es ähnlich coole Dinge geben wie bei Mumble-Ruby.

Eine Todo-Liste für das Projekt gibt es hier.