A command-line program for getting and setting the contents of the X selection
C Shell Groff M4 Makefile
Latest commit aa7f57e Sep 2, 2016 @kfish committed on GitHub Merge pull request #17 from mptre/master
Fix segfault when stdin is empty
Permalink
Failed to load latest commit information.
release_notes Release 1.2.0 Mar 24, 2008
AUTHORS Add Hans de Goede to AUTHORS Mar 30, 2011
COPYING update to 0.9.6 sources (full tarball); conversion from Imake to GNU … Sep 19, 2007
ChangeLog Release 1.0.0 Jan 12, 2008
INSTALL.md Update and rename INSTALL to INSTALL.md Apr 19, 2015
Makefile.am as it turns out we're not actually using any of the X_PRE_LIBS or X_E… Feb 12, 2008
NEWS update to 0.9.6 sources (full tarball); conversion from Imake to GNU … Sep 19, 2007
README.md Update and rename README to README.md Apr 19, 2015
aclocal.m4 Fix logic of input/output options in pipelines Dec 9, 2010
autogen.sh remove automatically generated files, add autogen.sh script Sep 19, 2007
config.h.in Fix logic of input/output options in pipelines Dec 9, 2010
configure.ac Replace AC_CHECK_LIB with AC_SEARCH_LIBS in configure.ac. Sep 3, 2014
install-sh remove automatically generated files, add autogen.sh script Sep 19, 2007
missing remove automatically generated files, add autogen.sh script Sep 19, 2007
mkinstalldirs update to 0.9.6 sources (full tarball); conversion from Imake to GNU … Sep 19, 2007
rant.txt add text copy of ICCCM rant Feb 14, 2008
stamp-h.in update to 0.9.6 sources (full tarball); conversion from Imake to GNU … Sep 19, 2007
xsel.1x Give --selectionTimeout meaning in --input mode. Sep 4, 2014
xsel.c Merge pull request #17 from mptre/master Sep 2, 2016
xsel.h display VERSION as configured in config.h, remove definition from xsel.h Dec 13, 2007

README.md

XSel -- manipulate the X selection

Copyright (C) 2001 Conrad Parker conrad@vergenet.net

For updates see http://www.vergenet.net/~conrad/software/xsel/

INTRODUCTION

XSel is a command-line program for getting and setting the contents of the X selection. Normally this is only accessible by manually highlighting information and pasting it with the middle mouse button.

To read a file into the X selection
$ xsel < file

After which you can paste the file's contents into any X application with the middle mouse button, as though you had highlighted its text. XSel will read in the file contents exactly, whereas manual highlighting invariably breaks lines and transforms tabs into spaces. This is especially handy for copying in large files.

To write the X selection to a file
$ xsel > file

After which file will contain exactly the contents of the X selection, without trailing newlines and spaces and crap.

XSel is more than just cat for the X selection.

Append to the X selection
$ xsel --append < file
To follow a growing file
$ xsel --follow < file

To make the X selection follow standard input as it grows (like tail -f).

ADVANCED FEATURES

XSel also lets you access some of the more esoteric features of the X selection:

Delete the contents of the selection
$ xsel --delete

Will cause the program in which text is selected to delete that text. This really works, you can try it on xedit to remotely delete text in the editor window.

Manipulate the secondary selection

The X Window System maintains two selections, the usual primary selection and a secondary, which isn't used much ... XSel lets you use the secondary selection, for example:

To get and set the secondary selection:
$ xsel --secondary < file
$ xsel --secondary > file
To swap the primary and secondary selections:
$ xsel --exchange

So for example you can store useful text in the secondary selection and retrieve it later.

Manipulate the clipboard selection

Similarly, X has a clipboard selection. You can use the standard xclipboard program to manage a history of selected text, and you can use xsel to actually get text into that clipboard:

$ xsel --clipboard < file
Make the selection contents persist in memory

Normally the X selection only exists as long as the program it was selected in is running. Further, some buggy applications tend to forget their selection text after a little while. If you run:

$ xsel --keep

After selecting some important text, xsel will copy the text into its own memory so you can paste it elsewhere even if the original program exits or crashes.

Further information

Naturally all these options have single character equivalents, and

$ xsel --help

Provides usage information. For complete details, see the xsel(1x) man page.

DOWNLOAD

New versions of XSel are distributed in source form from: http://www.vergenet.net/~conrad/software/xsel/

STANDARDS

X11 ICCCM2

XSel conforms to the X Window System Inter-Client Communication Conventions Manual Version 2.0 (ICCCM2), including correct handling of TARGETS, MULTIPLE, TIMESTAMP, and DELETE targets, INCR properties and large data transfers.

My thoughts on ICCCM are available at: http://lists.slug.org.au/archives/slug-chat/2001/July/msg00054.html

Warning: explicit language.

LICENSE

Copyright (C) 2001 Conrad Parker conrad@vergenet.net

Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. No representations are made about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

CONTACT

Please direct any queries, bug reports etc. about XSel to the author, Conrad Parker conrad@vergenet.net .