El portapapeles de Bash es interno para bash, bash no se conecta al servidor X.
Lo que podría hacer es cambiar el significado de M-w
copiar la selección al portapapeles X además del portapapeles interno de bash. Sin embargo, la integración de bash es bastante flexible, y no creo que haya una manera de acceder a la información de la región o al portapapeles desde el código de bash. Puede hacer un enlace de teclas para copiar toda la línea al portapapeles 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
Si desea hacer cosas sofisticadas en el shell, cambie a zsh, que (entre otras ventajas) tiene una integración mucho mejor entre el editor de línea y el lenguaje de secuencias de comandos.
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 no tiene específicamente un portapapeles, esto es general para X.
²
A partir de bash 4.1, hay un error en el código de análisis de claves: las secuencias de teclas enlazadas bind -x
no pueden tener más de dos caracteres. Creo que bash 4.2 corrige algunos casos de prefijos más largos, pero no todos; No he investigado los detalles.