Скрипты на коленке — приручаем klipper Часть 1

в 19:16, , рубрики: bash, kde, linux, метки: , ,

Эдвард руки-ножницы
Одна из причин почему я люблю KDE — это маленькая иконка ножниц в системном лотке, знак того, что klipper запущен и уже работает для вас.

Основная задача klipper — запоминать историю буфера обмена и давать возможность перемещаться по ней. Таким образом, даже если вы скопировали в буфер несколько отрывков информации нажав Ctrl+C, всегда остаётся возможность вставить любой из них выбрав его в истории и нажав Ctrl+V.

Но о том, что же на самом деле умеет эта скромная на вид программа управления буфером обмена вы узнаете под катом.

Кроме стандартных функций klipper позволяет расширять свою функциональность с помощью bash скриптов, а значит всё, что мы можем делать с содержимым буфера ограничивается лишь нашей фантазией.

Мы рассмотрим лишь несколько наиболее полезных расширений. Сразу скажу, что некоторые из них (даже в более универсальном виде) можно найти на habrahabr, но во первых — в klipper они выглядят проще, а во вторых — я покажу и несколько новых интересных приёмов. Таким образом, мы получим хорошую подборку скриптов для klipper.

Набор полезных скриптов для klipper

Редактируем выделенный текст в kate

Для примера возьмём очень простую задачу — выделенный текст нужно отредактировать в продвинутом текстовом редакторе kate.

Для начала — кликнем по значку klipper и включим действия с буфером обмена отметив соответствующий флажок.

Затем в настройках klipper на вкладке «Действия» — отключим все флажки и добавим новое действие. В свойствах действия оставим поле для регулярного выражения пустым, так как мы хотим, чтоб действие выполнялось для любого текста; отключим флажок «Автоматически», чтобы klipper не предлагал нам отредактировать в kate любой текст из буфера; и назовём его «Edit».

Далее — добавим команду.
Скрипты на коленке — приручаем klipper Часть 1
Назовём её «Edit with kate». Вывод команды будем игнорировать, поэтому выберем соответствующий пункт в выпадающем меню. Ну и напоследок введём саму команду, которая будет передавать содержимое буфера обмена, обозначаемого как %s, текстовому редактору kate

echo -n %s | kate -i -l 1 -c 1

Здесь -n используется, чтоб подавить вывод новой сроки в конце текста, -i — для чтения данных со стандартного входа, -l 1 и -c 1 — для указания позиции курсора.

Таким образом скопировав произвольный текст в буфер и нажав Ctrl+Alt+R (комбинация по умолчанию, можно сменить на что-то более удобное) мы увидим меню действий klipper
Скрипты на коленке — приручаем klipper Часть 1
После того как мы выберем нужный нам пункт — 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 Часть 1

Ну вот на сегодня и всё. В следующий раз мы научим klipper новым фокусам и если вам понравится — продолжим развивать тему скриптов в KDE.

Ссылки на скрипты
download.sh
transcode_ru_en.sh
transcode_en_ru.sh
dict_ru_en.sh
dict_en_ru.sh

Ищите красивые коленки, пишите скрипты и оставайтесь с нами!

Автор: Large

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js