Skip to content

Instantly share code, notes, and snippets.

@mivxxx
Last active March 20, 2023 14:02
Show Gist options
  • Save mivxxx/3b53426ec662912f04db11773ef83d73 to your computer and use it in GitHub Desktop.
Save mivxxx/3b53426ec662912f04db11773ef83d73 to your computer and use it in GitHub Desktop.
Отображение перевода выделенного текста в системном уведомлении Ubuntu

Отображение перевода выделенного текста в системном уведомлении Ubuntu

Исходная статья, описывающая механизм перевода текста из выделения

https://habrahabr.ru/post/137215/ В исходной статье скрипт для перевода из командной строки устарел (google блокирует подключения не из браузера), поэтому предлагается использовать translate-shell.

Установка

Требования

  1. утилита для отправки уведомлений из командной строки notify-send
  2. утилита для получения содержимого выделения xsel
  3. GNU awk (gawk) 4.0 и выше
  4. curl (скорее всего уже присутствует в системе)
  5. Скрипт для перевода текста из командной строки translate-shell
  6. Скрипт для перевода выделенного текста из командной строки
  7. Настройка комбинации клавиш для запуска скрипта из предыдущего пункта

Установка утилит notify-send и xsel

sudo apt-get install -y libnotify-bin xsel gawk

Проверка текущей версии awk

awk --version

Установка gawk 4 версии

Если текущая версия awk меньше 4, то требуется обновить утилиту. Для Ubuntu 12.04 это можно сделать следующим образом:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:schot/gawk
sudo apt-get update
sudo apt-get install -y gawk

Установка утилиты translate-shell

Репозиторий проекта: https://github.com/soimort/translate-shell Скрипт утилиты скачивается в домашнюю папку пользователя:

mkdir -p ~/scripts
cd ~/scripts
wget git.io/trans
chmod +x ./trans

Проверка работы скрипта trans

~/scripts/trans -b :ru example

Результатом работы скрипта должен быть переовод слова example (пример)

Создание скрипта для перевода выделенного текста из командной строки

Для получения текущего выделения в X Window System используется утилита xsel.

xsel -o

Данная команда выведет текущий selection в стандартный поток вывода.

Для перевода выделенного текста из командной строки необходимо создать скрипт ~/scripts/seltr следущего содержания:

#!/usr/bin/env bash
SELECTED_TEXT=$(xsel -o)
TRANSLATED_TEXT=$(/home/miv/scripts/trans -b en:ru "${SELECTED_TEXT}")
notify-send -u critical "${SELECTED_TEXT}" "${TRANSLATED_TEXT}"

После создания необходимо установить права на запуск скрипта:

chmod a+x ~/scripts/seltr

Скрипт использует xsel для получения текста из выделения, переводит его при помощи trans и выводит в системное уведолмение при помощи notify-send

Примечание:

  • В скрипте вместо вместо en:ru можно указать :ru для автоматического определения исходного языка перевода

Настройка комбинации клавиш для запуска скрипта

В Ubuntu это можно сделать из меню Параметры системы -> Клавиатура -> Вкладка "Комбинации клавиш" Необходимо добавить дополнительную комбинацию:

  • Название: Translate selected text
  • Команда: /home/<USER_NAME>/scripts/seltr (необходимо указать корректный USER_NAME)
  • Комбинация клавиш: Crtl+` (любая удобная)

Проверка работы

На данном шаге при выделении следующего текста:

  • Text for translate

И нажатии Crtl+` должно появляться системное уведомление:

  • Текст для перевода
@Barkhanskii-A
Copy link

hello

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment