Como copiar todo o histórico da área de transferência para um arquivo de texto?


10

Gostaria de colar todo o histórico da área de transferência, consistindo em palavras copiadas (Ctrl + C / por seleção) durante minhas sessões de leitura. Instalei programas como o Glippy e o ClipIt, mas não consegui descobrir como colar todas as palavras. Se houver essa opção nesses programas, copio para um arquivo de texto simples de uma só vez, não uma palavra de cada vez. Alguém pode me ajudar?

Obrigado!


lojas CLIPit sua história em ~ / .local / share / CLIPit / história, o formato tem alguns caracteres de controle, você provavelmente poderá analisá-los para fora com sed, mas isso é um pouco complicado
bartekbrak

Respostas:


5

Você pode ver algumas strings no arquivo de histórico do clipit com este comando:

strings ~/.local/share/clipit/history

Mas não é o melhor caminho. A saída pode estar distorcida.


3

existe um script python para o ClipIt, execute-o assim 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

não tentei isso, mas parece certo e responde à pergunta (sobre CLIPit)
user7610

2

A versão mais recente do Parcellite possui um item de menu Salvar como ao clicar no ícone. Isso salvará todas as entradas do histórico em um arquivo. Também existe uma pasta tudo ao clicar com o botão direito do mouse na lista de histórico, que colocará toda a lista de histórico na área de transferência. As preferências têm um delimitador Colar tudo que ele colocará no final de cada entrada.

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


1

Instale o Klipper Clipboard Manager do KDE Instalar o klipper e use o seguinte script simples:

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: Isso não se comporta muito bem no Unity, ao que parece. Portanto, em outros ambientes de desktop que não o KDE: sua milhagem pode variar .


FWIW, alguém ter problemas com Klipper e Unidade: askubuntu.com/questions/439303/...
Sparhawk

0

usuário Parcellite, clique com o botão esquerdo em seu ícone, "clear", selecione quantas vezes quiser, depois "edit clipboard" e copie tudo! Lembre-se de definir a preferência: use a seleção primária, para facilitar a cópia do texto!


Oi Acquarius! Muito obrigado pela resposta. No entanto, quando clico em editar a área de transferência, vejo apenas a última palavra que copiei e não a lista inteira. Talvez com você funcione de outra maneira? Talvez eu deva configurar algo nas preferências.
Pandisvezia

existe esse arquivo ~ / .local / share / parcellite / history, o problema é que ele possui caracteres não imprimíveis para nova linha e tal .. você pode tentar substituí-los / apagá-los automaticamente, mas agora isso começa a ficar confuso ...
Aquarius Power

0

Código modificado de @ stepan-shamaiev para Python 3e sem a configuração do 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('------------------')
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.