# 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:
| 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