По совету коллеги, начал использовать xclip. Очень полезная оказалась штука.
Я работаю под GNOME2, поэтому нижеописанное верно для него. В случае использования другого DE, вам понадобится изменить некоторые шаги.
Первый вариант использования - редактирование любого выделенного текста в vim. Зачем? Вот встретили вы на просторах интернета пример конфигурации. И что вы делаете? Выделяете текст, копируете в буфер (или используете secondary-буфер), открываете любимый редактор (у меня это - vim) вставляете из буфера. А что делаю я? Выделяю текст и нажимаю комбинацию клавиш. Как это реализовано, смотрим ниже.
#!/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 -"
Где:
"xclip -o | vim -"
берёт выделенный текст активного окна, выводит его на стандартное устройство вывода, которое перенаправляется через pipe на стандартное устройство ввода vim."~/bin/vimclip.sh"
gconftool -t string -s /apps/metacity/keybinding_commands/command_8 "/home/user/bin/vimclip.sh"
Путь нужно прописывать полностью. В данном случае, подстановка "~
" не сработает.
gconftool -s -t string /apps/metacity/global_keybindings/run_command_8 "<Alt><Ctrl>P"
Всё. Теперь, находясь, например, в браузере, можно выделить интересующий нас текст, нажать Alt-Ctrl-P и получить новую вкладку guake, названную по заголовку окна, в которой будет открыт vim с интересующим нас текстом. Остаётся только внести свои изменения и сохранить в нужном месте, с нужным именем.
Второй вариант использования делится на два подварианта: поиск выделенного текста в google и перевод выделенного текста в transleate.google. Принцип реализации - тот же.
#!/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}
Кое-что заимствовано с Хараба.
Где:
"~/bin/google_search_xclip.sh"
gconftool -t string -s /apps/metacity/keybinding_commands/command_5 "/home/user/bin/google_search_xclip.sh"
Путь нужно прописывать полностью. В данном случае, подстановка "~
" не сработает.
gconftool -s -t string /apps/metacity/global_keybindings/run_command_5 "<Super>S"
В нашем случае - "Super
" == "Win
".
gconftool -t string -s /apps/metacity/keybinding_commands/command_6 "/home/user/bin/google_search_xclip.sh -t "
gconftool -s -t string /apps/metacity/global_keybindings/run_command_6 "<Super>T"
Что мы получаем теперь?
keybinding_commands
" и "run_command
" приведены для примера. У вас они могут быть заняты другими сопоставлениями, которые будут переназначены выполнением приведённых выше команд. Проверяйте. Например, так:gconftool -a /apps/metacity/keybinding_commands
и
gconftool -a /apps/metacity/global_keybindings | grep run
Всё. Всем спасибо! Все свободны!