Skip to content

LanSync v1.4.0 — new Fyne Destktop GUI and Qt Client

Choose a tag to compare

@tuxnode tuxnode released this 17 May 12:59
· 4 commits to main since this release

LanSync

A lightweight LAN file synchronization tool written in Go, featuring a headless daemon with HTTP API, a cross-platform Fyne desktop GUI, and an optional Qt desktop client.

Features

  • Dual-mode architecture — Headless CLI daemon with HTTP management API, or full-featured Fyne desktop GUI with embedded daemon
  • TCP peer-to-peer sync — Direct file transfer between LAN nodes
  • SHA-256 integrity verification — Ensures file consistency across nodes
  • Real-time file watching — Uses inotify/kqueue for instant change detection
  • Automatic LAN discovery — mDNS-based peer discovery with network interface selection for multi-homed hosts
  • Manual peer connections — Connect to specific addresses as needed
  • Cross-platform — macOS, Linux, Windows (including mDNS multicast on Windows)
  • Full file index sync — Sends complete file index on initial connection, incremental updates thereafter

Components

Component Path Description
CLI Daemon cmd/lansync/ Headless daemon with HTTP management API
Fyne GUI cmd/lansync-gui/ Cross-platform desktop GUI (Go/Fyne), embeds the daemon natively
Qt Client clients/qt-lansync/ Qt Widgets desktop client implementing the full sync protocol

Usage (CLI)

lansync daemon   [--dir PATH] [--port PORT] [--peer ADDR]  Start daemon
lansync connect  <address:port>                             Connect to a peer
lansync status   [--http PORT]                              Show daemon status
lansync peers    [--http PORT]                              List connected peers
lansync log      [--http PORT]                              View event log

Fyne Desktop GUI

The Fyne GUI (cmd/lansync-gui/) provides a three-tab interface:

  • Status — Daemon state, local ID, watch directory, port, uptime, peer counts
  • Peers — Discovered and connected nodes with live status indicators
  • Log — Real-time event log with sync activity

Configuration options include watch directory, TCP port, network interface (for mDNS), and initial peer addresses. An auto-refresh loop keeps all views current.

go build -o lansync-gui ./cmd/lansync-gui/

Build

git clone https://github.com/tuxnode/LanSync.git
cd LanSync && go build ./cmd/...

Cross-Platform Build

# macOS / Linux
go build -o lansync ./cmd/lansync/

# Windows (cross-compile from macOS/Linux)
GOOS=windows GOARCH=amd64 go build -o lansync.exe ./cmd/lansync/

# Fyne GUI (requires X11 development headers on Linux)
sudo apt install libxxf86vm-dev libxrandr-dev libxi-dev libxcursor-dev libxinerama-dev
go build -o lansync-gui ./cmd/lansync-gui/

Qt Desktop Client

A Qt Widgets desktop client is available under clients/qt-lansync. It implements the same JSON SyncMessage protocol as the Go daemon and supports TCP sync, SHA-256 file indexing, file watching, manual peer connection, and LAN discovery.

Build with Qt 6 or Qt 5.15:

cmake -S clients/qt-lansync -B clients/qt-lansync/build
cmake --build clients/qt-lansync/build