Clipboard management
29 Jul 2017Думаю, что многие сталкивались с тем что скопировав что-то в буфер обмена,
они потом вспоминали что это не то что им нужно. Особенно это актуально если
используется не подсистема windows или mac os, а X11, где по-умолчанию во
многих DE могут синхронизироваться побочный(SECONDARY
) буфер, который
используется для Ctrl-C/Ctrl-V
. Для борьбы с этой напастью существуют
менеджеры буфера обмена, такие как clipit/parcellite
, gpaste
, klipper
,
clipster
и другие. Я рассмотрю два самых “современных” и удобных для себя на
данный момент: Gpaste
и clipster
. Они интересны тем что на мой взгляд
хорошо соответствуют концепции UNIX-way, где их вывод можно перенаправлять
куда-то ещё: dmenu/rofi
, различные фильтры и тд и тп. Ещё существует
достаточно похожий на clipster
greenclip
. Он интересен тем что сделан на
haskell
, что для многих усложнило бы его разработк, но по моим личным
ощущениями работает он не быстрее чем greenclip
, несмотря на то, что вроде
как код, который генерирует ghc
может быть быстрее.
Тем, кто хочет знать, как это всё настроено, добро пожаловать под кат.
Gpaste
Gpaste это один из менеджеров буфера обмена, который дружит с проектом GNOME
.
Несмотря на это у него есть cli-interface и нет никакой проблемы использовать
его через пайпы, например получать содержимое истории копирования или
добавлять новую. Настраивается он с помощью команды gpaste-client settings
.
У меня все его опции в “General Behaviour” включены, из них особо важными
я считаю синхронизацию между всеми типами буфера обмена. Как известно в X11
их существуют три вида: PRIMARY
, который обычно используется в эмуляторах
терминала и соответствует хоткеям Ctrl-Insert/Shift-Insert
, CLIPBOARD
используется для операций в стиле ms windows вроде Control+C/Control-V
в Firefox, SECONDARY
обычно, насколько я знаю, автоматически заполняется при
выделении какого-либо текста.
Одной из наиболее удобных фич эти менеджеров буфера обмена я как раз считаю автоматическую синхронизацию между различными версиями буфера обмена.
Второй важной возможностью является возможность поиска и взаимодействия по истории. Вот как она выглядит:
Большим достоинством использования rofi в данном случае является то, что он обновляется отдельно от собственно менеджеров буфера обмена, да и вообще любых приложений, которые служат для него источником входных строк, обладает хорошей запуска и поиска, возможностью кастомизации поиска, таких как например сортировка по расстоянию Левенштейна, fuzzy-finding и другие.
По-умолчанию у gpaste нет binding’ов к rofi, но это не проблема. Можно очень просто реализовать взаимодействие с помощью такого скрипта:
Clipster
К сожалению не всех может устроить то что Gpaste тянет за собой довольно солидный пакет зависимостей, которые не нужны тем, кто не пользуется GNOME, также он довольно тяжеловесен, хотя и работает быстро, избыточен по своей функциональности, да и вообще какой-то не UNIX-way’ный. В общем мне он кажется более “правильным” и близким к идеалу. К сожалению он написан на python, так что работает медленнее, чем gpaste, возможно если его переписать на c, то ситуация улучшится, благо объем кода у него меньше 1000 строк и проблем с портированием быть не должно.
Скрипт для взаимодействия с ним примерно такой же как и в случае с gpaste: