quickly upload files to a remote server via rsync

Files
README.md

hop #

quick file upload to remote server via rsync.

requirements #

hop runs on macos and on wayland sessions with a wlroots compositor (sway, hyprland, labwc, niri).

macos wayland
screenshot screencapture (built in) grim, slurp
recording screencapture (built in) wf-recorder
clipboard built in wl-clipboard
upload rsync rsync
video conversion ffmpeg ffmpeg

captures are written to the macos screenshot location (~/Desktop by default), or on wayland to $XDG_PICTURES_DIR, falling back to ~/Pictures/Screenshots.

installation #

bun install
bun run build

# move the binary to your path
install hop /usr/local/bin/

configuration #

on first run, hop will create a config file at ~/.config/hop/config.json:

{
  "server": "user@domain.tld",
  "remotePath": "/var/www/",
  "baseUrl": "https://domain.tld"
}

edit this file with your server details.

usage #

hop - quick file upload to remote server via rsync

usage: hop [options] <file>

options:
  -h, --help                show this help message and exit
  -v, --verbose             enable verbose output
  -k, --keep-filename       keep original filename (don't hash)
  -f, --filename <name>     use custom filename
  -s, --screenshot          capture fullscreen and upload
  -sr, --screenshot-region  capture region/window and upload
  -r, --record              record screen (silent)
  -ra, --record-audio       record with microphone audio

with no file argument, hop uploads the clipboard contents.

output:

✓ uploaded file.png to https://domain.tld/hash.png

the url is also copied to your clipboard automatically.

features #

  • sha256 hash-based filenames - content-addressable storage with 7-character hashes
  • rsync upload with progress - visual spinner showing upload progress
  • detailed error messages - human-readable rsync error codes (permission denied, connection failed, etc.)
  • automatic clipboard copy - url copied to clipboard on both platforms
  • verbose mode - debug rsync issues with -v flag