Need help with xclip?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

593 Stars 54 Forks GNU General Public License v2.0 167 Commits 63 Opened issues


Command line interface to the X11 clipboard

Services available


Need anything else?

Contributors list


xclip is a command line utility that is designed to run on any system with an X11 implementation. It provides an interface to X selections ("the clipboard") from the command line. It can read data from standard in or a file and place it in an X selection for pasting into other X applications. xclip can also print an X selection to standard out, which can then be redirected to a file or another program.


Here are some ideas for things you can do with xclip:

Copy your uptime into the selection for pasting:
uptime | xclip

Copy your password file for pasting: xclip /etc/passwd

Save some text you have Edit | Copied in a web browser: xclip -o -sel clip > webpage.txt

Open a URL selected in an email client mozilla xclip -o

Copy XA_PRIMARY to XA_CLIPBOARD xclip -o | xclip -sel clip

In command mode in vim, select some lines of text, then press shift-: for an ex prompt, and use this command to copy the selected lines of text to the primary X selection: !xclip -f


The programs xclip-copyfile, xclip-pastefile, and xclip-cutfile can be used for copying and moving files between different directories and even machines, assuming that you have a working X11 connection. Here are some examples:

Copying a file to a remote host

[ ~]$ echo "A file created on ${HOSTNAME}" > file1 [ ~]$ xclip-copyfile file1 [ ~/doc]$ xclip-pastefile file1 [ ~/doc]$ cat file1 A file created on

Copying an entire tree structure

[ ~]$ xclip-copyfile doc [ ~/tmp]$ xclip-pastefile doc/ doc/letter-mom-april.txt doc/file1 doc/letter-dad-march.txt

Copying files with preserved path information

[ ~]$ xclip-copyfile -p /etc/sysconfig/grub tar: Removing leading `/' from member names [ ~/tmp]$ xclip-pastefile etc/sysconfig/grub [ ~/tmp]$ ls etc/sysconfig/grub etc/sysconfig/grub

Moving files

[ ~]$ ls letter-brother-may.txt letter-brother-may.txt [ ~]$ xclip-cutfile letter-brother-may.txt [ ~]$ ls letter-brother-may.txt ls: cannot access letter-brother-may.txt: No such file or directory [ ~]$ cd doc [ ~/doc]$ xclip-pastefile letter-brother-may.txt


  • Reads data piped to standard in or files given as arguments
  • Prints contents of selection to standard out
  • Accesses the XAPRIMARY, XASECONDARY or XA_CLIPBOARD selection
  • Accesses the cut-buffers
  • Supports the INCR mechanism for large transfers
  • Connects to the X display in $DISPLAY, or specified with -display host:0
  • Waits for selection requests in the background


For a good overview of what selections are about, have a look at Short version:

  • XA_PRIMARY contains the last text you highlighted
  • Middle click pastes XA_PRIMARY
  • XA_CLIPBOARD contains text explicitly copied with Edit | Copy, Ctrl-C etc.
  • Edit | Paste pastes XA_CLIPBOARD
  • xclip uses XA_PRIMARY unless you specify otherwise with -selection


Glad you asked! At this stage, I'm pretty happy with the features and implementation, so if you have anything at all that should be done, I want to hear about it. Doesn't matter how small, compiler warnings, segfaults, spelling mistakes, whatever, I want to get it sorted out. xclip is not a big project, I'd like to get all these things sorted out and then declare it "complete".


GNU GPL, see the COPYING file for details.



Email: [email protected]

Please email me about problems, experiences, patches, fixes, etc.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.