Build from source
Toolchain
- Stable Rust 1.95 or newer, installed with rustup. The minimum is the
rust-versionin the rootCargo.toml. It is what egui 0.36 needs. CI builds with the stable channel. - Edition 2024.
- You don't need Node, a web or WebAssembly target, or a font download. The only embedded font is Poppins, plus egui's default fonts.
Build and run
- Clone the repo and build:
git clone https://github.com/zuramai/postguy.git cd postguy cargo build --release -p postguy -p postguy-cli - Find the binaries:
target/release/postguy: the desktop app.target/release/postguy-cli: the headless CLI.- On Windows they end in
.exe.
To run the app from the source tree with a workspace of your choice:
cargo run -p postguy -- --workspace ~/postguy-workspace
For day-to-day work, cargo build -p postguy and cargo build -p postguy-cli build the debug versions.
Prerequisites per OS
You need the window system and graphics libraries to build. CI installs these Debian/Ubuntu packages:
sudo apt-get install -y --no-install-recommends \
libxkbcommon-dev libwayland-dev libx11-dev libxrandr-dev libxi-dev \
libgl1-mesa-dev
CI also installs libgtk-3-dev, but it is optional. File dialogs use xdg-desktop-portal, not GTK, so you don't need GTK to build or run Postguy.
At run time, Postguy loads X11 or Wayland, xkbcommon and EGL/GL dynamically. xdg-desktop-portal provides the file dialogs.
On other distributions, install the equivalent development packages for xkbcommon, Wayland, X11 (including Xrandr and Xi) and Mesa GL.
Install the Xcode Command Line Tools:
xcode-select --install
- The release build targets macOS 11.0 or newer.
- Only macOS uses a native menu bar.
Install the MSVC build tools: Visual Studio Build Tools with the "Desktop development with C++" workload.
Supported targets:
x86_64-pc-windows-msvci686-pc-windows-msvcaarch64-pc-windows-msvc
The 32-bit (x86) target also needs libclang. The script engine (rquickjs) has no pre-generated bindings for it, so bindgen generates them (crates/script/Cargo.toml). Install LLVM. If the build can't find it, set LIBCLANG_PATH to its bin folder.
FreeBSD is built from source only. The repository doesn't name FreeBSD packages, so treat this as guidance. It is community-tested. Open an issue if a package name differs.
sudo pkg install rust llvm
llvmprovides libclang. The script engine has no pre-generated bindings on FreeBSD, sobindgengenerates them (crates/script/Cargo.toml). If the build can't find libclang, setLIBCLANG_PATH.- Install the X11, Wayland, Mesa and xkbcommon libraries and development headers for your desktop. It is the same set as on Linux.
- If the
rustpackage is older than 1.95, install the toolchain with rustup instead. - File dialogs use
xdg-desktop-portal, as on Linux.
Everything else
cargo xtask ciruns the quality gates: format, Clippy with warnings denied, tests, then the layer, asset, parity anddeny(licence) checks. See Development.- The packaging scripts (AppImage, deb, rpm, MSI, dmg, Flatpak) are in Releasing.
- The crate layout is in Architecture.