* mum Mumble daemon with controller (think mpd(1)/mpc(1)) written in Rust. ** Building mum is [[https://aur.archlinux.org/packages/mum-git/][available on the AUR]]. We aim to publish tagged versions to cargo, as well as binaries on Github. *** Requirements These are for Arch Linux. You might need other packages on other distributions and operating systems, or they might be named something different. - rust (stable) - alsa-lib - openssl - opus - libnotify (optional) Windows is not currently supported but could be in the future. macOS should work. Other operating systems haven't been tested. The limiting factor on Windows is IPC communication which is (currently) done via the crate ipc-channel. *** Installation 1. Build the binaries 2. (wait) 3. Copy/symlink to somewhere nice (or don't). #+BEGIN_SRC sh $ cargo build --release $ ln -s $PWD/target/release/mumctl $HOME/.local/bin/ $ ln -s $PWD/target/release/mumd $HOME/.local/bin/ #+END_SRC *** Optional features mum contains optional features that are enabled by default. To compile without them, build with --no-default-features. Features can then be enabled with --features "FEATURES". The following features can be specified: | Name | Needed for | |--------------------+---------------+ | mumd/notifications | Notifications | Awaiting -Z package-features, changing which features are compiled requires you to compile mumd/ separately by entering its directory and specifying its features. To summarize with an example, the following compiles with only the notifications-feature enabled. #+BEGIN_SRC sh $ cd mumd $ cargo build --release --no-default-features --features "notifications" $ cd ../mumctl $ cargo build --release #+END_SRC *** man-pages Man-pages for mumd, mumctl and mumdrc (the configuration file) are included as both asciidoc txt-files and already formatted groff-files. They are generated with #+BEGIN_SRC $ asciidoctor -b manpage *.txt #+END_SRC ** Usage This describes how to connect to a server and join different channels. See mumctl --help or documentation/*.txt for more information. *** mumd Start the daemon with mumd. Currently it attaches to the terminal, so if you want to run it in the background you can detach it with e.g. (zsh): #+BEGIN_SRC sh $ mumd &>/dev/null &| #+END_SRC Somewhere down the line we're aiming to have a --daemonize. *** mumctl Interfacing with the daemon is done through mumctl. Some examples: #+BEGIN_SRC 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 #+END_SRC ** Why? Mostly because it's 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 and disk footprint. We haven't found a reliable way of testing memory yet (suggestions welcome). ** Other projects - [[https://github.com/bmmcginty/barnard.git][Barnard (go)]] - TUI mumble client