xclip: Manipulando el portapapeles desde la línea de comandos

El portapapeles o clipboard es una herramienta que nos ofrece el servidor X de nuestro sistema operativo con el fin de compartir información entre aplicaciones.

Es el responsable de operaciones tan recurrentes como el cortar, copiar y pegar. Consiste en una especie de almacén o buffer donde las aplicaciones pueden almacenar datos para que estos puedan ser utilizados posteriormente por la misma o por otras aplicaciones.

En general, todos sabemos utilizarlo desde un punto de vista de usuario, ya sea mediante los menús de las aplicaciones, o bien mediante los atajos de teclado, normalmente:

  • Ctrl+X Cortar
  • Ctrl+C Copiar
  • Ctrl+V Pegar

Sin embargo, ¿qué ocurre cuando lo queremos utilizar el portapapeles desde un script?

xclip

xclip es una aplicación que nos permite introducir texto en el portapapeles y recuperar texto de él desde la línea de comandos. El texto recuperado puede haber sido introducido por cualquier otra aplicación.

Asímismo, el texto que se introduce en el portapapeles a través de xclip puede ser utilizado por cualquier otra aplicación.

El paquete xclip puede encontrarse en los repositorios de la mayoria de distribuciones. Por ejemplo, en Ubuntu no es necesario más que un apt-get para instalarlo:

$ sudo apt-get install xclip

Su uso básico es muy sencillo. Para introducir el texto de la entrada estándar en el portapapeles debe especificarse la opción -i:

$ echo "Hola mundo" | xclip -i

El texto «Hola mundo» pasará a estar disponible para el resto de aplicaciones. Del mismo modo, para recuperar el texto del portapapeles y mandarlo a la salida estándar debe especificarse la opción -o:

$ xclip -o
Hola mundo

Selecciones

El portapapeles nos ofrece tres buffers o selecciones distintas:

  • PRIMARY: Es el buffer por defecto. En él se almacena texto simplemente con marcarlo con el cursor, sin necesidad de pulsar combinación de teclas ni opción en el menú ninguna.
  • CLIPBOARD: Este buffer es el más utilizado por las aplicaciones. En él se almacena el texto seleccionado por el cursor sólo después de haber pulsado la combinación de teclas u opción de menú para cortar o copiar.
  • SECONDARY: Es un buffer auxiliar e independiente. Está totalmente disponible pero las aplicaciones no suelen utilizarlo de forma estándar. Se usa sólo con fines muy particulares.

xclip puede manipular los tres buffers. Sólo es necesario especificarle cuál queremos usar, mediante la opción -selection y la primera letra del nombre del buffer. Por omisión, se utiliza el buffer PRIMARY.

Por ejemplo, para obtener el texto que se ha cortado en otra aplicación, debemos especificar que queremos el contenido de salida del buffer CLIPBOARD, con las opciones -o y -selection c

$ xclip -o -selection c
Texto cortado en gedit

Una aplicación práctica

La herramienta xclip ofrece muchas posibilidades. Es principalmente útil en scripts, donde no tenemos la posibilidad de usar atajos de teclado, puesto que los procesos se realizan de forma autónoma.

Pongamos un ejemplo: imaginemos que queremos poder buscar cualquier palabra que aparezca en cualquier aplicación o página web en Wordreference para traducirla al inglés o del inglés con sólo una pulsación de teclado.

En primer lugar debemos averiguar el formato de URL con el que se le pasan parámetros al sitio web de destino. En este caso es el siguiente:

http://www.wordreference.com/es/translation.asp?tranword=PALABRA

Una vez sabemos eso, simplemente debemos crear un script que abra esta URL con, por ejemplo, Firefox, sustituyendo PALABRA por el código equivalente que nos devuelva el texto que se encuentra en el portapapeles.

Le llamaremos, por ejemplo, wordreference.sh, y contendrá lo siguiente:
#!/bin/bash
firefox http://www.wordreference.com/es/translation.asp?tranword=$(xclip -o)

Para terminar, una vez le hemos guardado nuestro script y le hemos dado permisos de ejecución, tenemos que asociarlo a un atajo de teclado en nuestro gestor de escritorio. Por ejemplo, le asignamos la combinación Ctrl+G. Y ya lo tenemos listo.

Ahora sólo nos queda utilizarlo. Marcamos con el cursor cualquier palabra que queramos traducir y pulsamos Ctrl+G. Veremos como, sin más, se abre el explorador con la página correspondiente a la traducción de la palabra marcada.

Es un modo práctico de tener el traductor siempre a mano sin necesidad de instalar aplicaciones de diccionario.

Además, este mismo método puede utilizarse para invocar cualquier otra página web, como puede ser Google, Wikipedia u otro sitio que nos permita realizar búsquedas, o bien para abrir aplicaciones que requieran parámetros en su llamada.

¿Más aplicaciones? Lo que la imaginación os sugiera.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   KZKG^Gaara dijo

    Buen artículo, se necesitan más como este en la red.

    Desde que hice acorta[1] (más que nada para mi propio beneficio) ando usando xclip, más que nada porque es multi-escritorio, o sea, da igual si es Gnome o KDE o etc, podré manipular datos del clipboard sin problemas 🙂

    Saludos

    [1] -» blog.desdelinux.net/tag/acorta/

    1.    beny_hm dijo

      admin una preguntota como sale tu logo de arch y ami solo me sale el pinche pinguino XD yo quiero q me salga ese logito T_T

  2.   wikimx dijo

    Exclente, xclip me da una idea para un script con axel, si me sale bien el script lo comparto con ustedes en esta área 😀

  3.   usemoslinux dijo

    Genial!

  4.   neysonv dijo

    exelente articulo me abre las puertas a un monton de ideas. solo me queda una duda; se supone que es para el servidor de las x, asi que la pregunta es: servira para wayland o mir??? para xmir es evidente que si pero no se en los otros dos casos.
    saludos

  5.   pobreotaku dijo

    que guay, un comando mas para el arsenal