Installation

Prerequisites

  • Linux x86_64 with glibc ≥ 2.38 (Ubuntu 22.04+, Debian 12+, Fedora 36+, Arch, etc.)
  • rclone ≥ 1.66 installed — the Google Drive remote is created automatically by cdsync activate, no rclone config needed
  • GTK3 + AppIndicator3 libraries for the tray applet
  • Your personal license (license.lic)

Runtime dependencies

System dependencies that must be present before cdsync install (it offers to sudo apt install them automatically when missing):

# Ubuntu / Debian / Mint / Pop!_OS — GTK typelibs via apt, rclone from upstream:
sudo -v ; curl https://rclone.org/install.sh | sudo bash   # rclone ≥ 1.66
sudo apt install python3-gi gir1.2-gtk-3.0 gir1.2-appindicator3-0.1

# Fedora
sudo -v ; curl https://rclone.org/install.sh | sudo bash
sudo dnf install python3-gobject gtk3 libappindicator-gtk3

# Arch / Manjaro
sudo pacman -S rclone python-gobject gtk3 libappindicator-gtk3
The binary does not require Python or pip to be installed on the target machine — the Python 3.11 runtime is statically embedded by Nuitka. Only the system GObject typelibs (apt/dnf) are needed for the tray.
DependencyMin versionPurpose
rclone≥ 1.66Drive sync backend (bisync --conflict-resolve arrived in 1.66)
python3-gi (PyGObject)≥ 3.42GTK3 bindings for the tray
gir1.2-gtk-3.0≥ 3.24GTK3 typelib (runtime)
gir1.2-appindicator3-0.1≥ 12.10AppIndicator typelib (tray icon)
systemd≥ 240User units for watcher/poll service

1. Unpack and run the installer

# 1. Extract the distribution package
tar -xzf cdsync-linux-x86_64.tar.gz
cd cdsync-*/

Drop your license.lic in alongside (same folder). Then:

# 2. Run the installer (auto-detects deps, sets up systemd + tray)
./cdsync install

The installer will:

  1. Verify rclone (≥ 1.66) and the GTK3/AppIndicator libraries (offers sudo apt install if missing)
  2. Confirm rclone and the Google Drive remote (created automatically by cdsync activate)
  3. Interactive wizard asking for: rclone remote (numbered menu of detected remotes), local sync directory (with offer to create), poll interval, notification level. If a config.env already exists, you'll be asked whether to keep it, back it up & reconfigure, or start fresh
  4. Install the binaries to ~/.cdsync/bin/cdsync and ~/.cdsync/bin/cdsync-tray (gracefully stops a running tray first to avoid copy-in-place failures)
  5. Generate per-user systemd units (cdsync-watcher.service, cdsync-poll.timer)
  6. Install the tray applet autostart entry (~/.config/autostart/cdsync-tray.desktop)
  7. Detect the license (or offer to copy a license.lic from the current directory if present)
  8. Prompt to start services and launch the tray
Running cdsync install again is safe — it stops the running tray, replaces both binaries, regenerates the systemd units, and re-applies any wizard config changes. Your license.lic, OAuth tokens, and config are preserved.

2. Activate your license

# Activate with your licensed Google Drive email
cdsync activate [email protected]
  • A browser window opens (or a headless URL is printed for SSH) — log in with the exact Google account listed in your license
  • The license binds cryptographically to that email — any other account is rejected
  • The Google Drive rclone remote is created automatically (gdrive:, or gdrive-2: if taken) — you never run rclone config
  • Subsequent runs work offline for up to 30 days
cdsync activate can be run from any directory — if it detects you're invoking it outside ~/.cdsync/bin/, it will offer to self-install (copy the running binary + sibling cdsync-tray to the canonical location). Useful when you've SFTP'd the binary to a temp folder and want to activate in one step.

3. Start

cdsync start

This launches the background daemon (inotify + rclone timer) and opens the tray icon. Your local folder and Google Drive start syncing.

Systemd units (auto-generated)

~/.config/systemd/user/
├── cdsync-watcher.service     # inotify daemon (Restart=on-failure, 1h delay)
├── cdsync-poll.service        # oneshot bisync (fired by the timer)
└── cdsync-poll.timer          # fires every POLL_INTERVAL (default 5 min)

Unit names are static (no hash suffix). The previous hash-suffixed layout is automatically removed when you run cdsync install against the new ~/.cdsync/ layout.

Updating

Download the latest package, replace cdsync and cdsync-tray, then run ./cdsync install again. The installer gracefully stops a running tray before swapping binaries (no Text file busy errors). Your license.lic, OAuth tokens, and config.env are preserved across updates. There is no auto-update — manual reinstall by design.