mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-14 22:56:12 -04:00
105 lines
3.4 KiB
Markdown
105 lines
3.4 KiB
Markdown
# Nearby Sharing for Linux
|
|
|
|
This directory contains:
|
|
- A Linux-facing Nearby Sharing library (`NearbySharingApi`)
|
|
- A sample CLI app (`nearby_sharing_app`)
|
|
- A Qt/QML tray sample app (`qml_tray_app`)
|
|
|
|
## Scope and Intended Use
|
|
|
|
This project is primarily intended to be used as a reusable library/API.
|
|
|
|
The sample applications are still supported and will continue to be supported because they are used in real day-to-day device sharing workflows.
|
|
|
|
## Current Status
|
|
|
|
The current implementation works with the reverse-engineered certificate manager currently used in this project.
|
|
|
|
Compatibility can still break if Google changes certificate manager behavior/protocol details. That component is closed source, so upstream changes can be difficult to inspect and adapt to quickly.
|
|
|
|
## Test Coverage and Session Notes
|
|
|
|
- Verified: single-file sharing flow.
|
|
- Not fully verified: multiple transfers in one app lifetime.
|
|
- Current practical testing pattern: restart the application before each new transfer.
|
|
|
|
For this README, a "session" means one process lifetime (app start to app exit).
|
|
|
|
After one transfer, some endpoints may close and internal state can reset/change. Multi-transfer handling in one live session is still under investigation.
|
|
|
|
## Known Issues
|
|
|
|
- Linux hotspot startup can be slow.
|
|
- Connecting to a hotspot started on another device can be slow on Linux.
|
|
- Android-initiated connection formation can be very slow.
|
|
|
|
The Android/Linux connection latency issue still needs deeper investigation. One possible cause is connection/negotiation behavior that Linux does not currently handle well.
|
|
|
|
## Wi-Fi Direct Status
|
|
|
|
Wi-Fi Direct is theoretically possible but not implemented yet.
|
|
|
|
Reason: NetworkManager does not natively support creating Wi-Fi Direct Group Owners in the way this project needs.
|
|
|
|
## Installation
|
|
|
|
### 1. Install the shared library
|
|
|
|
From the repository root:
|
|
|
|
```bash
|
|
./sharing/linux/install_nearby_sharing_service.sh
|
|
```
|
|
|
|
This installs:
|
|
- `libnearby_sharing_api_shared.so`
|
|
- `sharing/linux/nearby_sharing_api.h`
|
|
|
|
### 2. Build and run the CLI sample app (optional)
|
|
|
|
From the repository root:
|
|
|
|
```bash
|
|
bazel build //sharing/linux:nearby_sharing_app
|
|
./bazel-bin/sharing/linux/nearby_sharing_app
|
|
# Optional custom device name
|
|
./bazel-bin/sharing/linux/nearby_sharing_app "MyDeviceName"
|
|
```
|
|
|
|
### 3. Build and run the tray sample app (optional)
|
|
|
|
From `sharing/linux/qml_tray_app`:
|
|
|
|
```bash
|
|
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DNEARBY_PREFIX=/usr/local
|
|
cmake --build build -j
|
|
./build/nearby_qml_file_tray_app
|
|
```
|
|
|
|
### 4. Install launcher entry (`.desktop`) for the tray app
|
|
|
|
From `sharing/linux/qml_tray_app`:
|
|
|
|
```bash
|
|
mkdir -p "$HOME/.local/share/applications"
|
|
install -m 0644 nearby-file-share.desktop "$HOME/.local/share/applications/nearby-file-share.desktop"
|
|
sed -i "s|^Exec=.*|Exec=$(pwd)/build/nearby_qml_file_tray_app|" "$HOME/.local/share/applications/nearby-file-share.desktop"
|
|
sed -i "s|^Icon=.*|Icon=$(pwd)/nearby-linux-desktop.png|" "$HOME/.local/share/applications/nearby-file-share.desktop"
|
|
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
|
|
```
|
|
|
|
After this, search for `Nearby File Share` in your desktop launcher.
|
|
|
|
## Documentation
|
|
|
|
Technical deep dives are being moved from README content to the wiki.
|
|
|
|
- Wiki: https://github.com/kidfromjupiter/nearby/wiki
|
|
|
|
This README stays focused on status, installation, and known limitations.
|
|
|
|
## Demo Assets (Planned)
|
|
|
|
- Video demo of end-to-end sharing flow.
|
|
- GIF showing the sharing process.
|