Peya Wallet (Flutter desktop MVP)
Requirements
- Flutter stable (Linux desktop enabled)
monero_csubmodule for the Dart package in./monero_c- Runtime binaries can come either from:
- local
monero_cbuilds, or - staged release assets in
./third_party/monero_cand./external/daemon
- local
Run
flutter pub get
flutter run -d linux
The Flutter tool generates linux/flutter/ephemeral and plugin registrant files during the first build.
If your Flutter toolchain prefers a fresh runner scaffold, run:
flutter create --platforms=linux .
Wallet backend (FFI)
The app loads a native library at runtime:
- Default name:
libwallet2_api_c.so(also trieslibpeya_libwallet2_api_c.so,peya_libwallet2_api_c.so) - Search paths (Linux):
./lib,./third_party/monero_c/linux,monero_c/peya_libwallet2_api_c/build/x86_64-linux-gnu,monero_c/peya_libwallet2_api_c/build,monero_c,native/build,native
Override the path:
PEYA_LIBWALLET=/absolute/path/to/libwallet2_api_c.so flutter run -d linux
Native wrapper (optional)
A C-ABI wrapper stub is provided in native/:
native/include/wallet_wrapper.hnative/src/wallet_wrapper.cnative/CMakeLists.txt
Build it (Linux):
cmake -S native -B native/build
cmake --build native/build
Update wallet_wrapper.c to call the Peya/Monero C/C++ APIs from monero_c and link them in native/CMakeLists.txt.
CI runtime staging
The wallet build workflow now stages runtime dependencies from releases:
tiamak/monero_crelease assets forlibwallet2_api_ctiamak/Peyarelease assets forpeyad
The staging script writes them to:
third_party/monero_c/linuxorthird_party/monero_c/windowsexternal/daemon
Tray + background sync
- Enable Minimize to tray in Settings.
- Closing the window hides the app instead of quitting.
- Tray menu: Show/Hide, Sync now, Quit.
Notes:
- Some Linux window managers may not allow full close interception; in that case the app may quit on close.
Auto-sync
Configure in Settings:
- Auto sync toggle
- Interval: 30s / 1m / 5m / 15m
Sync runs in background and skips overlapping ticks.
Config storage
Config is saved to config.json under the application support directory:
- Linux:
~/.local/share/salvium_wallet/config.json
Optional explorer integration:
- set
PEYA_EXPLORER_TX_URLto a tx URL template, for examplehttps://example.invalid/tx/{txid} - when unset, clicking a txid copies it instead of opening an external explorer
Translations (i18n)
ARB files:
lib/l10n/app_en.arblib/l10n/app_pl.arb
Add a new language by creating another ARB and rebuilding.
FFI bindings (ffigen)
Bindings are seeded in lib/native/wallet_wrapper_bindings.dart.
To regenerate from native/include/wallet_wrapper.h:
dart run ffigen