mpmux by Mighty Painting
~/mpmux/docs ❯ less install-arch/contents ↓

Install mpmux from the Arch repository#

This page is for Arch Linux on x86_64. It covers the signed pacman repository, the manual package install, and removal.

The repository publishes mpmux, mpmux-cli, and mpmux-sessiond in one package. The current published release is mpmux 0.1.1-1.

What you get#

The package installs these files:

  • /usr/bin/mpmux — the desktop multiplexer
  • /usr/bin/mpmux-cli — host-control command line
  • /usr/bin/mpmux-sessiond — the session daemon
  • /usr/lib/systemd/user/mpmux-sessiond.service — user service
  • /usr/share/applications/dev.mightypainting.mpmux.desktop
  • /usr/share/metainfo/dev.mightypainting.mpmux.appdata.xml
  • /usr/share/icons/hicolor/ icons
  • /usr/share/doc/mpmux/ documentation

Runtime dependencies: gcc-libs, libxkbcommon, wayland, libx11.

1. Add the signing key#

pacman must trust the key that signs the repository. Download the public key, add it to the pacman keyring, and mark it as trusted:

curl -fsSL https://mightypainting.dev/mpmux/mpmux-release.asc | \
  sudo tee /etc/pacman.d/gnupg/mpmux-release.asc >/dev/null
sudo pacman-key --add /etc/pacman.d/gnupg/mpmux-release.asc
sudo pacman-key --lsign-key 7141921A91D28916712395C61DB628AEBFFE7E63

The key id is 7141921A91D28916712395C61DB628AEBFFE7E63 (Lutz Paelike <lutz@delutze.de>), the key in mpmux-release.asc. Make sure that pacman-key --list-keys shows that fingerprint before you install.

Earlier versions of this page named CD117C3779D6EF8D876219CA9DFA43B771A4103C, which is not in mpmux-release.asc and does not sign the Arch repository, so pacman-key --lsign-key failed for it. The Debian/Ubuntu repository uses that key.

2. Add the repository entry#

Put these lines at the end of /etc/pacman.conf:

[mpmux]
Server = https://mightypainting.dev/mpmux/arch/$arch
SigLevel = Required TrustedOnly

Required TrustedOnly makes pacman check the database signature and the signature of each package. Do not set TrustAll. TrustAll disables the signature check.

3. Install#

sudo pacman -Syu mpmux

Start the session daemon when you want detachable sessions:

systemctl --user daemon-reload
systemctl --user enable --now mpmux-sessiond.service

The packaged service is local-only. It listens on $XDG_RUNTIME_DIR/mpmux-sessiond.sock. It does not enable TCP, Iroh, auth, or Android pairing.

4. Make sure that the install works#

which mpmux mpmux-cli mpmux-sessiond
mpmux-sessiond ping
mpmux

mpmux-sessiond ping prints ok when the daemon answers on the user socket.

Manual install without a repository entry#

Download the package file and install it directly:

curl -fsSL -O https://mightypainting.dev/mpmux/arch/x86_64/mpmux-0.1.1-1-x86_64.pkg.tar.zst
curl -fsSL -O https://mightypainting.dev/mpmux/arch/x86_64/mpmux-0.1.1-1-x86_64.pkg.tar.zst.sig
sudo pacman -U mpmux-0.1.1-1-x86_64.pkg.tar.zst

Make sure that the signature matches the published key before you install:

curl -fsSL https://mightypainting.dev/mpmux/mpmux-release.asc | gpg --import
gpg --verify mpmux-0.1.1-1-x86_64.pkg.tar.zst.sig mpmux-0.1.1-1-x86_64.pkg.tar.zst

gpg must report a good signature from that key id. A warning about missing key trust is normal. An error means you must not install the file.

Update#

sudo pacman -Syu mpmux
systemctl --user restart mpmux-sessiond.service

A daemon restart interrupts hosted sessions. Schedule it when an interruption is permitted. Installers never overwrite the auth store or endpoint keys under ~/.config/mpmux.

Remove#

sudo pacman -Rns mpmux

pacman -Rns removes the package, its dependencies that nothing else needs, and its configuration files. It does not delete ~/.config/mpmux, auth stores, keys, or terminal history.

Remove the [mpmux] block from /etc/pacman.conf when you do not want the repository any more.

Problems#

signature from "..." is not trusted — the key is not in the pacman keyring, or you did not run pacman-key --lsign-key. Repeat step 1.

repository 'mpmux' does not contain a package — make sure that the Server line ends in /arch/$arch, then run sudo pacman -Sy.

No such file or directory for arch/aarch64 — the aarch64 repository is not published. Only x86_64 exists today. Build the package on an aarch64 host with just arch-package, see docs/PACKAGING.md.

mpmux-sessiond ping prints no ok — start the service with systemctl --user start mpmux-sessiond.service, then read journalctl --user -u mpmux-sessiond.service -n 50.

  • docs/PACKAGING.md — how to build and publish the package and repository
  • docs/INSTALLATION.md — the Linux tarball bundle and the Android APK
  • docs/QUICKSTART.md — first session, pairing, tablet use
  • docs/TROUBLESHOOTING.md — deeper daemon and network problems