Skip to content

Latest commit

 

History

History
89 lines (58 loc) · 2.83 KB

File metadata and controls

89 lines (58 loc) · 2.83 KB

Ledger Wallet Desktop

Ledger Wallet Desktop (LWD) is the Electron app for Ledger hardware wallets on macOS, Windows, and Linux. Users can manage crypto assets, install apps on Ledger devices, update firmware, verify public addresses, and sign transactions.

Verified

Releases are signed, and the updater verifies signatures before applying a new version. Hash/signature verification details are available on live.ledger.tools/lld-signatures.

Architecture

The app is built with Electron, React, Redux, and RxJS. It uses shared Ledger Wallet logic to communicate with devices, synchronize accounts, and prepare transactions.

Main source areas:

Path Purpose
src/main Electron main process
src/renderer React UI, screens, modals, bridges, analytics, i18n, and renderer setup
src/renderer/families Per coin modules family UI logic

Details of related apps and code sharing are in the root level readme.

Prerequisite

Run all commands from repository root:

mise install
pnpm install

USB/HID native dependencies for Linux:

sudo apt-get update
sudo apt-get install libudev-dev libusb-1.0-0-dev

Development

After pulling latest changes:

pnpm install
pnpm build:lld

Run the app:

pnpm dev:lld        # Run the dev build
pnpm dev:lld:msw    # Run the dev build with Mock Service Workers enabled

Testing

Within LWD, use the following commands for TDD and validatiion checks:

pnpm nx run ledger-live-desktop:test:jest --with-deps    # unit tests
pnpm desktop lint                                        # lint check
pnpm desktop lint:guardrails                             # security focused lint check
pnpm desktop typecheck                                   # typecheck

E2E Testing

See e2e/destkop/README.md for End-to-End testing details.

Environment variables

Environment variables are defined in envDefinitions within libs/env/src/env.ts.

To force a particular value, passed it in from the CLI when starting the app,

e.g.

ANALYTICS_CONSOLE=TRUE pnpm dev:lld

Translations and localisation

Translations are handled internally at Ledger. If a translation string is broken, report it to Ledger support rather than editing localized content directly.