Repository navigation
Building
-
Rust, stable toolchain 1.90 or newer (via
rustup), with therustfmtandclippycomponents. - Node.js 24 (the version CI uses) and npm.
- No
protocis needed: the protobuf compiler is vendored (protoc-bin-vendored).
sudo apt-get install -y --no-install-recommends \
libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev \
libxdo-dev libasound2-dev cmake patchelf xdg-utils build-essential pkg-config libssl-dev
sudo pacman -S --needed base-devel webkit2gtk-4.1 libayatana-appindicator librsvg \
xdotool alsa-lib cmake openssl pkgconf patchelf xdg-utils
Visual Studio Build Tools with the "Desktop development with C++" workload (MSVC), and the WebView2 runtime (preinstalled on Windows 11).
Xcode command line tools: xcode-select --install.
git clone https://github.com/ToBee94/mumcord.git mumcord && cd mumcord
npm ci
npm run tauri dev
npm run tauri dev starts the Vite dev server (port 1420) and the Tauri app with the Rust engine.
npm run tauri build
Bundles land in target/release/bundle/:
| OS | Output |
|---|---|
| Linux | appimage/*.AppImage |
| Windows | nsis/*-setup.exe |
| macOS |
dmg/*.dmg and macos/*.app
|
Each OS builds only its own formats. To build a single format pass -- --bundles appimage (or nsis, dmg), for example npm run tauri build -- --bundles appimage. The packages are unsigned.
A quick build without bundling, as used in CI: npm run tauri build -- --debug --no-bundle.
npm run build type-checks and builds the frontend only (tsc -b && vite build).
The UI calls the engine through generated TypeScript bindings in ui/src/bindings/commands.ts. Never edit that file by hand. It is regenerated by debug runs of the app and by cargo test -p mumcord. Set the environment variable MUMCORD_SKIP_BINDINGS_EXPORT=1 to stop a run from rewriting the tracked file (the E2E setup does this). After you change a Tauri command, run the app in debug mode or the tests and commit the regenerated file. See docs/engine-api.md for the contract.
After dependency changes, regenerate the notices with scripts/generate-notices.sh. It needs cargo-about (cargo install cargo-about --locked --features cli) and an installed node_modules. It writes THIRD_PARTY_NOTICES and ui/public/third-party-notices.txt.
Mumcord is licensed under the AGPL-3.0 (versions up to 0.1.1: MIT) · Source code · Website · Website source
Mumcord
Contributing