pktito
Developers: Building from source

Building from source

Build the pktito app and pktito-cli from source on macOS, Windows and Linux.

The app’s source is github.com/peterheb/pktito. It carries a copy of the C library in vendor/pktito, so one clone builds everything.

What you need

  • Rust, and the Tauri CLI:

    cargo install tauri-cli --version "^2" --locked
    
  • A C compiler:

    • macOS: Xcode’s command line tools.
    • Windows: MSYS2’s MinGW-w64 gcc, with Rust’s x86_64-pc-windows-gnu toolchain.
    • Linux: gcc or clang.

macOS and Windows x64

cargo tauri dev             # run it
cargo tauri build           # the installer

pktito-cli is built with the app and bundled beside it.

Windows on Arm

Windows on Arm builds on x64 Windows, cross-compiled. You need rustup’s stable-x86_64-pc-windows-gnullvm toolchain with the aarch64-pc-windows-gnullvm target, and llvm-mingw’s bin folder on the PATH. Its clang compiles and links, and everything is linked statically.

cargo +stable-x86_64-pc-windows-gnullvm build --release --target aarch64-pc-windows-gnullvm

The program needs only Windows’ own DLLs and the Arm64 WebView2Loader.dll beside it. The installer has to name that DLL as a resource, since tauri-bundler 2.10.4 adds it only for targets ending in -gnu; without it, the installed app doesn’t start:

cargo tauri build --target aarch64-pc-windows-gnullvm --bundles nsis --config \
  '{"bundle":{"resources":{"target/aarch64-pc-windows-gnullvm/release/WebView2Loader.dll":"WebView2Loader.dll"}}}'

Linux

cargo tauri build --bundles deb   # the .deb

The .deb depends on ffmpeg and recommends xdg-utils, for opening links and folders.

Formatting

The Rust follows rustfmt and the page’s JavaScript, CSS, HTML and JSON follow Prettier, each with its defaults. Before a commit:

(cd src-tauri && cargo fmt)
npx prettier@3.6.2 --write .

cargo fmt --check and npx prettier@3.6.2 --check . say whether either is due. .prettierignore leaves out files that scripts write and the design system’s own files.

The C library

scripts/vendor-pktito.sh copies the library’s sources into vendor/pktito, and vendor/pktito/VENDORED names the commit. To build the library on its own, see The C library.