¿Cómo copio todo el historial del portapapeles a un archivo de texto?


10

Me gustaría pegar todo mi historial del portapapeles que consiste en palabras copiadas (Ctrl + C / por selección) durante mis sesiones de lectura. Instalé programas como Glippy y ClipIt pero no pude encontrar la forma de pegar todas las palabras, si alguna vez existe tal opción en estos programas, copio a un archivo de texto simple a la vez, no una palabra a la vez. ¿Alguien me puede ayudar?

¡Gracias!


tiendas CLIPit su historia en ~ / .local / share / CLIPit / historia, el formato tiene algunos caracteres de control, es probable que pueda analizar a cabo con sed, pero eso es un poco complicado
bartekbrak

Respuestas:


5

Puede ver algunas cadenas en el archivo de historial de clipit con este comando:

strings ~/.local/share/clipit/history

Pero no es la mejor manera. La salida puede ser confusa.


3

hay un script de Python para Clip, ejecútalo así python cliphist.py > clipit.history.txt

#!/usr/bin/env python
"""cliphist.py: utility to print clipit history file.
If an argument is passed on the command line, it will
be used as a separator, otherwise history items are
separated by a blank line. """

import struct, os, sys

homedir  = os.environ['HOME']
histfile = homedir + '/.local/share/clipit/history'
if len(sys.argv) > 1:
    sep = sys.argv[1]
else:
    sep = '---------------------------------------------------------------------'


with open(histfile,'rb') as f:
    f.read(68)
    size,_ = struct.unpack('2i',f.read(8))
    while (size > 0):
        item = f.read(size)
        print item
        _,_,_,size,_ = struct.unpack('5i',f.read(20))
        if size > 0: 
            print sep

no lo he intentado, pero parece correcto y responde la pregunta (con respecto a Clipit)
user7610

2

La última versión de Parcellite tiene un elemento de menú Guardar como al hacer clic en el icono. Esto guardará todas las entradas del historial en un archivo. También hay una pegar todo al hacer clic derecho en la lista de historial, que colocará toda la lista de historial en el portapapeles. Las preferencias tienen un delimitador Pegar todo que colocará al final de cada entrada.

https://sourceforge.net/projects/parcellite/files/parcellite/parcellite-1.1.1/ ppa aquí: https://launchpad.net/~rickyrockrat/+archive/ppa


1

Instale Klipper Clipboard Manager de KDE Instalar klipper y use el siguiente script simple:

text="nothing yet"
cnt=0
while [ "$text" != "" ]; do
  text=`qdbus org.kde.klipper /klipper getClipboardHistoryItem $cnt`
  echo "==== Clipboard content line $cnt:"
  echo "$text"                      # to terminal output
  echo "$text" > /path/to/file      # to file (EDIT this)
  cnt=$((cnt + 1))
done

Nota: Esto no se comporta muy bien en Unity, por lo que parece. Entonces, en otros entornos de escritorio que no sean KDE: su kilometraje puede variar .


FWIW, alguien que tiene problemas con Klipper y Unity: askubuntu.com/questions/439303/…
Sparhawk el

0

usuario Parcellite, haga clic izquierdo en su icono, "borrar", seleccione cuántas veces quiera, luego "edite el portapapeles" y ¡cópielo todo! Recuerde establecer preferencias: use la selección primaria, ¡para que sea más fácil copiar el texto!


Hola acuario Muchas gracias por la respuesta. Sin embargo, cuando hago clic en editar portapapeles solo veo la última palabra que copié y no la lista completa. ¿Quizás contigo funciona de otra manera? Quizás deba configurar algo en las preferencias.
pandisvezia

existe este archivo ~ / .local / share / parcellite / history, el problema es que tiene caracteres no imprimibles en la nueva línea y tal ... puede intentar reemplazarlos / borrarlos automáticamente, pero ahora esto comienza a complicarse ...
Aquarius Power

0

Código modificado de @ stepan-shamaiev para Python 3y sin configuración del separador:

#!/usr/bin/env python3
"""cliphist.py: utility to print clipit history file."""

import struct, os

homedir  = os.environ['HOME']
histfile = homedir + '/.local/share/clipit/history'

with open(histfile,'rb') as f:
  f.read(68)
  size, _ = struct.unpack('2i', f.read(8))
  while size > 0:
    item = f.read(size)
    print(item.decode())
    _,_,_,size,_ = struct.unpack('5i',f.read(20))
    if size > 0: 
      print('------------------')
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.