A área de transferência do Bash é interna ao bash, o bash não se conecta ao servidor X.
O que você pode fazer é alterar o significado de M-w
copiar a seleção para a área de transferência do X¹, além da área de transferência interna do bash. No entanto, a integração do bash é bastante flexível, e não acho que haja uma maneira de acessar as informações da região ou a área de transferência a partir do código do bash. Você pode fazer uma ligação de tecla para copiar toda a linha na área de transferência do X.²
if [[ -n $DISPLAY ]]; then
copy_line_to_x_clipboard () {
printf %s "$READLINE_LINE" | xsel -ib
}
bind -x '"\eW": copy_line_to_x_clipboard'
fi
Se você quiser fazer coisas sofisticadas no shell, mude para zsh, que (entre outras vantagens) tem uma integração muito melhor entre o editor de linha e a linguagem de script.
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
¹ O
Gnome não possui especificamente uma área de transferência, isso é geral para o X.
²
A partir do bash 4.1, há um erro no código de análise de chave: as seqüências de teclas vinculadas a bind -x
podem não ter mais de dois caracteres. Eu acho que o bash 4.2 corrige alguns casos de prefixos mais longos, mas nem todos; Eu não pesquisei os detalhes.