Jak skopiować całą historię schowka do pliku tekstowego?

10

Chciałbym wkleić całą swoją historię schowka złożoną ze słów skopiowanych (Ctrl + C / wybór) podczas sesji czytania. Zainstalowałem programy takie jak Glippy i ClipIt, ale nie mogłem wymyślić, jak wkleić wszystkie słowa, jeśli kiedykolwiek istnieje taka opcja w tych programach, kopiuję do prostego pliku tekstowego naraz, nie jednego słowa na raz. Czy ktoś może mi pomóc?

Dziękuję Ci!

pandisvezia
źródło
clipit przechowuje swoją historię w ~ / .local / share / clipit / history, format ma kilka znaków kontrolnych, prawdopodobnie możesz je sed
parsować

Odpowiedzi:

5

Za pomocą tego polecenia możesz zobaczyć niektóre ciągi w pliku historii clipit:

strings ~/.local/share/clipit/history

Ale to nie jest najlepszy sposób. Dane wyjściowe mogą być zniekształcone.

Narcélio Filho
źródło
4

istnieje skrypt Pythona dla ClipIt. Uruchom go w ten sposób 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
Stepan
źródło
jeszcze tego nie próbowałem, ale wygląda to dobrze i odpowiada na pytanie (dotyczące Clipit)
user7610
2

Najnowsza wersja Parcellite ma pozycję menu Zapisz jako po kliknięciu ikony. Spowoduje to zapisanie wszystkich pozycji historii w pliku. Istnieje również wklej wszystko po kliknięciu listy historii prawym przyciskiem myszy, co spowoduje umieszczenie całej listy historii w schowku. Preferencje mają ogranicznik Wklej wszystko, który umieszcza na końcu każdego wpisu.

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

rickyrockrat
źródło
1

Zainstaluj Klipper Clipboard Manager KDE Zainstaluj klipper i użyj następującego prostego skryptu:

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

Uwaga: Wydaje się, że nie zachowuje się to dobrze w Unity. Zatem w środowiskach innych niż KDE: przebieg może się różnić .

gertvdijk
źródło
FWIW, ktoś mający problemy z Klipper i Unity: askubuntu.com/questions/439303/…
Sparhawk
0

użytkownik Parcellite, kliknij lewym przyciskiem myszy jego ikonę, „wyczyść”, wybierz, ile razy chcesz, a następnie „edytuj schowek” i skopiuj wszystko! Pamiętaj, aby ustawić preferencje: użyj zaznaczenia podstawowego, aby ułatwić kopiowanie tekstu!

Moc Wodnika
źródło
Cześć Acquarius! Dziękuję bardzo za odpowiedź. Jednak po kliknięciu przycisku Edytuj schowek widzę tylko ostatnie słowo, które skopiowałem, a nie całą listę. Może z tobą to działa w inny sposób? Może muszę skonfigurować coś w preferencjach.
pandisvezia
jest ten plik ~ / .local / share / parcellite / history, problem polega na tym, że znaki nowej linii nie są drukowalne i takie ... możesz spróbować automatycznie je zastępować / kasować, ale teraz zaczyna się robić bałagan ...
Aquarius Power
0

Zmodyfikowany kod z @ stepan-shamaiev dla Python 3i bez ustawienia separatora:

#!/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('------------------')
Witalij Zdanevich
źródło