Manipulando a clipboard do X11 com o xsel

Saudações!!!

Essa eu procurava há muito tempo. Quem me conhece vai lembrar que eu já levantei diversas vezes o questionamento: “Porquê não consigo copiar algum texto pelo X11 e colar no TTY (ctrl+alt+F3 por exemplo) e vice-versa? Dever ter alguma ferramenta pra isso ou algum segredo pra fazer isso..“.

Então, hoje instalando o Fedora 13 percebi que um dos softwares da lista de pacotes era xsel – manipulate the X selection.

Rapidamente fuçando no MAN do produto, ví como é simples de utilizar. Segue algumas explicações:

Existem basicamente três seleções: primary, secondary, e a clipboard. Sendo que vamos falar aqui apenas da PRIMARY e da CLIPBOARD pois ja é o suficiente.

A PRIMARY é aquela que voce seleciona algo no X11 com o botão esquerdo do mouse e ele copia, então você consegue colar com o botão do meio do mouse onde o ponteiro do mouse estiver “mirando”.
A CLIPBOARD é aquela que você usa CTRL+C e CTRL+V, e a colagem vai apenas onde está o cursor.

Antes de proceder a leitura é preciso entender que são duas coisas diferentes a primary e a clipboard.
Agora vamos agora ao que interessa:

1) Selecione algum texto com o botão esquerdo do mouse pelo X11 (isso vai preencher a PRIMARY);
2) Selecione algum texto com o mouse pelo X11 e pressione ctrl+c (isso vai preencher a CLIPBOARD);
3) Aperte ctrl+alt+F3 para ir à um novo tty e coloque seu usuário e senha;
4) Exporte a variavel de ambiente DISPLAY conforme instruções logo abaixo;
5) Use o comando xsel -o e você verá em STDOUT o que você havia selecionado lá no X11 (PRIMARY);
6) Use o comando xsel -b -o e você verá em STDOUT o que você selecionou e pressionou ctrl+c lá no X11 (CLIPBOARD);
Obs.: Se você não exportar a variavel de ambiente DISPLAY, verá algo assim ao usar o xsel no novo tty:

[hudson@vostrolab ~]$ xsel -o
xsel: Can’t open display: (null)

Para exportar a variavel DISPLAY, temos que ver qual o display nosso X11 está usando:

[hudson@vostrolab ~]$ ps aux | grep X
root      1277  3.9  1.4 160024 58112 tty1     Ss+  10:51   8:50 /usr/bin/Xorg :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-bxfxuy/database -nolisten tcp vt1

Então basta exportar a DISPLAY:

[hudson@vostrolab ~]$ export DISPLAY=:0

Para fazer o processo inverso, de copiar algo no TTY e poder colar no X11, basta usar a opção -i combinada com alguma informação vinda por STDIN:

Para inputar na PRIMARY:

[hudson@vostrolab ~]$ echo “CIALINUX COM O BOTÃO DO MEIO” | xsel -i

Ou na CLIPBOARD:

[hudson@vostrolab ~]$ echo “CIALINUX COM O CTRL+V” | xsel -b -i

Faça seus testes colando com botão do meio ou ctrl+v em qualquer lugar no X11.

Grande abraço e até o próximo POST!

Por: Hudson Murilo dos Santos

Referências: man xsel

One thought on “Manipulando a clipboard do X11 com o xsel

Leave a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *