Files
Meshtastic-Android/main/docs/user/desktop.html
T

147 lines
5.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Desktop App</title>
<link rel="stylesheet" href="../styles/docs.css">
</head>
<body data-page="desktop" data-locale="en">
<pre class="markdown-content"># Desktop App
This page covers installing the Meshtastic desktop app, connecting a radio, and how it differs from Android. The desktop app shares its core codebase with Android via Kotlin Multiplatform, so most features work identically across Linux, macOS, and Windows.
## Installation
### Linux
- Download the `.deb` or `.AppImage` package from the [releases page](https://github.com/meshtastic/Meshtastic-Android/releases)
- Or build from source using `./gradlew :desktopApp:run`
### macOS
- Download the `.dmg` package from the [releases page](https://github.com/meshtastic/Meshtastic-Android/releases)
- Or build from source
### Windows
- Download the `.msi` installer from the [releases page](https://github.com/meshtastic/Meshtastic-Android/releases)
- Or build from source
## Connecting Your Radio
### USB Serial (Primary)
The most reliable connection method on desktop:
Connect your radio via USB. The app detects the serial port automatically; if it doesn't, select the port from the Connect menu.
### TCP/IP
For network-connected radios:
1. Enter the radio's IP address and port (default: 4403).
2. Click **Connect**.
### Bluetooth (BLE)
Bluetooth Low Energy is supported on desktop via the [Kable](https://github.com/JuulLabs/kable) library:
1. Ensure your system has a Bluetooth adapter. The app scans for nearby Meshtastic radios automatically.
2. Select your radio from the Connect screen.
## Feature Parity
Feature | Android | Desktop | Notes |
---------|---------|---------|-------|
Messaging | ✓ | ✓ | Full parity |
Node List | ✓ | ✓ | Full parity |
Map | ✓ | ✓ | Interactive MapLibre map, with base map and overlay pickers and custom tile sources. No offline downloads or local `.mbtiles` archives |
Map layers (`.kml`/`.kmz`/GeoJSON) | ✓ | ✓ | Same layer store and sheet as Android; imported files draw on the desktop map |
Site Planner | ✓ | ✓* | *Opens in your browser on desktop; the estimate is not drawn on the desktop map |
Settings | ✓ | ✓ | Full parity |
Bluetooth (BLE) | ✓ | ✓ | Via Kable on desktop |
Firmware Update | ✓ | ✓ | In-app USB, BLE, and Wi-Fi (ESP32) update all work the same as Android |
Notifications | ✓ | ✓ | Native OS notifications |
Widgets | ✓ | ✗ | Android-only |
AI Assistant (Chirpy) | ✓* | ✗ | Google flavor Android only |
App Functions (system AI) | ✓† | ✗ | Google flavor Android only |
*Chirpy AI requires Android 14+ on Google flavor builds with supported hardware.
†App Functions exposes app actions to the Android system AI on Google flavor builds. See [App Functions](app-functions).
## UI Differences
The desktop app uses the same Compose Multiplatform UI with adaptations for larger screens and desktop interaction.
### Keyboard Shortcuts
Shortcuts use **⌘** (Command) on macOS and **Ctrl** on Windows and Linux. (The Super / Windows key is not bound.)
Shortcut | Action |
----------|--------|
**⌘/Ctrl+Q** | Quit the app |
**⌘/Ctrl+,** | Open Settings |
**⌘/Ctrl+1** | Switch to Messages tab |
**⌘/Ctrl+2** | Switch to Nodes tab |
**⌘/Ctrl+3** | Switch to Map tab |
**⌘/Ctrl+4** | Switch to Connect tab |
**⌘/Ctrl+/** | Open About |
### Window &amp; System Tray
- **Window resizing** — responsive layout adapts to window dimensions
- **System tray** — minimize to system tray for background mesh operation
- **Tray menu** — right-click the tray icon to show window or quit
- **Mouse interaction** — hover states and standard desktop navigation
### Notification Preferences
The desktop app provides in-app toggles for controlling which notifications are shown — messages, new nodes, and low battery alerts. Access these from **Settings → Notifications** within the app.
## Built-in Documentation Browser
The desktop app includes a built-in documentation browser for quick access to help content without leaving the app.
![Docs browser with table of contents](../../assets/screenshots/docs-browser_toc.png)
The browser supports full-text search across all documentation:
![Searching the docs browser](../../assets/screenshots/docs-browser_search.png)
Individual doc pages render with full formatting:
![A documentation page](../../assets/screenshots/docs-browser_page.png)
## Building from Source
```bash
git clone https://github.com/meshtastic/Meshtastic-Android.git
cd Meshtastic-Android
./gradlew :desktopApp:run
```
Requirements:
- JDK 25 (Gradle can provision the toolchain itself via foojay)
- No Android SDK required for desktop-only builds
## Known Limitations
- Offline tile downloads and local `.mbtiles` archives are not available on desktop.
- `.kml`/`.kmz`/GeoJSON layer import works — see
[Map &amp; Waypoints](map-and-waypoints#map-layers). Site Planner opens in your browser
rather than in the app; to bring its coverage estimate onto the map, use the planner's
**Export GeoJSON** and add the file as a layer. Custom network tile sources work too — see
[Map &amp; Waypoints](map-and-waypoints#adding-your-own-tile-source)
- Some Android-specific features (widgets, specific notification channels) are unavailable
- Performance may vary on low-spec hardware running Compose Desktop
- BLE bonding is not yet supported on desktop (pairing works without bonding)
## Related Topics
- [Connections](connections) — connection methods overview
- [Firmware Updates](firmware) — USB, BLE, and Wi-Fi update all work the same as on Android
</pre>
</body>
</html>