Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nikvdp/pbproxy
https://github.com/nikvdp/pbproxy
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/nikvdp/pbproxy
- Owner: nikvdp
- Created: 2022-12-28T08:36:19.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2022-12-30T15:34:02.000Z (over 1 year ago)
- Last Synced: 2024-04-17T01:10:40.784Z (2 months ago)
- Language: Shell
- Size: 19.5 KB
- Stars: 254
- Watchers: 3
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Lists
- cli-apps - pbproxy - Send your clipboard anywhere you can ssh to. (<a name="transfer"></a>Data transfer)
- awesome-stars - nikvdp/pbproxy - (Shell)
- awesome-cli-apps - pbproxy - Send your clipboard anywhere you can ssh to. (<a name="transfer"></a>Data transfer)
README
# pbproxy - send your clipboard anywhere you can ssh to
**TL;DR:** `pbcopy` and `pbpaste` from any (mac or linux) machine you can ssh to
This is a simple tool to make it easy to interact with clipboards on remote
machines. The "ui" mimics macOS's `pbcopy` and `pbpaste` commands using the
original `pbcopy` and `pbpaste` on macOS, and wrapping `xsel` on Linux boxes.
On linux boxes where xsel is not available (eg headless servers that don't have
X) it falls back to storing clipboard contents in a temp fileIn other words, you can `pbcopy` and `pbpaste` from any remote machines you
have ssh access to. The special sauce is that you can put a server name from
your ssh config on the end of a pbcopy or pbpaste command so you can do stuff
like run `echo hello | pbcopy server2` on server1, after which doing `pbpaste`
from server2 would print 'hello'. You can also do this in the other direction
with pbpaste, eg from server2 you can run `pbpaste server1` and it'll print out
the contents of server1's clipboard.## Prereqs:
For best results:
- make sure you have `pbproxy` installed at `~/.pbproxy` on all machines you'll
be copying/pasting to/from.
- **make sure you have key-based ssh authentication set up** (otherwise you'll
have to enter your password each time you copy or paste)## Usage:
- Print the contents of another machine's clipboard to your local machine's stdout:
```
pbpaste
```
- Insert data into another machine's clipboard:```
echo hello there | pbcopy
```You can also use this to send the contents of your current machine's
clipboard to another machine:```
pbpaste | pbcopy
```- Print the contents of your local clipboard to stdout: `pbpaste`
- Insert data into your local clipboard: `echo some data | pbcopy`**NOTE**: This tool works the same way regardless of whether it's running on a
macOS or a linux machine. On macs it wraps the native pbcopy and pbaste commands,
and on linux it uses `xsel` or a temp file## Installation
- Clone this repo to your local machine
- Add the folder you cloned it to to your `PATH` through your
`~/.bashrc`/`~/.zshrc` files (**NOTE**: on macOS, make sure it comes BEFORE
`/usr/bin` on your PATH, otherwise the native `pbcopy` and `pbpaste` will
take precedence)
- restart your shell (or on zsh do `hash -r`) and try it out.For the lazy (read: efficient), copy/pasting this quick and dirty shell snippet should get the job done:
```bash
git clone https://github.com/nikvdp/pbproxy ~/.pbproxy
ps | grep $$ | grep -q zsh && echo 'export PATH="$HOME/.pbproxy:$PATH"' | tee -a ~/.zshrc
ps | grep $$ | grep -q bash && echo 'export PATH="$HOME/.pbproxy:$PATH"' | tee -a ~/.bashrc
export PATH="$HOME/.pbproxy:$PATH"
hash -r
```## Alternatives
If you know of any other tools in this space feel free to open a PR to include them here!
- [marcopaganini/clipsync](https://github.com/marcopaganini/clipsync) - conceptually similar, but runs as a background daemon. Unlike pbproxy, this means it can sync automatically in realtime over the cloud, whereas pbproxy only connects to other clipboards on demand. Linux only for now though.