Wombat is a scientific calculator for GNU/Linux using Numbat programming language. It keeps a live Numbat interpreter session in memory and shows the full output history in a scrollable log. Written in Rust, it uses GTK4+libadwaita and fully supports desktop and mobile devices running GNU/Linux.
For Android and iOS, also see Numbat-app, a cross-platform app by Numbat's creator, providing similar functionality.
- High-precision scientific calculations powered by Numbat
- Physical units and dimensional analysis, including natural unit conversions
- Persistent live interpreter session for variables, functions, and imports
- Scrollable, syntax-highlighted calculation history
- Automatic completion suggestions for variables, functions, units, and constants
- Tappable/clickable suggestions for touch and pointer workflows
- Quick operator buttons for
+,-,*,/, and^ - Quick-insert buttons for common physical constants
- Units, constants, and functions browsers with click-to-insert entries
- Custom startup definitions for your own variables, units, and functions
- Sidebar actions for syntax help, examples, reset, clear, fullscreen, and shortcuts
- Mobile-friendly responsive layout with touch-friendly controls
- Flatpak-friendly GTK/libadwaita interface for Linux desktops
See Planned features.
Available on the AUR:
yay -S wombat
Other distros (Ubuntu, Mint, Fedora, and more)
Published on the Flathub app store:
Here is how to set up Flathub on your distro so that you can install this app.
You need:
- Rust stable toolchain
- GTK 4 development files
- libadwaita development files
pkg-configgit
On Debian/Ubuntu, this is usually enough:
sudo apt install build-essential pkg-config libgtk-4-dev libadwaita-1-dev gitIf you are using GNOME Builder, install it first and let it pull the platform dependencies it needs. For Builder/Flatpak, open the Flatpak manifest and use its simple buildsystem.
Cargo can install Rust crates, but it does not install native C libraries like GTK4 and libadwaita. The Rust crates (gtk4, libadwaita) are bindings and still require the platform development packages through pkg-config.
So you have two practical options:
- Native host build (APT packages plus Cargo)
- Flatpak/Builder build (GNOME runtime provides newer GTK/libadwaita)
For Debian packaging, this repository also includes a debian/ directory that
builds against the system librust-numbat-dev crate when packaged there.
From the project directory:
cargo runIf you want a release build:
cargo run --releaseYou can test entirely from terminal in two ways.
If your host has compatible GTK/libadwaita dev packages:
cargo runIf build fails with pkg-config errors (missing gtk4.pc or graphene-gobject-1.0.pc), use Option B.
Install runtimes once:
flatpak install flathub org.gnome.Platform//50 org.gnome.Sdk//50 org.freedesktop.Sdk.Extension.rust-stable//25.08Build and install locally:
flatpak-builder --user --install --force-clean .flatpak-build io.github.archisman_panigrahi.wombat.jsonRun it:
flatpak run io.github.archisman_panigrahi.wombatIf you modify code and want a rebuild:
flatpak-builder --user --install --force-clean .flatpak-build io.github.archisman_panigrahi.wombat.json
flatpak run io.github.archisman_panigrahi.wombat- Open GNOME Builder.
- Choose Open Project.
- Select this folder.
- Open the Flatpak manifest
io.github.archisman_panigrahi.wombat.json. - Build and run from inside Builder.
The manifest uses org.gnome.Platform + org.gnome.Sdk, a Rust SDK extension, and a simple buildsystem module that runs Cargo directly. That lets Builder build against the GNOME runtime even if your host APT versions are older.
If needed, install the runtimes manually:
flatpak install flathub org.gnome.Platform//50 org.gnome.Sdk//50 org.freedesktop.Sdk.Extension.rust-stable//25.08You can also build from terminal with Flatpak tools:
flatpak-builder --user --install --force-clean .flatpak-build io.github.archisman_panigrahi.wombat.json
flatpak run io.github.archisman_panigrahi.wombatBuilder-friendly app metadata files are included in data/ and installed by the manifest.
At startup the app looks for Numbat modules in:
NUMBAT_MODULES_PATHif it is set$XDG_CONFIG_HOME/numbat/modulesor~/.config/numbat/modules/usr/share/numbat/modules- Numbat’s built-in module set
The environment variable follows Numbat’s own convention and can contain a colon-separated list of directories on Linux.
Example:
export NUMBAT_MODULES_PATH="$HOME/.config/numbat/modules:/opt/numbat/modules"
cargo run
