Сегодня на одном из ресурсов, посвященный убунту, в теме про unity наткнулся на такой коммент: «Когда уже починят копировать/вставить…
Или только у меня странную фигню вставляет вместо текста…».
Зачем ждать, когда можно починить всё своими силами ;)
Если кто не в курсе, то в dash панель текст вставляется в виде квадрата. Хотя возможно нас таких только двое… Ладно, в любом случае исправим проблему.
Для начала устанавливаем пакет xdotool
sudo apt-get install xdotool
теперь создаём файл для скрипта, для удобства в папке bin(или в любой другой)
mkdir ~/bin
gedit ~/bin/dash
Вставляем следующий текст:
#!/bin/bash
#заносим в переменную выделенный тест
n=`xclip -o`
#заменяем пробел на space
n=`echo $n | sed -e "s/[ ]/space/g"`
#меняем каждую цифру на её копию, но с пробелом
n=`echo $n | sed -e 's/0/0 /g'`
n=`echo $n | sed -e 's/1/1 /g'`
n=`echo $n | sed -e 's/2/2 /g'`
n=`echo $n | sed -e 's/3/3 /g'`
n=`echo $n | sed -e 's/4/4 /g'`
n=`echo $n | sed -e 's/5/5 /g'`
n=`echo $n | sed -e 's/6/6 /g'`
n=`echo $n | sed -e 's/7/7 /g'`
n=`echo $n | sed -e 's/8/8 /g'`
n=`echo $n | sed -e 's/9/9 /g'`
#повторяем это с латинскими буквами, а также переводим в нижний регистр
n=`echo $n | sed -e 's/a/a /gi'`
n=`echo $n | sed -e 's/b/b /gi'`
n=`echo $n | sed -e 's/c/c /gi'`
n=`echo $n | sed -e 's/d/d /gi'`
n=`echo $n | sed -e 's/e/e /gi'`
n=`echo $n | sed -e 's/f/f /gi'`
n=`echo $n | sed -e 's/g/g /gi'`
n=`echo $n | sed -e 's/h/h /gi'`
n=`echo $n | sed -e 's/i/i /gi'`
n=`echo $n | sed -e 's/j/j /gi'`
n=`echo $n | sed -e 's/k/k /gi'`
n=`echo $n | sed -e 's/l/l /gi'`
n=`echo $n | sed -e 's/m/m /gi'`
n=`echo $n | sed -e 's/n/n /gi'`
n=`echo $n | sed -e 's/o/o /gi'`
n=`echo $n | sed -e 's/p/p /gi'`
n=`echo $n | sed -e 's/q/q /gi'`
n=`echo $n | sed -e 's/r/r /gi'`
n=`echo $n | sed -e 's/s/s /gi'`
n=`echo $n | sed -e 's/t/t /gi'`
n=`echo $n | sed -e 's/u/u /gi'`
n=`echo $n | sed -e 's/v/v /gi'`
n=`echo $n | sed -e 's/w/w /gi'`
n=`echo $n | sed -e 's/x/x /gi'`
n=`echo $n | sed -e 's/y/y /gi'`
n=`echo $n | sed -e 's/z/z /gi'`
#добавляем спецсимволы
n=`echo $n | sed -e "s/-/minus /g"`
n=`echo $n | sed -e "s/[/]/slash /g"`
n=`echo $n | sed -e "s/[]/backslash /g"`
n=`echo $n | sed -e "s/[+]/plus /g"`
n=`echo $n | sed -e "s/[~]/Shift+grave /g"`
n=`echo $n | sed -e "s/[']/apostrophe /g"`
n=`echo $n | sed -e "s/[.]/period /g"`
n=`echo $n | sed -e 's/["]/Shift+apostrophe /g'`
n=`echo $n | sed -e "s/[$]/Shift+4 /g"`
n=`echo $n | sed -e "s/[;]/semicolon /g"`
n=`echo $n | sed -e "s/[?]/question /g"`
n=`echo $n | sed -e "s/[=]/21 /g"`
#правим ошибки
n=`echo $n | sed -e 's/s p a c e /space /g'`
#запускаем Выполнить команду(Alt+F2)
sleep 1 &&
xdotool key "Alt+F2"
#Ждём одну секунду(на слабых компьютерах можно увеличить время) и начинаем набор текста.
sleep 1 &&
xdotool key $n
И делаем файл исполняемым
chmod +x ~/bin/dash
Остаётся только привязать скрипт к клавише на клавиатуре
Теперь достаточно выделить текст в любом месте и нажать клавишу, к которой привязали скрипт. Через секунду откроется dash панель, а ещё через секунду введется команда. Останется только нажать энтер.
Скрипт был написан спонтанно минут за 10, он работает только с латинскими командами. Возможно в скором времени адаптирую скрипт под более сложные команды.
Добавлено: Научил скрипт понимать цифры и буквы в верхнем регистре, а также добавил все основные спец. символы, которые часто встречаются в командах. На счёт символа «=» я не уверен, что будет работать у всех. Я не нашел его кодовое имя, которое понимал бы xdotool и ввел цифровое значение, но возможно оно верно только для моей клавиатуры.
Текст скрипта буду обновлять, как в этой статье, так и в файле на дропбоксе
Если нашли баги, то пожалуйста напишите о них в комментариях.