A native Qt 6 calculator built for Fluff Linux
Basic mode provides a familiar keypad for everyday arithmetic, percentages, parentheses, keyboard input, history, undo, and redo.
Advanced mode adds powers, roots, factorials, logarithms, trigonometric functions, rounding functions, constants, complex numbers, and degree, radian, or gradian angle units.
Expressions support convenient notation such as 2pi, 2(3+4), √9, ∛8, ⁵√32, and root(5,32).
Financial mode includes compound term, depreciation, future value, present value, payment, rate, margin, and term calculations.
Programming mode includes:
- Hexadecimal, decimal, octal, and binary input with live previews
- Signed word sizes from 8 bits through 4096 bits
- Boolean operations, shifts, rotations, byte swapping, and integer functions
- A clickable bit field with rows of eight bits
- A programmer keypad with hexadecimal digits
- A side history panel
- Remembered keypad or bit field selection
Conversion mode supports length, mass, area, volume, temperature, time, speed, data size, and angle units.
- Arbitrary precision real, integer, and complex calculations using Rug, GMP, MPFR, and MPC
- At least 1024 bits of internal precision
- Automatic, fixed, scientific, and engineering output formats
- Up to 100 decimal places
- Optional digit grouping
- Calculator style percentages such as
100-50% = 50 - Implicit multiplication
- Typed expressions and pasted Unicode multiplication or division symbols
- High precision complex roots, powers, logarithms, and trigonometric functions
- Per mode window size and maximized state memory
- Theme aware Qt Quick Controls interface
The project requires Rust, CMake, Ninja, a C++ compiler, Qt 6 Base, Qt 6 Declarative, Qt 6 Wayland, GMP, MPFR, and MPC.
On Arch Linux or Fluff Linux, install the build dependencies with:
sudo pacman -S --needed base-devel rust cmake ninja qt6-base qt6-declarative qt6-wayland gmp mpfr libmpcBuild the release binary:
cargo build --release --lockedRun it directly:
./target/release/flufflinux-calculatorRun the Rust test suite:
cargo test --lockedRun the QML interface tests:
QT_QPA_PLATFORM=offscreen /usr/lib/qt6/bin/qmltestrunner -input tests/qml -import qmlValidate every translation catalog and desktop entry locale:
make check-translationsBuild the release binary and create a ready to package filesystem tree:
make fakerootThe generated tree contains the executable, desktop entry, application icon, AppStream metadata, licenses, and compiled language catalogs under their final /usr paths.
Run the staged application without installing it:
./fakeroot/usr/bin/flufflinux-calculatorCreate a pacman package archive:
bsdtar --zstd -cf flufflinux-calculator-2026.09-3-x86_64.pkg.tar.zst -C fakeroot .PKGINFO usrPackage build systems can install into their own staging directory:
make build
make DESTDIR="$pkgdir" installTranslation sources are stored in translations. Qt Linguist can be used to edit an existing .ts catalog.
linguist translations/flufflinux-calculator_de.tsAfter changing visible QML text or adding a language, update the catalogs:
make update-translationsCompile and validate them:
make translations
make check-translationsTest a specific language locally:
LANGUAGE=de ./target/release/flufflinux-calculatorSee TRANSLATING.md for the complete editing, testing, and new language workflow.
Preferences and window state are stored in $XDG_CONFIG_HOME/flufflinux-calculator.conf, or ~/.config/flufflinux-calculator.conf when XDG_CONFIG_HOME is not set.
Fluff Linux Calculator is distributed under the GNU General Public License v3.0 or later. See LICENSE.