-
-
Save mikepqr/2eb4da78603ce8bc8e89 to your computer and use it in GitHub Desktop.
This sets up keybindings in tmux that allow you to copy/paste to/from your OS X clipboard from tmux running inside an SSH connection to a remote host.Partially borrowed from http://seancoates.com/blogs/remote-pbcopy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Local (OS X) Side | |
#### `~/Library/LaunchAgents/pbcopy.plist` | |
``` | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>Label</key> | |
<string>localhost.pbcopy</string> | |
<key>ProgramArguments</key> | |
<array> | |
<string>/usr/bin/pbcopy</string> | |
</array> | |
<key>inetdCompatibility</key> | |
<dict> | |
<key>Wait</key> | |
<false/> | |
</dict> | |
<key>Sockets</key> | |
<dict> | |
<key>Listeners</key> | |
<dict> | |
<key>SockServiceName</key> | |
<string>2224</string> | |
<key>SockNodeName</key> | |
<string>127.0.0.1</string> | |
</dict> | |
</dict> | |
</dict> | |
</plist> | |
``` | |
#### `~/Library/LaunchAgents/pbpaste.plist` | |
``` | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>Label</key> | |
<string>localhost.pbpaste</string> | |
<key>ProgramArguments</key> | |
<array> | |
<string>/usr/bin/pbpaste</string> | |
</array> | |
<key>inetdCompatibility</key> | |
<dict> | |
<key>Wait</key> | |
<false/> | |
</dict> | |
<key>Sockets</key> | |
<dict> | |
<key>Listeners</key> | |
<dict> | |
<key>SockServiceName</key> | |
<string>2225</string> | |
<key>SockNodeName</key> | |
<string>127.0.0.1</string> | |
</dict> | |
</dict> | |
</dict> | |
</plist> | |
``` | |
#### `~/.ssh/config` | |
``` | |
Host myhost | |
HostName 192.168.1.123 | |
User myname | |
RemoteForward 2224 127.0.0.1:2224 | |
RemoteForward 2225 127.0.0.1:2225 | |
``` | |
**After adding the PLists above, you'll have to run:** | |
``` | |
launchctl load ~/Library/LaunchAgents/pbcopy.plist | |
launchctl load ~/Library/LaunchAgents/pbpaste.plist | |
``` | |
## Remote (Linux) Side | |
#### `~/.tmux.conf` | |
``` | |
if-shell 'test "$(uname)" = "Linux"' 'source ~/.tmux-linux.conf' | |
``` | |
#### `~/.tmux-linux.conf` | |
``` | |
bind C-c run "tmux save-buffer - | pbcopy-remote" | |
bind C-v run "tmux set-buffer $(pbpaste-remote); tmux paste-buffer" | |
``` | |
#### `~/bin/pbpaste-remote` | |
``` | |
#!/bin/sh | |
nc localhost 2225 | |
``` | |
#### `~/bin/pbcopy-remote` | |
``` | |
#!/bin/sh | |
cat | nc -q1 localhost 2224 | |
``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment