A clipboard for those who use consoles/ssh/tmux
The project requires the following dependencies:
- mbedTLS (libmbedtls-dev / mbedtls-devel)
- protobuf-c (libprotobuf-c-dev / protobuf-c-devel)
- Meson build system
- Ninja build tool
Debian/Ubuntu:
sudo apt-get install libmbedtls-dev libprotobuf-c-dev meson ninja-buildFedora/RHEL/CentOS:
sudo dnf install mbedtls-devel protobuf-c-devel meson ninja-buildArch Linux:
sudo pacman -S mbedtls protobuf-c meson ninjaopenSUSE:
sudo zypper install mbedtls-devel protobuf-c-devel meson ninjamacOS (via Homebrew):
brew install mbedtls protobuf-c meson ninjameson setup builddir
ninja -C builddirTo build fully static binaries with all dependencies statically linked:
meson setup builddir -Dstatic=true
ninja -C builddirAdditional dependencies required for static builds:
When system static libraries are not available, the build system will automatically fetch and build mbedTLS and libprotobuf-c from source. This requires:
- cmake - for building mbedTLS subproject
- autoconf, automake, libtool - for building libprotobuf-c subproject
- git - for fetching subprojects
Installing build tools:
Debian/Ubuntu:
sudo apt-get install cmake autoconf automake libtool gitFedora/RHEL/CentOS:
sudo dnf install cmake autoconf automake libtool gitArch Linux:
sudo pacman -S cmake autoconf automake libtool gitopenSUSE:
sudo zypper install cmake autoconf automake libtool gitmacOS (via Homebrew):
brew install cmake autoconf automake libtool gitNote: Static builds are useful for creating portable binaries that can run on systems without the required runtime libraries installed.
For easy setup of both the local client and remote server:
# Dynamic build (requires compatible mbedTLS/protobuf-c on both hosts)
meson setup .build
ninja -C .build
./scripts/setup.sh <remote-hostname>
# OR: Static build (portable, works across different distributions)
meson setup .build -Dstatic=true --force-fallback-for=mbedtls,libprotobuf-c
ninja -C .build
./scripts/setup.sh <remote-hostname>This script will:
- Generate TLS certificates if they don't exist
- Install the client binary to
~/.local/bin/locally - Copy certificates and binaries to the remote host
- Set up a systemd user service on the remote host
- Configure SSH with LocalForward and ControlMaster
Example:
./scripts/setup.sh myserver.example.com
./scripts/setup.sh user@server.com ./builddirNote: Dynamic builds assume both local and remote systems have compatible runtime libraries. For maximum portability across different distributions or versions, use the static build (-Dstatic=true).
Make sure ~/.local/bin is in your PATH.
sudo ninja -C builddir installFor manual setup, you'll need to:
- Generate certificates using
./scripts/create-certs.sh - Copy certificates to remote host
- Set up SSH port forwarding in
~/.ssh/config
See USAGE.md for detailed manual setup instructions.