Доступный для поиска менеджер по Буферу обмена, как ctrl-r в ударе

Я ищу менеджера по буферу обмена с функциональностью поиска. Я люблю CtrlR в bash окружите и хотел бы иметь ту же функциональность как этот в менеджере по буферу обмена для моего рабочего стола.

До сих пор я использовал diodon, но эта функция не существует в diodon. Посмотрите связанный вопрос там https://answers.launchpad.net/diodon / + вопрос/403507

Вариант использования:

  • Я copy+pasted "интернационализация" прежде.
  • Я ввожу следующий текст.
  • Я хочу вставить "интернационализацию" снова.
  • Я поразил некоторое волшебное нажатие клавиши. Затем "предайте земле", и затем я хочу видеть список всех строк I copy+pasted в течение прошлых дней.
  • Я выбираю тот, который я хочу.Готово.

С diodon Я получаю длинный список последних соответствий, это хорошо, но не прекрасно.

7
задан 31 March 2017 в 19:52

5 ответов

Рекомендации из Спрашивают Ubuntu

От этого ( менеджер по Буферу обмена для Ubuntu 16.04 ), мы учимся от пользователей:

  • Clipit является лучшим среди всех.
  • CopyQ является межплатформенным, хорошо разработанным и полнофункциональным менеджером буфера обмена (мой фаворит). Это показывает среди других (очень удобный) интерфейс командной строки.

От этого ( менеджер по Буферу обмена Ubuntu 14.04? ), мы учимся от пользователей:

  • Glipper является менеджером по буферу обмена, он может быть установлен от Центра программного обеспечения.
  • я использую , ClipIt является ветвлением Parcelite с интеграцией меню Ubuntu. (Этот пакет был перечислен в первом разделе выше)
  • я использую GPaste
  • , который можно попробовать Keepboard. Это просто в использовании и, кажется, стабильно и надежно.
  • Diodon является другим хорошим вариантом, доступным и для GTK и для Единицы. Работы в значительной степени как другие в ответах, уже данных. Однако можно искать недавние 'клипы' с помощью Тире. (Вы уже используете эту версию, хотя и не любят его.)
  • я использую Clippy, docklet, который работает с Доской (я не использую Единицу). Я думаю, что Clippy также идет с Docky.

Рекомендации за пределами Просят, чтобы Ubuntu

Не была превзойдена пользователями Ubuntu, которых это ( tecmint.com - 10 лучших менеджеров по буферу обмена для Linux) рекомендует:

  • CopyQ является усовершенствованным менеджером по буферу обмена, который доступен на большинстве если не все платформы.
  • GPaste является мощным и великим менеджером по буферу обмена для основанных на GNOME дистрибутивов, но может работать над множеством настольных сред также
  • , Diodon является легким весом но мощным менеджером буфера обмена, разработанным для работы лучше всего при интеграции с Единицей и Рабочими средами GNOME. (Еще раз Вам не нравится этот пакет)
  • Pastie является простым менеджером по буферу обмена для Ubuntu и использует AppIndicator. Это имеет некоторые замечательные функции.
  • Parcellite является разделенным вниз, легким GTK+2, менеджером по буферу обмена основных характеристик для Linux.
  • Glipper является инструментом управления буфера обмена для Рабочей среды GNOME, пользователи могут расширить ее функциональность с помощью плагинов. Это теперь использует Индикатор приложения для поддержки Единицы и настольных сред Классика Gnome в Ubuntu.
  • Clipit является легким GTK + менеджер по буферу обмена. Это многофункционально и на самом деле разветвлено от Parcellite, но включает некоторые дополнительные функции и исправления ошибок.
  • Keepboard является межплатформенным менеджером по буферу обмена, который позволяет пользователям сохранять историю буфера обмена.
  • я удалил некоторых из списка те, которые не работают с Ubuntu. Таким образом, это не составляет в целом 10 в заголовке статьи.

существуют другие обзоры тех же пакетов, упомянутых выше найденный в ( makeuseof.com - 6 Инструментов для управления буфером обмена Linux ) и в (, maketecheasier.com - Улучшает буфер обмена Linux с менеджером по буферу обмена ).

Сводка

В конце дня пакет, который Вы выбираете, является тем, которым Вы являетесь самыми довольными. Никто не может сказать наверняка, какой пакет, который будет. Почти все они предлагают доступную для поиска историю как Вы, хотят это, но какой интерфейс лучше всего настроил к Вашему образу мыслей?

4
ответ дан 23 November 2019 в 06:18

Приложение unity-scope-diodon поддерживает это.

, Но интерфейс не способ, которым мне нравится он:

, Если я совершил нападки превосходный, мои глаза видят 12*7 = 84 раза тот же большой значок, которым я не интересуюсь вообще.

было бы хорошо, если сам diodon будет поддерживать это.

0
ответ дан 23 November 2019 в 06:18

Введение

Как указано в комментариях, я записал простой индикатор менеджера по буферу обмена с использованием Python 3 и некоторых zenity диалоговые окна, который позволяет управлять содержанием буфера обмена, а также имеет функциональность поиска.

Функциональность поиска, в частности, использует Python re модуль, что означает Вас, может использовать regex выражения для более мелкомодульного поиска. Каждый ввод текста имеет 4 опции в своем подменю: вставьте текст в буфер обмена, добавьте текст в конец того, что в настоящее время находится в cliboard, предварительно ожидайте текст к началу текущего содержания и удалите его из истории.

Установка

В терминале, выполненном следующие команды:

sudo add-apt-repository ppa:1047481448-2/sergkolo
sudo apt-get update
sudo apt-get install indicator-bulletin

Демонстрация

В анимации ниже Вас видят демонстрацию скопированного текста, буфер обмена, добавленный к с индикатором, и наконец тестовая строка ищется через простое поисковое диалоговое окно. Найденное содержание отображено в простом текстовом диалоговом окне представления с меткой времени в локали пользователя (если это установлено). Найденный текст затем может быть скопирован через выбор текста и использование стандартного ярлыка Ctrl+C. enter image description here

В случае, если кто-либо задается вопросом:

Дальнейшее развитие

Индикатор был сделан за один день, таким образом это является довольно минималистическим по своей природе с прямо сейчас. В будущем будут добавленные дополнительные опции, такие как предпочтительное диалоговое окно. Длина меню и текстовая ширина в настоящее время трудно кодируются к 10 объектам в индикаторе и 30 символам макс. для каждой записи.

Если Вы хотите сделать запрос новых функций, отправьте билет проблемы на странице GitHub проекта, где ее исходный код также доступен.

Обновления:

Февраль 14,2017:

  • Реализованная операционная опция файла - загрузка текстового файла в буфер обмена и запись содержания буфера обмена в файл.
  • Реализованный диапазон отображения записей по дате. Опция призывает zenity диалоговое окно форм, которое требует запуска и конечной даты в YYYY/MM/DD/HH:SS формат. Эффективно, это - показания в диапазоне дат, то же как это
  • свяжите исправления ошибок

Февраль 15,2017:

  • Добавленное подменю редактирования. Пользователи теперь могут преобразовать содержание буфера обмена в верхний / нижний регистр, слова/символы для обрезки с начала или конца текста, и заменить выражения (использует Python re regex).

Февраль 17,2017:

  • Добавленная опция для открытия объекта истории в текстовом файле (подобный bash fcedit). До сих пор это только открывает набор программы по умолчанию для типа файла простого текста.
  • улучшения пары и исправления ошибок.

Февраль 19,2017:

  • Добавленные base64 операции (кодируют/декодируют).

3-го марта 2017:

  • Добавленное "Подменю Pinned" и способность "прикрепить" определенные объекты из истории буфера обмена. Кодируйте пересмотренные, определенные части, переписанные для повторного использования.
5
ответ дан 23 November 2019 в 06:18

1. Минималистическая утилита буфера обмена для быстрого поиска (динамично обновленный) истории буфера обмена

С установкой ниже, чрезвычайно легко искать недавно скопированный (строки с) текст и вставить его двойным щелчком в Ваши документы. Установка не является самой простой из всех (в настоящее время), использование чрезвычайно просто все же.

Как это работает на практике

  1. Нажмите ярлык, маленькое окно появляется:

    enter image description here

  2. Введите один или несколько символов для ограничения выбора:

    enter image description here

  3. Дважды щелкните по строке, которую требуется вставить:

    enter image description here

  4. Строка вставляется в Вашем документе, окно закрывает себя:

    enter image description here

Настроить

Установка включает два маленьких сценария

сценарий 1; фоновый сценарий для наблюдения за изменениями в буфере обмена

import time
import pyperclip
import os

# set the minimum length of a string to be listed
minlength = 3
# set the number of recently copied strings to be remembered
size = 500

clipdb = os.path.join(os.environ["HOME"], ".wordlist")

def update_words(words):
    try:
        currwords = open(clipdb).read().splitlines()
    except FileNotFoundError:
        currwords = []
    add = list(set(words.split()))
    newwords = [s for s in add+currwords if len(s) >= minlength][:size]
    open(clipdb, "wt").write("\n".join(newwords))

clp1 = ""

while True:
    time.sleep(0.2)
    clp2 = pyperclip.paste()
    if clp2 != clp1:
        update_words(clp2)
    clp1 = clp2

сценарий 2; звонить от сочетания клавиш

#!/usr/bin/env python3
import subprocess
import os
import sys
from tkinter import*
from operator import itemgetter
import pyperclip
import time

def sortlist(l):
    low = sorted(list(enumerate([s.lower() for s in set(l)])), key=itemgetter(1))
    return [l[i] for i in [item[0] for item in low]]   

def limit(*args):
    listbox.delete(0, END)
    for w in [s for s in show if s.lower().startswith(insert.get())]:
        listbox.insert(END, w)

def getpaste(*args):
    test = listbox.get(ACTIVE)
    pyperclip.copy(test)
    master.destroy()
    subprocess.Popen(["xdotool", "key", "Control_L+v"])

clipdb = os.path.join(os.environ["HOME"], ".wordlist")

try:
    currwords = open(clipdb).read().splitlines()
except FileNotFoundError:
    pass
else:   
    show = sortlist(currwords)
    master = Tk()
    master.resizable(False, False)
    master.title("Insert")
    listbox = Listbox(
        master,
        highlightbackground = "white",
        highlightthickness=0,
        highlightcolor="blue",
        relief=FLAT,
        )
    listbox.bind(
        "<Double-Button-1>",
        getpaste,
        )
    listbox.pack()
    insert = Entry(
        master,
        highlightbackground = "white",
        highlightthickness=1,
        highlightcolor="#C8C8C8",
        relief=FLAT,
        )
    insert.pack()
    insert.bind("<KeyRelease>", limit)
    insert.focus_set()

    for item in show:
        listbox.insert(END, item)
    mainloop()

Как настроить

  1. Потребности сценария python3-pyperclip, python3-tkinter и xdotool:

    sudo apt-get install xdotool python3-pyperclip python3-tkinter
    
  2. Сценарий 1 копии в пустой файл, сохраните его как watch_clipboard.py
  3. Сценарий 2 копии в пустой файл, сохраните его как paste_recent.py
  4. (Тест-) выполненный сценарий 1 как фоновый сценарий с командой:

    python3 /path/to/watch_clipboard.py
    

    Начните копировать tekst, который автоматически помнят (до произвольного числа строк, помня последние строки n-).

  5. Добавьте сценарий 2 к ярлыку: выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:

    python3 /path/to/paste_recent.py
    

    Открытый a gedit окно и вызов небольшое окно с Вашим ярлыком и использование утилита, как объяснено во введении.

  6. Если все хорошо работает, добавьте сценарий 1 для Запущения Приложений: Тире> Приложения Запуска> Добавляет. Добавьте команду:

    python3 /path/to/watch_clipboard.py
    

Опции

В главном разделе сценария можно установить минимальную длину строки, чтобы быть перечисленными в истории буфера обмена (количество символов):

minlength = 1

Кроме того, можно установить, сколько строк должно быть сохранено в истории (размер базы данных):

size = 500

Примечания

  • В настоящее время утилита работает со всеми приложениями, которые совместимы с Ctrl+Alt+V. Версия ниже также вставляет в gnome-terminal.

2. Версия индикатора (единственный сценарий, простая установка) с дополнительным сочетанием клавиш, также вставляя правильно в терминале гнома

enter image description here

#!/usr/bin/env python3
import subprocess
import os
import time
import signal
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3
from threading import Thread
import pyperclip
import sys
from tkinter import*
from operator import itemgetter

#---
clipdb = os.path.join(os.environ["HOME"], ".wordlist")
minlength = 5
size = 500

arg = sys.argv[1]
pyperclip.copy("")

def get(cmd): return subprocess.check_output(cmd).decode("utf-8").strip()

def check_terminal():
    return get(["xdotool", "getwindowfocus"]) in get(["xdotool", "search", "--class", "terminal"])

def getfromfile():
    try:
        return open(clipdb).read().splitlines()
    except FileNotFoundError:
        return []

def update_words(words):
    currwords = getfromfile()
    add = list(set(words.split()))
    newwords = [s for s in add+currwords if len(s) >= minlength][:size]
    open(clipdb, "wt").write("\n".join(newwords))

class SearchClip():

    def __init__(self):
        self.currwords = list(set(getfromfile()))
        self.showwin()

    def sortlist(self, l):
        low = sorted(list(enumerate([s.lower() for s in set(l)])), key=itemgetter(1))
        return [l[i] for i in [item[0] for item in low]]

    def limit(self, *args):
        self.listbox.delete(0, END)
        for w in [s for s in self.show if s.lower().startswith(self.insert.get())]:
            self.listbox.insert(END, w)

    def getpaste(self, *args):
        test = self.listbox.get(ACTIVE)
        pyperclip.copy(test)
        self.master.destroy()
        time.sleep(0.2)
        cmd = ["xdotool", "key", "Control_L+Shift+v"] if\
              check_terminal() else ["xdotool", "key", "Control_L+v"]
        subprocess.Popen(cmd)

    def showwin(self):
        self.show = self.sortlist(self.currwords)
        self.master = Tk()
        self.master.resizable(False, False)
        self.master.title("Insert")
        self.listbox = Listbox(
            self.master,
            highlightbackground = "white",
            highlightthickness=0,
            highlightcolor="blue",
            relief=FLAT,
            )
        self.listbox.bind(
            "<Double-Button-1>",
            self.getpaste,
            )
        self.listbox.pack()
        self.insert = Entry(
            self.master,
            highlightbackground = "white",
            highlightthickness=1,
            highlightcolor="#C8C8C8",
            relief=FLAT,
            )
        self.insert.pack()
        self.insert.bind("<KeyRelease>", self.limit)
        self.insert.focus_set()
        for item in self.show:
            self.listbox.insert(END, item)
        mainloop()

class ClipTrip():

    def __init__(self):
        self.app = "ClipTrip"
        iconpath = "mail-attachment"
        self.indicator = AppIndicator3.Indicator.new(
            self.app, iconpath,
            AppIndicator3.IndicatorCategory.OTHER)
        self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)       
        self.indicator.set_menu(self.create_menu())        
        self.watchclip = Thread(target=self.clipwatch)
        self.watchclip.setDaemon(True)
        self.watchclip.start()

    def clipwatch(self):
        clp1 = ""
        while True:
            time.sleep(0.2)
            clp2 = pyperclip.paste()
            if clp2 != clp1:
                update_words(clp2)
            clp1 = clp2

    def create_menu(self):
        self.menu = Gtk.Menu()
        self.item_search = Gtk.MenuItem('Search clipboard history')
        self.item_search.connect('activate', run_search)
        self.menu.append(self.item_search)
        menu_sep = Gtk.SeparatorMenuItem()
        self.menu.append(menu_sep)
        self.item_quit = Gtk.MenuItem('Quit')
        self.item_quit.connect('activate', self.stop)
        self.menu.append(self.item_quit)
        self.menu.show_all()
        return self.menu

    def stop(self, source):
        Gtk.main_quit()

def run_search(*args):
    SearchClip()

if arg == "run":
    ClipTrip()
    signal.signal(signal.SIGINT, signal.SIG_DFL)
    Gtk.main()
elif arg == "search":
    run_search()

Настроить

Эта версия имеет в значительной степени ту же функциональность как сценарии в [1], но как индикатор и более простой настроить:

  1. Как в опции 1, потребностях сценария python3-pyperclip, python3-tkinter и xdotool:

    sudo apt-get install xdotool python3-pyperclip python3-tkinter
    
  2. Скопируйте сценарий в пустой файл, сохраните как history_indicator.py

  3. Выполните его командой:

    python3 /path/to/history_indicator.py run
    

    запустить индикатор + фоновый сценарий. Выберите историю буфера обмена Search из меню для вызова небольшого окна.

    или

    Для вызова окна альтернативным способом работать

    python3 /path/to/history_indicator.py search
    
4
ответ дан 23 November 2019 в 06:18

CopyQ является удивительным усовершенствованным менеджером по буферу обмена Linux. Это имеет тонны ценных функций (включая Ctrl-R как поиск).

Установка:

$ sudo add-apt-repository ppa:hluk/copyq
$ sudo apt update
$ sudo apt install copyq

И добавьте глобальный ярлык для вставки:

Значок панели задач> Предпочтения> Вкладка Ярлыков> Пользовательские действия и Глобальные Ярлыки..> Главное окно Add> Show/hide

0
ответ дан 23 November 2019 в 06:18

Другие вопросы по тегам:

Похожие вопросы: