Xclip. Portapapers, clipboard

De wikijoan
Salta a la navegació Salta a la cerca

Introducció[modifica]

El problema que es planteja és automatitzar la còpia del contingut de pàgines web a un fitxer. Amb Ctrl-A selecciono tot el contingut, i amb Ctrl-C copio el contingut al portapapers. Després a un fitxer puc fer Ctrl-V per enganxar el contingut. Hi ha possibilitats d'automatitzar el procés. La solució passa per xclip en combinació amb xdotool.

xclip[modifica]

xclip is a command line interface to the X11 clipboard
$ sudo apt-get install xclip
$ man xclip

To put the output of a command into the clipboard:

$ ls -la | xclip
o bé
$ uptime | xclip

aleshores, amb el botó del mig puc fer el paste (a la consola o en una aplicació gràfica)

 18:59:31 up 10 min,  2 users,  load average: 0.13, 0.31, 0.20

Si vull utilitzar Ctrl-V en comptes del botó del mig, utilitzaré:

$ uptime | xclip -selection c

Per posar tot el contingut d'un fitxer (e.g. /etc/apt/sources.list) al porta-papers:

$ xclip /etc/apt/sources.list

I per mostrar el contingut del porta-papers:

$ xclip -o

I per volcar el contingut del porta-papers a un fitxer:

$ xclip -o > ~/test.txt

Problema plantejat[modifica]

El problema que es planteja és com copiar el contingut de moltes pàgines web a un fitxer, de la manera més ràpida possible. Una de les coses que ralentitza el proceś és haver de canviar de finestra entre el Firefox i gedit. Si ens podem evitar el procés de treballar amb el gedit millor, i si el procés d'enganxar acumulant (append) directament a un fitxer, utilitzant xclip, millor. Una altra cosa interessant és utiltizar dreceres del teclat per copiar el text d'una pàgina amb el teclat:

  • Ctrl-A -> seleccionar tot
  • Ctrl-C -> copiar
  • Ctrl-W -> tancar

La primera idea és tenir un programet amb C que cada segon, posem per cas, posi el contingut del clipboard a un fitxer, i que es compari aquest fitxer amb el de l'anterior segon. Si els fitxers són diferents vol dir que el clipboard s'ha actualitzat, i per tant el nou clipboard el puc ficar (append) al fitxer on acumulant informació i que processaré a posteriori. Això no ha de ser difícil.

Una altra volta de torca és evitar que jo hagi de teclejar Ctrl-A, etc. És a dir, enviar les comandes Ctrl-A, etc, a la finestra i al tab correcte del procés Firefox? D'aquesta manera jo em limitaria a navegar per determinades pàgines, i el programet C estaria fent tota la feina de copiar/enganxar i acumular en un fitxer. Això seria la repera.

per copiar el codi font d'una pàgina amb el teclat:

  • Ctrl-U -> veure codi font
  • Ctrl-A -> seleccionar tot
  • Ctrl-C -> copiar
  • Ctrl-W -> tancar

hi ha alguna manera d'automatitzar això des de C o des d'un script?

Mirar xdotool - command-line X11 automation tool


creat per Joan Quintana Compte, febrer 2013