Одна из причин почему я люблю KDE — это маленькая иконка ножниц в системном лотке, знак того, что klipper запущен и уже работает для вас.
Основная задача klipper — запоминать историю буфера обмена и давать возможность перемещаться по ней. Таким образом, даже если вы скопировали в буфер несколько отрывков информации нажав Ctrl+C, всегда остаётся возможность вставить любой из них выбрав его в истории и нажав Ctrl+V.
Но о том, что же на самом деле умеет эта скромная на вид программа управления буфером обмена вы узнаете под катом.
Кроме стандартных функций klipper позволяет расширять свою функциональность с помощью bash скриптов, а значит всё, что мы можем делать с содержимым буфера ограничивается лишь нашей фантазией.
Мы рассмотрим лишь несколько наиболее полезных расширений. Сразу скажу, что некоторые из них (даже в более универсальном виде) можно найти на habrahabr, но во первых — в klipper они выглядят проще, а во вторых — я покажу и несколько новых интересных приёмов. Таким образом, мы получим хорошую подборку скриптов для klipper.
Набор полезных скриптов для klipper
Редактируем выделенный текст в kate
Для примера возьмём очень простую задачу — выделенный текст нужно отредактировать в продвинутом текстовом редакторе kate.
Для начала — кликнем по значку klipper и включим действия с буфером обмена отметив соответствующий флажок.
Затем в настройках klipper на вкладке «Действия» — отключим все флажки и добавим новое действие. В свойствах действия оставим поле для регулярного выражения пустым, так как мы хотим, чтоб действие выполнялось для любого текста; отключим флажок «Автоматически», чтобы klipper не предлагал нам отредактировать в kate любой текст из буфера; и назовём его «Edit».
Далее — добавим команду.
Назовём её «Edit with kate». Вывод команды будем игнорировать, поэтому выберем соответствующий пункт в выпадающем меню. Ну и напоследок введём саму команду, которая будет передавать содержимое буфера обмена, обозначаемого как %s
, текстовому редактору kate
echo -n %s | kate -i -l 1 -c 1
Здесь -n
используется, чтоб подавить вывод новой сроки в конце текста, -i
— для чтения данных со стандартного входа, -l 1
и -c 1
— для указания позиции курсора.
Таким образом скопировав произвольный текст в буфер и нажав Ctrl+Alt+R (комбинация по умолчанию, можно сменить на что-то более удобное) мы увидим меню действий klipper
После того как мы выберем нужный нам пункт — Edit with kate, перед нами откроется окно текстового редактора содержащее выделенный текст.
Действия со ссылками
Встречая в тексте ссылку нам часто нужно перейти по ней или просто скачать файл на который эта ссылка указывает. Для облегчения этих действий создадим в klipper новое действие под названием Link. Потребуем, чтоб это действие было доступно только для ссылок, для этого напишем для него регулярное выражение (я особо не заморачивался, уверен, вы напишете лучше)
[htf]*p[s]*://.*
и отключим автоматическое выполнение этого действия.
Далее — добавим две команды. Одну — для перехода по ссылке, а вторую — для скачивания файла. В обоих случаях будем игнорировать вывод команды и дадим им понятные описания.
Открываем ссылку в новой вкладке в firefox
firefox -new-tab %s
Получаем файл с помощью wget
wget -qcP ~/Загрузки %s
В последнем случае удобно добавить оповещение о конце загрузки с помощью kdialog
wget -qcP ~/Загрузки %s; kdialog --title "Download completed" --passivepopup "Downloaded file $(echo %s | grep -o "[^/]*" | tail -n 1)" 2
Хотя и в этом случае проверять загрузился ли файл успешно придётся вручную. Ссылка на более продуманную и полную версию скрипта (который тем не менее лучше не записывать в одну строчку) содержится в конце статьи.
Устраняем проблему с раскладками
«Ghbdtn! Rfr ltkf&» — эти слова наверняка знакомы каждому, и если со своей стороны можно научится методу слепой печати, поставить xneur или как минимум управлять раскладками на уровне окон, то уберечь себя от других — шансов нет. Справится с этой проблемой нам снова поможет klipper.
Создадим действие под именем Transcode, годящееся для любого текста и запускающееся вручную. Добавим в это действие две команды — перекодировка с английского на русский и наоборот. Дадим этим командам осмысленное описание и выставим значение поля «Вывод команды» в «Скопировать в буфер обмена». Сами команды будут иметь вид
echo -n %s | sed "y/qwerty/йцукен/"
тут sed проведёт посимвольную замену qwerty на йцукен (ссылки на полные версии команд даны в конце статьи).
Словарь
Во время написания диссертации, мне часто приходится переводить свои статьи с английского языка на украинский и наоборот. И если текст в целом переводится довольно гладко, то с отдельными словами иногда приходится помучиться, подыскивая подходящие синонимы. Klipper может нам помочь и в этом нелёгком деле.
Создадим в домашней папке директорию scripts и перепишем туда файл dict_en_ru.sh (ссылка на него дана в конце статьи). В klipper создадим новое действие, назовём его Dictionary. Оставим поле для регулярного выражения пустым и уберём флажок «Автомаически». Затем добавим новую команду, назовём её Translate a word from English to Russian. Вывод команды как и в предыдущем примере будем копировать в буфер обмена. Сама команда будет ничем иным как запуском нашего скрипта
bash ~/scripts/dict_en_ru.sh %s
Аналогичные действия проводим для обратного направления перевода (если нужно правим переменные FROM_LANG и TO_LANG в скрипте и меняем языки перевода)
Ниже представлено описание работы скрипта
- Выделяем слово или предложение, жмём Ctrl+Alt+R и выбираем из списка команд — Translate a word from English to Russian
- Скрипт берёт первое слово из выделения
- Делает запрос к translate.google.com для перевода
- Разбирает ответ и выбирает из него разные значения перевода для нужного слова
- Выводит результат с помощью kdialog в виде списка возможных переводов
- При щелчке на OK выделенный вариант перевода копируется в буфер обмена и может быть вставлен в текст с помощью комбинации Ctrl+V
Вот как это выглядит
Ну вот на сегодня и всё. В следующий раз мы научим klipper новым фокусам и если вам понравится — продолжим развивать тему скриптов в KDE.
Ссылки на скрипты
download.sh
transcode_ru_en.sh
transcode_en_ru.sh
dict_ru_en.sh
dict_en_ru.sh
Ищите красивые коленки, пишите скрипты и оставайтесь с нами!
Автор: Large