mumlib 0.5.1

Exposed parts of mum.
Documentation
# mum

Mumble daemon with controller (think `mpd(1)`/`mpc(1)`) written in Rust.

## Building

mum is currently only tested on Linux. Windows is planned to use a REPL. macOS
should work as-is.

Requirements (package names are for Arch Linux):

- rust (stable, current minimum version is 1.56)
- alsa-lib
- openssl
- opus
- libnotify (optional, needed in default configuration)

Build and install the latest published version:

```sh
$ cargo install mum-cli
```

You can also build and install from source, for example with

```
$ cargo install --git https://github.com/mum-rs/mum.git
```

or using the [AUR package](https://aur.archlinux.org/packages/mum-git/).

### Optional features

mum contains optional features that are enabled by default. To compile without
them, build with --no-default-features. Features can then be re-enabled separately with
--features "FEATURES".

The following features can be specified:

| Name              | Needed for        |
| ----------------- | ----------------- |
| mum/notifications | Notifications     |
| mum/ogg           | ogg sound effects |

### Manpages

Manpages are included as both asciidoc
txt-files and already formatted groff-files. They are generated by

```sh
$ asciidoctor -b manpage mumctl.txt
$ asciidoctor -b manpage mumd.txt
$ asciidoctor -b manpage mumdrc.txt
```

## Basic Usage

This describes how to connect to a server and join different channels.
See `$ mumctl --help` or the manpages for more information.

### mumd

Start the daemon by running `mumd`. It attaches to the terminal, so if you want
to run it in the background you can detach it from the shell. You could also run
it through e.g. systemd.

### mumctl

Interfacing with the daemon is done through mumctl. Some examples:

```sh
$ mumctl connect 127.0.0.1 spock # connect to 127.0.0.1 with username 'spock'
$ mumctl channel list
ServerRoot
  -user1
  -user2
  -user2
  Channel2
  Channel3
$ mumctl channel connect Channel2
```

## Why?

Mostly because it was a fun way of learning a new language. Also:

- Most Mumble clients use a GUI. While GUIs aren't necessarily bad, there
  should at least exist alternatives where possible.
- Memory, disk and CPU usage. We haven't found a reliable way of testing this
  yet (suggestions welcome).

## Other projects

- [Barnard (go)]https://github.com/bmmcginty/barnard.git - TUI