Remote Clip

Copy-and-paste data easily
among Palms, Windows, and Unix
using clipboard synchronization

Contents

What is Remote Clip?

Remote Clip enables you to transfer text and files among multiple computers - such as desktop computers, laptops, and personal digital assistants (PDAs) - by synchronizing their clipboards. Synchronization ensures that the clipboards of the computers are always identical. With this technique, data can be moved between different computers using the familiar copy-and-paste model: select an item on one computer, copy it to the clipboard (using the standard Copy command available in most applications), then turn to the other computer and paste the item (using the standard Paste command).

In our model, each user has a personal ``clipboard group'' consisting of the computers on their desks (and in their pockets), which all share a synchronized clipboard. Other computers may temporarily join the clipboard group, for instance if visitors want to carry away data on their portable computers. Two users should not share a synchronized clipboard for long, however, because their clipboard operations would interfere. Furthermore, clipboard contents are hidden state, so copied data must be pasted before the user forgets about it. A synchronized clipboard makes sense for a single user transferring data between computers on the same desk, but not between a computer at work and another at home.

Existing ``network clipboard'' programs (such as the ClipBook Viewer included in Microsoft Windows) allow a computer's clipboard to be exported across the network, but do not provide automatic synchronization. As a result, at some point during a copy-and-paste operation, these programs must ask the user for the name of the other computer. Remote Clip omits this step. Once configured, Remote Clip is invisible to the user.


Downloading

Remote Clip For Palm

Remote Clip Hack for Palm synchronizes the clipboard of one or more Palm handhelds with the clipboard of a Windows machine. Remote Clip Hack is included in Pebbles, a suite of applications for controlling a PC with a PDA.

Instructions for downloading, installing, and using Remote Clip Hack can be found on the Remote Clip Hack page.

Remote Clip for Java

Remote Clip for Java synchronizes the clipboards of two or more Java-capable computers (including Win95/98/NT/2K, Linux, Solaris, and FreeBSD) across a network.

The latest release of Remote Clip for Java is version 3.1, released on July 10, 2002. See the change history to find out what's new.

To run it, you'll need Java 1.1 or later. If you're not sure what version you have, try running java -version. To get Java for Windows or Solaris, get the Sun JDK; for other platforms, consult the list of Java ports.

Remote Clip for Java has been tested on the following platforms:

Let me know if you have some other platform and Remote Clip works (or doesn't work) for you.

1. Download the Remote Clip ZIP file:

RemoteClip-3.1.zip (950 KB)

2. Extract the contents of the ZIP file into some directory.

3. Run Remote Clip in one of the following ways, depending on your platform:

Windows
(a) Find your JRE bin directory (usually something like C:\Program Files\Java\j2re1.4.0_01\bin), make sure it contains keytool.exe, and put the directory on your PATH environment variable.  (This is a temporary patch for a Java 1.4 problem.)
(b) Open the RemoteClip-3.1 folder
(c) Open the bin folder
(d) Run rclip.exe
Linux, Solaris, or FreeBSD
(a) Run RemoteClip-3.1/bin/rclip
Other Unix platforms
You have to build the shared library:
(a) cd RemoteClip-3.1
(b) unzip src.zip
(c) ./configure
(d) make unix
(e) Run bin/rclip
If you get Remote Clip working on a platform other than Linux/Solaris/FreeBSD, please send me email so I can add its binary to the distribution.
Non-Unix, non-Windows platforms
(a) Add RemoteClip-3.1/lib/rclip.jar to your class path.
(b) Run java RemoteClip.

4. Optional but recommended: Remote Clip now supports SSL (secure connections) if it's available for your version of Java:

Remote Clip contains no cryptographic algorithms itself, so it can be freely exported to other countries. Remote Clip relies on the cryptography implementation present in the underlying Java environment. See the Java Secure Socket Extension site for more information about export controls.

5. Optional: Put the Remote Clip binary directory (RemoteClip-3.1/bin) on your path. Having it on your path makes it easier to run the command-line programs rcopy and rpaste.

The source code for Remote Clip for Java is included in the ZIP file, covered under the GNU General Public License.

Remote Clip for Java is Copyright © 1999-2001 - Carnegie Mellon University. Remote Clip is made available under the terms of the GNU General Public License.

CARNEGIE MELLON UNIVERSITY (CMU) MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE, OR MERCHANTABILITY, EXCLUSIVITY OR RESULTS OBTAINED FROM SPONSOR'S USE OF ANY INTELLECTUAL PROPERTY DEVELOPED UNDER THIS AGREEMENT, NOR SHALL EITHER PARTY HERETO BE LIABLE TO THE OTHER FOR INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES SUCH AS LOSS OF PROFITS OR INABILITY TO USE SAID INTELLECTUAL PROPERTY OR ANY APPLICATIONS AND DERIVATION THEREOF. CMU DOES NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT, OR THEFT OF TRADE SECRETS AND DOES NOT ASSUME ANY LIABILITY HEREUNDER FOR ANY INFRINGEMENT OF ANY PATENT, TRADEMARK, OR COPYRIGHT ARISING FROM THE USE OF THE PROGRAM, INFORMATION, INTELLECTUAL PROPERTY, OR OTHER PROPERTY OR RIGHTS GRANTED OR PROVIDED TO IT HEREUNDER. THE USER AGREES THAT IT WILL NOT MAKE ANY WARRANTY ON BEHALF OF CMU, EXPRESSED OR IMPLIED, TO ANY PERSON CONCERNING THE APPLICATION OF OR THE RESULTS TO BE OBTAINED WITH THE PROGRAM UNDER THIS AGREEMENT. USERS ACKNOWLEDGE THAT THE PROGRAM IS A RESEARCH TOOL STILL IN THE DEVELOPMENT STAGE, THAT IT IS BEING SUPPLIED "AS IS," WITHOUT ANY ACCOMPANYING SERVICES OR IMPROVEMENTS FROM CMU.


Using Remote Clip

The fundamental idea in Remote Clip is the clipboard group. A clipboard group is a set of computers whose clipboards are synchronized. When data is placed on one computer's clipboard, using the standard Cut or Copy command in any application, the copied data is effectively broadcast to all the other clipboards in the clipboard group, so that you can immediately paste it on any other machine using a standard Paste command.

When you start Remote Clip, you should see its main window, which shows the current members of the clipboard group. At first, the clipboard group contains only one host (the local computer):

If your Java distribution has SSL support installed, you will see a fingerprint in the main window. This fingerprint identifies the local computer for the purpose of making secure, encrypted connections. If you don't have SSL support installed, you won't see a fingerprint, and all data will be sent in the clear, potentially visible to network eavesdroppers.

Setting up a Clipboard Group

To set up a clipboard group, you need to install and run Remote Clip on every computer you want to join the group. Then, on one computer, use the Add button to add the other computers one at a time:

By default, if SSL support is installed in your Java distribution, connections to other hosts will be encrypted and authenticated. You can choose to make an unencrypted connection by unchecking the Encryption checkbox. If the host you're connecting to is running Java 1.1, which doesn't support SSL, you need to use an unencrypted connection.

When you try to connect to another host for the first time, the other host must authorize your connection. It does this by popping up a dialog box on its own screen:

If you're using an encrypted connection, you'll see a fingerprint in this dialog box, which you can compare against the fingerprint displayed on nugget (the originating host). This ensures that your connection is not being intercepted by a "man in the middle". Fingerprints are designed to be very difficult to reproduce without knowledge of a secret key known only to nugget.

Encrypted connections need to be authorized on both sides of the connection. After you acknowledge the dialog box on geode, nugget will pop up its own dialog box displaying geode's fingerprint and asking you to verify it. Once you have authorized both sides, nugget and geode now trust each others' credentials. Thereafter, nugget and geode will be able to make encrypted connections to each other without having to bother you about it, unless you reset their encryption keys (as described below).

The clipboard group is persistent. When you restart Remote Clip, it attempts to reconnect to the same clipboard group it was using before. If some hosts are no longer reachable (because they are turned off or not running Remote Clip), they are marked as disconnected but remain in the clipboard group. You can force Remote Clip to try to reconnect to disconnected hosts by selecting the hosts and pressing Reconnect.

Remote Clip automatically forwards clipboard-update messages to all the hosts in its clipboard group. You can construct an arbitrary network of clipboard groups, even including loops. For example, host A might have B and C in its clipboard group, and host B might have D and E (as well as A), and host E might connect back to A. Any clipboard operation on any of these hosts will be automatically propagated to all the others, without danger of infinite regression.

Here are some common scenarios to illustrate how to set up a clipboard group:

Copying and Pasting Text

Remote Clip lets you copy and paste text between computers using the Copy and Paste commands in your everyday applications:

In Unix/X, you can copy and paste using either the selection or the Motif clipboard.

Copying and Pasting Files

Remote Clip can also transfer files and directories via the clipboard.

In Windows, you can copy files to the clipboard by selecting them in Windows Explorer and choosing Edit/Copy or pressing Control-C. To paste files, just browse to the target directory in Explorer and invoke Edit/Paste.

On non-Windows platforms, you can copy and paste files from the Remote Clip main window. The Copy Files button pops up a dialog box for selecting the file(s) to copy:

You can paste files using the Paste Files button. If files are found on the clipboard, Remote Clip will pop up a dialog box to select a directory in which to save the files:

Finally, you can also copy and paste files from the command line. Copy files to the clipboard using the rcopy command, and paste them using rpaste. (The RemoteClip directory must be on your search path for these commands to be found.) For example:

host1% rcopy my-file.txt

host2% rpaste
my-file.txt

By default, rpaste pastes files to the current directory. To paste the files somewhere else, use rpaste -d directory.

Security Issues

By default, if your version of Java supports SSL, Remote Clip allows only authenticated, encrypted connections, which both protect the data being sent across the network and ensure that unauthorized users cannot join your clipboard group.

However, if you want to connect to a host running Java 1.1, you'll need to allow unencrypted connections.  You can permit unencrypted connections by going to the Options dialog and unchecking "Require encryption on remote connections."  Unencrypted connections require manual authorization unless the connecting host is already found in your clipboard group.

You may also want to permit unencrypted connections from the local host.  This will speed up the rcopy and rpaste commands, since unencrypted connections are much faster to set up. You can do this by going to the Options dialog and unchecking "Require encryption on local connections."  Be careful running Remote Clip with unencrypted local connections on a multi-user host --- any user on the host can connect to your clipboard without authorization.

Remote Clip uses SSL 3.0 (TLS 1.0) to make encrypted connections. Every user/host combination has a randomly generated 1024-bit DSA private key and a self-signed public key certificate, which are stored in a file named .rclip-keys in the user's home directory. The format of the file is a Java keystore, which can be viewed and manipulated with the keytool program included with Java 1.2 or later. The fingerprint displayed by Remote Clip is an MD5 hash of the host's public key certificate.

The .rclip-keys file stores the public key certificates of the other Remote Clips that are trusted by this user/host.  You can browse these certificates by going to the Options dialog and clicking Manage Trusted Keys.

To ensure security, the .rclip-keys file must be kept private. If this file can be read by other users, then they can connect to your clipboard without your knowledge. On Unix, the file's permissions are automatically changed to be readable and writable only by its owner. On AFS, this is not sufficient to hide the file, so you should make sure your home directory is readable only by you, or else change the keystore to a more secure location using Remote Clip's Options dialog box. Windows users should protect the file with access control,if possible.

If security is compromised and the .rclip-keys file may have been exposed, you should regenerate the key file by going to the Options dialog and pressing Regenerate Encryption Keys. Alternatively, you can delete the .rclip-keys file and restart Remote Clip to make it automatically recreate the key file. Be sure to do this on allhosts that might have had a RemoteClip trust relationship with the compromised host. After regenerating the key file, you will need to reauthorize all connections between your clipboards.


Publications

Robert C. Miller and Brad A. Myers. "Synchronizing Clipboards of Multiple Computers." Proceedings of UIST '99, Asheville NC, November 1999, pp 65-66.


Funding

Partially funded by a grant from DARPA. This research was performed in part in connection with Contract number DAAD17-99-C-0061 with the U.S. Army Research Laboratory. The views and conclusions contained in this document are those of the authors and should not be interpreted as presenting the official policies or position, either expressed or implied, of the U.S. Army Research Laboratory or the U.S. Government unless so designated by other authorized documents. Citation of manufacturer's or trade names does not constitute an official endorsement or approval of the use thereof. The U.S. Government is authorized to reproduce and distribute reprints for Government purposes notwithstanding any copyright notation hereon.


Other Resources

Remote Clip is an offshoot of the Pebbles Project, which is studying ways to use handheld and desktop computers in tandem.

Remote Clip owes its inspiration to some neat work by Jun Rekimoto:

A number of network clipboards exist for Windows 95/98/NT. Most are freeware or shareware. These programs can export clipboard data across the network, but do not automatically synchronize the clipboards, so the user must invoke some additional operations between the copy and the paste. Thus, these programs are less fluid for a single user, but better able to support multiple users. Network clipboards are often combined with clipboard extenders that offer features like clipboard viewing, a history of copied-and-pasted items, hotkeys, autopaste, and boilerplate items. Here is a sampling of network clipboards and clipboard extenders; for more, see your favorite shareware site.


Send comments or questions to Rob Miller (rcm@cs.cmu.edu)