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

    Эдвард руки-ножницы
    Одна из причин почему я люблю 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

    Ищите красивые коленки, пишите скрипты и оставайтесь с нами!
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 10

      0
      Спасибо, не знал, что в klipper можно добавлять свои скрипты! Первый скрипт понравился, сделаю себе нечто подобное для kwrite.
        0
        Жаль, что только однострочники и не хватает иногда горячих клавиш (нужно feature request написать)

        Для kwrite используйте --stdin для чтения со стандартного входа и параметры --line, --column для установки курсора
          0
          Спасибо, попробую!
        +1
        Кстати для гномоводов есть parcellite.
          0
          Я пользую Cairo-Dock и в нем есть апплет «Clipboard History» написано на ярлыке, но сам он вроде называется Clipper, а вообще еще много разных встречал(включая встраиваемые как индикатор в панель итд).
            0
            Этот самый адекватный из всех.
            0
            Он как бы немного заброшен, развивается его форк — clipit: clipit.rspwn.com/
              0
              Вобщем-то в и нечего развивать-то.
                0
                Ну хотя бы ошибки исправляются. Но функционал там тоже добавляется.
            0
            Спасибища за статью! Обязательно продолжайте!

            Only users with full accounts can post comments. Log in, please.