Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

In this thread the top answer shows how to copy text that has been previously selected with the mouse on a gnome-terminal, to the clipboard in X11.

My question is: Say I copy a piece of text from the terminal using bash set-mark and copy keyboard shortcuts (i.e. set-mark + M-w). Is it possible to share this clipboard with X11?

EDIT: In the original question, I talked about sharing the clipboard with GNOME, but as Guilles points out below, GNOME doesn't specifically have a clipboard (it's general to X), so I have updated the question.

share|improve this question
    
In gnome-terminal, you can also type Ctrl+Shift+C and Ctrl+Shift+V to copy and paste to the system clipboard. –  Lie Ryan Aug 14 '11 at 17:49
add comment

2 Answers 2

up vote 5 down vote accepted

Bash's clipboard is internal to bash, bash doesn't connect to the X server.

What you could do is change the meaning of M-w to copy the selection to the X clipboard¹ in addition to bash's internal clipboard. However bash's integration is pretty loose, and I don't think there's a way to access the region information or the clipboard from bash code. You can make a key binding to copy the whole line to the X clipboard.²

if [[ -n $DISPLAY ]]; then
  copy_line_to_x_clipboard () {
    printf %s "$READLINE_LINE" | xsel -ib
  }
  bind -x '"\eW": copy_line_to_x_clipboard'
fi

If you want to do fancy things in the shell, switch to zsh, which (amongst other advantages) has far better integration between the line editor and the scripting language.

if [[ -n $DISPLAY ]]; then
  x-copy-region-as-kill () {
    zle copy-region-as-kill
    print -rn -- "$CUTBUFFER" | xsel -ib
  }
  x-kill-region () {
    zle kill-region
    print -rn -- "$CUTBUFFER" | xsel -ib
  }
  zle -N x-copy-region-as-kill
  zle -N x-kill-region
  bindkey '\C-w' x-kill-region
  bindkey '\ew' x-copy-region-as-kill
fi

¹ Gnome doesn't specifically have a clipboard, this is general to X.
² As of bash 4.1, there is a bug in the key parsing code: key sequences bound with bind -x may not be more than two characters long. I think bash 4.2 fixes some cases of longer prefixes but not all of them; I haven't researched the details.

share|improve this answer
    
Thanks for the idea @Gilles! I think it's time for me to learn and switch to zsh. –  user815423426 Aug 14 '11 at 18:02
add comment

@Gilles already gave an excellent answer. I would just like to mention the existence of xclip, which is also a very useful way to copy terminal output to the X clipboard, by just piping anything into it:

$ cat /etc/passwd | xclip
share|improve this answer
    
Just a note that xclip copies into the primary buffer by default. To use the clipboard, use xclip -selection clipboard. –  Sparhawk May 30 at 6:23
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.