Skip to content

EladBG-code/rquickshare-pi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

376 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

RQuickShare Pi logo

RQuickShare Pi

Quick Share for Raspberry Pi OS ARM64, built and tested on real Pi hardware.

Status: alpha Latest release Code quality Pi target policy License: GPL-3.0 GitHub stars Release downloads

Raspberry Pi 5 Raspberry Pi OS 64-bit Architecture: ARM64 Debian Bookworm Rust Tauri 2 Vue 3 Bluetooth mDNS

Hardware target: Raspberry Pi OS 64-bit on ARM64. Support is claimed only after local Pi build/run testing.

πŸš€ What Is This?

RQuickShare Pi is a Raspberry Pi-focused fork of RQuickShare, the open-source Nearby Share / Quick Share desktop app.

This fork exists because Raspberry Pi support needs real ARM64 testing, native Linux desktop dependencies, Bluetooth, mDNS, WebKitGTK, and patience. A GitHub Actions build on x86_64 does not prove anything here. This repo is for the real Pi target.

Current target:

  • 🧠 Device: Raspberry Pi 5
  • 🐧 OS: Raspberry Pi OS 64-bit / Debian Bookworm
  • πŸ—οΈ Architecture: aarch64
  • πŸ“¦ App stack: Tauri 2 + Vue 3 + Rust core library
  • πŸ“‘ Discovery stack: mDNS + Bluetooth advertisement

βœ… Current Pi Status

The app has been built and started on a real Raspberry Pi 5.

Verified locally on the Pi:

  • βœ… core_lib tests pass
  • βœ… core_lib builds
  • βœ… Tauri app checks
  • βœ… Debian debug bundle builds
  • βœ… App starts and reaches RunEvent::Ready
  • βœ… TCP listener starts
  • βœ… mDNS publishes a resolvable Quick Share service on the active LAN address
  • βœ… BLE listener starts
  • βœ… BLE visibility follows the app visibility state

Known rough edges:

  • ⚠️ Full Tauri targets = "all" bundling can stall on non-Debian package formats. Use the Debian bundle while Pi support is being stabilized.
  • ⚠️ Vue devtools Electron sidecar crashes on this Pi setup, so pnpm dev intentionally runs Tauri directly.
  • ⚠️ Raspberry Pi support is experimental until repeated send/receive testing is complete.

🧬 Relationship To Upstream

This project is based on the excellent upstream work by Martin ANDRE:

https://github.com/Martichou/rquickshare

The goal is for this fork to become its own Pi-first project while keeping the upstream license, credits, copyright notices, and project history intact.

Guardrails for this repo:

  • πŸ›‘οΈ origin is EladBG-code/rquickshare-pi
  • πŸ”’ upstream is fetch-only locally; pushing to upstream is disabled
  • πŸ”€ upstream changes should be reviewed and merged intentionally
  • 🧭 this fork should not be blindly overwritten by the main RQuickShare project

πŸ› οΈ Build On Raspberry Pi OS

Install the latest public ARM64 release:

curl -fsSL https://eladbg-code.github.io/rquickshare-pi/install.sh | bash

This downloads the newest Raspberry Pi ARM64 .deb from GitHub Releases and installs it with apt. A real APT repository is not published yet, so sudo apt install rquickshare-pi is not available directly.

🧱 Build From Source

Fast path:

./install-rquickshare-pi.sh

The installer checks that it is running on ARM64, installs Pi dependencies, enables Bluetooth and Avahi, installs Rust/Node/pnpm if needed, builds the project, installs the .deb, and leaves the app available from the Accessories menu.

Manual path:

Install system dependencies:

sudo apt update
sudo apt install -y \
  git \
  curl \
  build-essential \
  pkg-config \
  libssl-dev \
  protobuf-compiler \
  libprotobuf-dev \
  libdbus-1-dev \
  libgtk-3-dev \
  libayatana-appindicator3-dev \
  librsvg2-dev \
  libsoup-3.0-dev \
  libjavascriptcoregtk-4.1-dev \
  libwebkit2gtk-4.1-dev \
  bluez \
  avahi-daemon \
  avahi-utils \
  libavahi-client-dev

Enable runtime services:

sudo systemctl enable --now bluetooth
sudo systemctl enable --now avahi-daemon

Install Rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
rustup toolchain install stable
rustup toolchain install nightly
rustup default stable

Install Node.js 20 and pnpm 9.7.0:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
sudo corepack enable
corepack prepare pnpm@9.7.0 --activate

Clone and build:

git clone git@github.com:EladBG-code/rquickshare-pi.git
cd rquickshare-pi
git switch pi-arm64-support
cd core_lib
cargo test
cargo build
cd ../app/main
pnpm install --frozen-lockfile
pnpm check
pnpm tauri build -d --bundles deb

The Debian bundle is written under:

app/main/src-tauri/target/debug/bundle/deb/

▢️ Run On The Pi

For development:

cd app/main
WEBKIT_DISABLE_COMPOSITING_MODE=1 RUST_BACKTRACE=1 RUST_LOG=debug pnpm dev

For the built debug binary:

WEBKIT_DISABLE_COMPOSITING_MODE=1 RUST_BACKTRACE=1 RUST_LOG=debug \
  ./app/main/src-tauri/target/debug/rquickshare-pi

If discovery is acting strange, check the Pi services:

bluetoothctl show
rfkill list bluetooth
systemctl status bluetooth --no-pager
systemctl status avahi-daemon --no-pager
ip addr

πŸ“ Important Paths

Settings on Linux:

~/.local/share/dev.eladbg.rquickshare-pi/.settings.json

Main app:

app/main

Rust core:

core_lib

Canonical logo source:

app/main/src-tauri/icons/rquickshare-pi.svg

πŸ§ͺ Test Notes

Real support means testing on the Pi, not just compiling somewhere else.

Useful commands:

uname -m
cat /etc/os-release
rustc -Vv
cargo -V
node -v
pnpm -v
protoc --version

Expected architecture:

aarch64

More detailed build notes live in:

PI_BUILD_NOTES.md

🧯 Troubleshooting

Samsung phone cannot see the Pi

If a Samsung phone opens Quick Share and immediately drops/disconnects Wi-Fi, turn off Samsung's Apple-device compatibility mode:

Settings > Connected devices > Quick Share > Share with Apple devices > Off

Why this matters:

  • Android Quick Share discovers nearby devices with Bluetooth, then transfers over a direct local Wi-Fi connection.
  • This fork currently supports the Wi-Fi LAN / mDNS Quick Share path.
  • Samsung's Apple compatibility mode can push the phone into a different sharing path, which prevents the phone from seeing this Pi receiver.

After disabling that option, keep Bluetooth and Wi-Fi enabled, keep the phone and Pi nearby, then reopen the Android share sheet and choose Quick Share.

References:

Raspberry Pi/WebKit window corruption

The installed Debian release applies the Raspberry Pi WebKitGTK compositor workaround automatically before the Tauri webview starts. This fixes the Pi window corruption issue where the first visible frame could appear as horizontal stripes until manually resized.

If you are running from source or debugging manually, keep the environment variable in your command:

WEBKIT_DISABLE_COMPOSITING_MODE=1 pnpm dev

Need a static firewall port:

vim ~/.local/share/dev.eladbg.rquickshare-pi/.settings.json

Example:

{
  "port": 12345
}

App stays alive after closing the window:

ps aux | grep rquickshare-pi

That can be normal if the tray process is still running.

πŸ“œ License

This project keeps the upstream license:

GPL-3.0

RQuickShare Pi includes modifications by EladBG-code. Original RQuickShare copyrights, author notices, license terms, and project history remain intact.

Additional legal and trademark notices are in LEGAL_NOTICE.md.

πŸ™ Credits

RQuickShare Pi would not exist without the upstream project and the wider open source Nearby Share ecosystem:

🌱 Direction

This fork starts as Raspberry Pi compatibility work, but it is intended to grow into a Pi-first app with its own identity, release flow, and hardware-tested support story.

Star History

Star History Chart

❀️ If you feel like supporting me for more stuff like this

eladbg-Sharable-Profile)-Horizontal copy