mirror of
https://github.com/logos-blockchain/logos-execution-zone-wallet-ui.git
synced 2026-05-08 05:39:24 +00:00
108 lines
3.7 KiB
Markdown
108 lines
3.7 KiB
Markdown
# logos-execution-zone-wallet-ui
|
|
|
|
A QML + C++ backend UI module for the [Logos](https://logos.co) platform that provides a graphical interface to manage execution zone wallet accounts and transfers.
|
|
|
|
Built with [`logos-module-builder`](https://github.com/logos-co/logos-module-builder) using the `mkLogosQmlModule` pattern (QML frontend + C++ backend with Qt Remote Objects).
|
|
|
|
## Features
|
|
|
|
- Create and list public/private accounts
|
|
- View account balances
|
|
- Sync to block height
|
|
- Public and private transfers (shielded, deshielded, private-owned)
|
|
- First-time onboarding (config path, storage path, password)
|
|
- Account key management
|
|
|
|
## Supported Platforms
|
|
|
|
- **Linux**: x86_64, aarch64
|
|
- **macOS**: aarch64 (Apple Silicon)
|
|
|
|
## How to Run
|
|
|
|
### Standalone (recommended for development)
|
|
|
|
```bash
|
|
# Run directly
|
|
nix run
|
|
|
|
# With local workspace overrides
|
|
nix run --override-input liblogos_execution_zone_wallet_module path:../logos-execution-zone-module \
|
|
--override-input logos-module-builder path:../logos-module-builder
|
|
```
|
|
|
|
The standalone app starts Logos Core, loads `capability_module` and `liblogos_execution_zone_wallet_module`, then launches the QML UI via an isolated `ui-host` process.
|
|
|
|
### In Basecamp
|
|
|
|
```bash
|
|
# Build LGX
|
|
nix build .#lgx
|
|
|
|
# Install into Basecamp's plugin directory
|
|
lgpm --ui-plugins-dir ~/Library/Application\ Support/Logos/LogosBasecampDev/plugins \
|
|
install --file result/*.lgx
|
|
```
|
|
|
|
Or from the workspace:
|
|
|
|
```bash
|
|
ws bundle logos-execution-zone-wallet-ui --auto-local
|
|
```
|
|
|
|
### Build Targets
|
|
|
|
```bash
|
|
nix build # default — combined plugin + QML output
|
|
nix build .#lgx # .lgx package for distribution
|
|
nix build .#install # lgpm-installed output (modules/ + plugins/)
|
|
nix run # standalone app with wallet module
|
|
nix develop # enter development shell
|
|
```
|
|
|
|
## Module Structure
|
|
|
|
```
|
|
logos-execution-zone-wallet-ui/
|
|
├── flake.nix # mkLogosQmlModule
|
|
├── metadata.json # Module config (ui_qml type)
|
|
├── CMakeLists.txt # logos_module() macro
|
|
└── src/
|
|
├── LEZWalletBackend.rep # RemoteObject interface
|
|
├── LEZWalletBackend.h/cpp # Business logic (extends LEZWalletBackendSimpleSource)
|
|
├── LEZWalletPlugin.h/cpp # Thin plugin entry point
|
|
├── LEZWalletPluginInterface.h # Plugin interface marker
|
|
├── LEZWalletAccountModel.h/cpp # QAbstractListModel for accounts
|
|
├── LEZAccountFilterModel.h/cpp # Proxy model for account filtering
|
|
└── qml/
|
|
└── ExecutionZoneWalletView.qml # QML frontend (+ sub-views)
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Config path and storage path are persisted via QSettings (`Logos`, `ExecutionZoneWalletUI`). On first run, if opening the wallet fails, the onboarding screen is shown to create a new wallet.
|
|
|
|
### QML Hot Reload
|
|
|
|
During development, set `DEV_QML_PATH` to load QML from disk without recompiling:
|
|
|
|
```bash
|
|
export DEV_QML_PATH=/path/to/logos-execution-zone-wallet-ui/src/qml
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
| Dependency | Purpose |
|
|
|---|---|
|
|
| Qt6 Core, RemoteObjects, Declarative | UI framework + IPC |
|
|
| [`logos-module-builder`](https://github.com/logos-co/logos-module-builder) | Build system (mkLogosQmlModule) |
|
|
| [`logos-execution-zone-module`](https://github.com/logos-blockchain/logos-execution-zone-module) | Wallet backend module |
|
|
|
|
## Related Repositories
|
|
|
|
| Repository | Role |
|
|
|---|---|
|
|
| [`logos-execution-zone-module`](https://github.com/logos-blockchain/logos-execution-zone-module) | Wallet backend — this UI's required dependency |
|
|
| [`logos-module-builder`](https://github.com/logos-co/logos-module-builder) | Module build system |
|
|
| [`logos-liblogos`](https://github.com/logos-co/logos-liblogos) | Logos Core platform |
|