3326
notify-send & sed [Решено]
Юзаю translate-shell как онлайн-(и оффлайн)- переводчик. Настроил его на перевод буфера.
Но с некоторых пор что-то в notify-send изменилось, и теперь он режет на 40 символов длинные строки в body. Тупо обрезает, и нихера не видно.
Пока что я (временно) добавил в команду обработки буфера sed 's/.\{40\}/&\n/g', так и живу. Но это- костыль, а у иеня и так вся система на костылях и скоро, чую, рухнет Хотя как-то пятый год держится, я аж сам НАХОЖУСЬ В КРАЙНЕМ НЕДОУМЕНИИ…
Но sed не знает грамматики, и тупо режет строку по 40 символов.
Мне читать такое неудобно.
Может есть способ сделать поизящней?
#!/bin/sh
a=`xclip -o | trans :ru -no-ansi -b -l | sed 's/\[\[\[\"//' | cut -d \" -f 1`
notify-send -u critical "Перевод" "$a"
echo $a | xclip -selection clipboard
Но с некоторых пор что-то в notify-send изменилось, и теперь он режет на 40 символов длинные строки в body. Тупо обрезает, и нихера не видно.
Пока что я (временно) добавил в команду обработки буфера sed 's/.\{40\}/&\n/g', так и живу. Но это- костыль, а у иеня и так вся система на костылях и скоро, чую, рухнет Хотя как-то пятый год держится, я аж сам НАХОЖУСЬ В КРАЙНЕМ НЕДОУМЕНИИ…
Но sed не знает грамматики, и тупо режет строку по 40 символов.
Мне читать такое неудобно.
Может есть способ сделать поизящней?
8 комментариев
На арче не тестирован, в убунту и дебиан работает на отлично! Процитирую пост:
Вашему вниманию предоставляется скрипт по переводу текста, прошу проверить его работу.
что он делает — он берет текст из буфера обмена, переводит его в гугле, гугловый ответ парсит и выводит в виде всплывающего сообщения или окна (ненужное закоментировать)
отличие от того варианта что выложен в сети myubuntu.ru/programmy/perevodite-lyuboj-vybrannyj-tekst-s-pomoshchyu-kombinatsii-klavish-i-opoveshchenij — данный скрипт переводит (точнее сказать выводит) весь выделенный текст, а не только до первой точки.
итак для работы скрипта поставим дополнительное ПО
sudo apt install libnotify-bin wget xsel xclip zenity
и сам скрипт my_translate.sh
#!/usr/bin/env bash
# язык на который осуществяется перевод, например:
# uk-українська, ru-русский, be-беларуска, en-english
LNG=«ru»
text="$(xsel -o)"
translate="$(wget -U «Mozilla/5.0» -qO — \
«translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=$LNG&dt=t&q=$(echo $text | sed „s/[\“'<>]//g»)" \
| awk -F«null,\»" '{print $1}' | awk -F".[[,]\"" '{ i=2; while (i<=NF) {print $i; i=i+2}}')"
# сохранить перевод в буфер обмена
echo "$translate" | xclip -selection clipboard
# вывести во всплывающем сообщении
notify-send -t 10000 --icon=info "$text" "$translate"
# вывести в окне
echo -e "$text\n ################### \n$translate" | zenity --text-info --title=«Translation»
exit 0
берете скрипт, делаете его исполняемым, привязываете его к хоткеям, потом просто выделив текст и нажав на хоткей — маете перевод.[/quote]
Спасибо! Очень полезный скрипт. Теперь могу где угодно набирать русский текст, выделять его, затем по быстрым клавишам перевожу на английский и по Ctrl+V заменяю русский текст на английский. Очень удобно в переписке.
Кроме того, он он дишён недостатка перевода простым способом(без translate-shell). Там перевод получается разорванным и выскакиваеn всё время длинный цифробуквеный код(как я понял md5sum), который портит всю картинку. Но тот быстрее.
Но у меня почему-то и в них notify-send чудит: при попытке вывести длинную строку в тело сообщения — выводит лишь первые 40 символов из нее. Приходится принудительно резать длинную строку по 40 символов. sed с этим справляется, но механически, неаккуратно. А хочется красиво, чтоб слова переносились...
Не прошло и года, как… (барабанная дробь)… я, тормоз, вспомнил про fold.
В итоге вот чего мне хотелось.
Решено.