You can paste stuff from the X selection to stdout and copy stuff from
stdin to X selection. A few examples:
xsel -p | less <i># pastes the current X selection to less</i>
xsel --paste | less <i># same as above</i>
echo puppa | xsel -c <i># 'puppa' is now the current X selection</i>
echo puppa | xsel --copy <i># same as above</i>
xsel -c "puppa" <i># same as above</i>
echo puppa | xsel -m <i># 'puppa' merged to the current X selection</i>
echo puppa | xsel --merge <i># same as above</i>
xsel -m "puppa" <i># same as above</i>
The above examples should also give you complete understanding of the xsel
syntax ;).
Further options:
xsel -c -display host3:0.0 "puppa" #<i>Use X server on host3:0.0</i><br />xsel -c -s CLIPBOARD "puppa" #<i>Use CLIPBOARD selection rather than PRIMARY</i><br /> #<i>You may use PRIMARY, SECONDARY or</i><br /> #<i>CLIPBOARD - also abbreviations</i><br /> #<i>P,p,S,s,C and c are valid.</i><br />xsel -c --selection CLIPBOARD "puppa" #<i>Same as -s.</i><br />
Note that the X selection model has no concept of selection buffer on the
server. Rather, the client that holds the current selection makes it
available to the other clients and has to wait until someone requests
it. Hence, xsel forks and serves the selection requests until someone else
claims the selection.
xsel.c is completely based on the Xfree86 xcutsel.c. Its author, Ralph Swick,
deserves more credit than I do.
What is it good for?
I originally began implementing this to able to select a word in X (in any
application) and get the Finnish-English/English-Finnish translation for it.
I've put the following hacks in the Enlightenment shortcuts configuration:
- winkey-f1:
dict.pl `xsel -p` | gmessage -nearmouse -geometry 440x300 -file - &
(dict.pl is a perl script that fetches the
translation from a web service (now that Mofile
no longer provides this service, I use Kielikone's Netmot that is a commercial (non-free) service.)) - winkey-f2:
netscape-communicator -remote "openURL(`xsel -p`, new-window)"&
Select an URL and open a netscape window for it with one key press. - winkey-f3:
netscape-communicator -remote "openURL(http://www.google.com/search?q=`xsel -p|perl -pe 'tr/ /+/'`, new-window)"&
Select a word and execute a Google search for it.
and so on. (I modified gmessage to exit on esc key press, and make selecting
text possible. The diff is available below. You can use standard xmessage as
well.)
You could also do something likelocate file | xsel -c
to get a large file listing into any application via X selection.
Download.
- Source: xsel.c 0.04.1
- Man page: xsel.man 0.04.1
- Linux x86 redhat-6.2 binary for Xfree-4.0: xsel
- modified gmessage source: gmessage.c and the
diff to gmessage-0.2 - Linux x86 redhat-6.2 gmessage binary
To compile:
gcc xsel.c -O2 -o xsel -lX11 -lXt -lXaw -lXmu -L/usr/X11R6/lib/
gcc `gtk-config --cflags` -O6 gmessage.c -o gmessage `gtk-config --libs`
(Too lazy to hack up a Makefile).
Versions.
- 0.01 13082000 vherva: Initial version
- 0.02 14082000 vherva: Fixed -display command line switch. Fixed a hang
with -p and empty selection. Some clean-ups. - 0.03 11062001 vherva: use XSetWMHints to start the program in
iconic mode. This workarounds (or fixes,
depending on how do you look at it) the
orphaned window behaviour some folks were
seeing. (You do get an entry to the KDE task
bar etc, but that can be seen as useful, hence
I'm lazy fix it.) - 0.04 21072002 vherva: Add --merge, --selection and clean up.
- 0.04.1 30112002 vherva: Fix a typo in WriteStdout()
0 comments:
Post a Comment