Документ создан: 24.07.2012

"Плюшки" с помощью xclip.

По совету коллеги, начал использовать xclip. Очень полезная оказалась штука.
Я работаю под GNOME2, поэтому нижеописанное верно для него. В случае использования другого DE, вам понадобится изменить некоторые шаги.

Редактирование выделения в vim.

Первый вариант использования - редактирование любого выделенного текста в vim. Зачем? Вот встретили вы на просторах интернета пример конфигурации. И что вы делаете? Выделяете текст, копируете в буфер (или используете secondary-буфер), открываете любимый редактор (у меня это - vim) вставляете из буфера. А что делаю я? Выделяю текст и нажимаю комбинацию клавиш. Как это реализовано, смотрим ниже.

  1. Пишем скрипт:
    vimclip.sh
    #!/bin/bash
     
    title=$(xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_CLASS | sed -re 's/[^,]*,[^"]*"([^"]*)".*/\1/')
     
    guake -n vim -r ${title} -t -e "xclip -o | vim -"

    Где:

    • Формируем title - заголовок активного окна, которым будет названа вкладка guake;
    • Создаём новую вкладку guake, даём ей имя из ${title} и говорим gauke'у, что нужно стать видимым и просто необходимо выполнить команду;
    • Команда "xclip -o | vim -" берёт выделенный текст активного окна, выводит его на стандартное устройство вывода, которое перенаправляется через pipe на стандартное устройство ввода vim.
      Если запустить этот скрипт из командной строки, то будет запущен vim с тем текстом, который был выделен.
  2. Сохраняем этот файл, например, как "~/bin/vimclip.sh"
  3. Назначаем его в качестве команды keybinding_commands:
    gconftool -t string -s /apps/metacity/keybinding_commands/command_8 "/home/user/bin/vimclip.sh"

    Путь нужно прописывать полностью. В данном случае, подстановка "~" не сработает.

  4. Назначаем комбинацию клавиш:
    gconftool -s -t string /apps/metacity/global_keybindings/run_command_8 "<Alt><Ctrl>P"

Всё. Теперь, находясь, например, в браузере, можно выделить интересующий нас текст, нажать Alt-Ctrl-P и получить новую вкладку guake, названную по заголовку окна, в которой будет открыт vim с интересующим нас текстом. Остаётся только внести свои изменения и сохранить в нужном месте, с нужным именем.

Поиск в google или перевод им же.

Второй вариант использования делится на два подварианта: поиск выделенного текста в google и перевод выделенного текста в transleate.google. Принцип реализации - тот же.

  1. Пишем скрипт:
    google_search_xclip.sh
    #!/bin/bash
     
    arg=$(xclip -o | sed -re ':a; /$/N; s/\n//; ta;' | sed -re 's/  */+/g;')
     
    case $1 in
    	t)
    		url="http://translate.google.ru/?source=osdd#auto|auto|${arg}"
    		;;
    	s|*)
    		url="http://www.google.ru/search?hl=ru&q=${arg}";
    		;;
    esac
     
    /usr/bin/google-chrome ${url}

    Кое-что заимствовано с Хараба.
    Где:

    • Преобразуем выделенный текст в одну строку и помещаем его в arg (не тестировал на очень больших объёмах);
    • В зависимости от аргумента, формируем url поиска или перевода;
    • Запускаем google-chrome с полученным url.
  2. Сохраняем этот файл, например, как "~/bin/google_search_xclip.sh"
  3. Назначаем его в качестве команды keybinding_commands (поиск):
    gconftool -t string -s /apps/metacity/keybinding_commands/command_5 "/home/user/bin/google_search_xclip.sh"

    Путь нужно прописывать полностью. В данном случае, подстановка "~" не сработает.

  4. Назначаем комбинацию клавиш:
    gconftool -s -t string /apps/metacity/global_keybindings/run_command_5 "<Super>S"

    В нашем случае - "Super" == "Win".

  5. Назначаем его в качестве команды keybinding_commands (перевод):
    gconftool -t string -s /apps/metacity/keybinding_commands/command_6 "/home/user/bin/google_search_xclip.sh -t "
  6. Назначаем комбинацию клавиш:
    gconftool -s -t string /apps/metacity/global_keybindings/run_command_6 "<Super>T"

Что мы получаем теперь?

  1. Если, при выделенном тексте, нажать Win-S, запустится google-chrome (или откроется новая вклада) с переходом на google.ru и передачей выделенного текста в качестве аргумента поиска.
  2. При выделенном тексте, нажатие Win-T приведёт к запуску google-chrome (или открытию новой вкладки) с переходом на translate.google.ru и передачей выделенного текста в качестве текста для перевода.

Примечания

  1. Текст может быть выделен в любом окне приложения, запущенного из-под иксов: guake, terminal, pidgin, lotus notes и т.п. При работе с Lotus Notes есть нюанс - не работает secondary-буфер, поэтому нужно выделить текст и скопировать его в буфер обычным способом, после чего нажать необходимую комбинацию клавиш.
  2. Номера "keybinding_commands" и "run_command" приведены для примера. У вас они могут быть заняты другими сопоставлениями, которые будут переназначены выполнением приведённых выше команд. Проверяйте. Например, так:
    gconftool -a /apps/metacity/keybinding_commands

    и

    gconftool -a /apps/metacity/global_keybindings | grep run

Всё. Всем спасибо! Все свободны!

 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate