Category: компьютеры

Category was added automatically. Read all entries about "компьютеры".

Перевод содержимого буфера обмена по горячей клавише при помощи сервиса google

Наткнулся на статью о работе с буфером обмена в Linux. Скрипт


xclip -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "translate.google.com/translate_t?hl=ru#en|ru|" $1}' | xargs firefox -new-tab

мне показался многообещающим для личных целей, но присмотревшись я увидел одно существенное, как мне кажется, неудобство: для того чтобы увидеть перевод, нужно передать браузеру строку запроса с текстом для перевода, после чего будет открыта новая вкладка в которой будет загружена страница google с исходным текстом и переводом.
В некоторых случаях это нужно, но, как по мне, так новая вкладка - это все-таки оперативная память и время на загрузку страницы.


Немного погуглив, я совершенно случайно увидел страницу со скриптом вывода перевода в консоль. Еще одна особенность скрипта заключается в том, что можно выбирать направление перевода. Мне такой такой вариант кажется более гибким.


И вот, что из этого я вынес:

этот скрипт сохраняем под именем gctranslate.sh

#!/bin/bash
# access translate.google.com from terminal

help='translate <text> [[<source language>] <target language>]
if target missing, use DEFAULT_TARGET_LANG
if source missing, use auto'

# adjust to taste
DEFAULT_TARGET_LANG=en

if [[ $1 = -h || $1 = --help ]]
then
echo "$help"
exit
fi

if [[ $3 ]]; then
source="$2"
target="$3"
elif [[ $2 ]]; then
source=auto
target="$2"
else
source=auto
target="$DEFAULT_TARGET_LANG"
fi

result=$(curl -s -i --user-agent "" -d "sl=$source" -d "tl=$target" --data-urlencode "text=$1" http://translate.google.com)
encoding=$(awk '/Content-Type: .* charset=/ {sub(/^.*charset=["'\'']?/,""); sub(/[ "'\''].*$/,""); print}' <<<"$result")
#iconv -f $encoding <<<"$result" | awk 'BEGIN {RS="<div"};/<span[^>]* id=["'\'']?result_box["'\'']?/ {sub(/^.*id=["'\'']?result_box["'\'']?(>| [^>]*>)([ \n\t]*<[^>]*>)*/,"");sub(/<.*$/,"");print}' | html2text -utf8
iconv -f $encoding <<<"$result" | awk 'BEGIN {RS="</div>"};/<span[^>]* id=["'\'']?result_box["'\'']?/' | html2text -utf8
exit


а этот скрипт я вызываю горячей клавишей


#!/bin/bash

TEXT=$(xclip -o)
TRANSLATED_TEXT=$(gctranslate.sh "$TEXT" en ru)
if [ ${#TEXT} -lt 120 ]; then
notify-send "$TRANSLATED_TEXT"
else
echo "$TRANSLATED_TEXT" | zenity --title="Перевод" --text-info
fi


в нем, в зависимости от длины исходного текста отображается нотификационное сообщение, которое быстро читается и исчезает, или отображается в окне zenity, т.к. длинный текст дольше читается.


Для работы скрипта нужны пакеты notify-send, html2text и zenity. Скрипт тестировался на Ubuntu 10.04 LTS в GNOME.


Конечно и этот скрипт не лишен недостатков. И один из них наиболее очевиден: хотя, далеко не всегда приходится переводить с разных языков, в этом скрипте нет возможности интерактивного выбора направления перевода.

Делаем bootsplash

В Винде была возможность изменить загрузочную заставку. Правда для этого нужно было установить программу. Да и возможностей эта программа предоставляла очень мало: делается просто картинка с цветным прогресс-баром. Мы же можем благодаря фреймбуферу (технологие, которая позволяет рисовать в консоли изображения) сделать анимацию заставки, нарисовать консоль на часть экрана, изменить прогресс-бар, писать на картинке ход загрузки системы. В общем для фантазии простор есть.

Для начала нарисуем простенький bootsplash, на подобие такого, который у нас есть при установке системы. Только кое-что изменим. :)

Для начала нам нужно знать: какая картинка по размеру будет у нас заставкой. Сразу скажу: картинки не всех размеров могут быть использованы. Во-первых, это зависит от того, какое разрешение экрана (видеорежим) может установить фреймбуфер. Также нужно знать, поддерживает ли видеокарты требуемый видеорежим.

При установке системы вам была предложена возможность установить видеорежим для фреймбуфера. Если вы не помните какой режим вы выбрали, то посмотрите в файле /etc/lilo.conf. Строка vga=788 указавает, что установлен видеорежим 800x600x64k . Этот видеорежим позволяет использовать полноцветные (65535 цветов) изображения.

Также в этом файле в строках со словом initrd находится путь к файлу в котором содержится уже скомпилированый  файл с темой заставки.
Темы загрузочных катринок находятся в директории /etc/bootsplash/themes
В директории с темой находятся две папки:
images - картинки заставок соответствующего разрешения
config - файлы канфигурации для соответствующего разрешения экрана

вот пример моего конфига для видеорежима 800x600:

# This is the configuration file for the 800x600 bootsplash picture
#
# This file is necessary to specify the coordinates of the text box on
# the splash screen.
#
#                      Created by TechnoMag 1 june 2008
#                            Theme Name: DayWatch

# config file version
version=3

# should the picture be displayed?
state=1

# fgcolor is the text forground color.
# bgcolor is the text background (i.e. transparent) color.
# значения цветов текста и фона для консольного режима
# значения должны быть ммм... дай Бог памяти.... от 0 до 15
fgcolor=7
bgcolor=0

# name of the picture file (full path recommended)
# пути к фоновым изображениям
jpeg=/etc/bootsplash/themes/daywatch/images/habensky_1.jpg
silentjpeg=/etc/bootsplash/themes/daywatch/images/habensky.jpg

# (tx, ty) are the (x, y) coordinates of the text window in pixels.
# tw/th is the width/height of the text window in pixels.
# а это границы консольного окна
tx=18
ty=48
tw=576
th=448

# разрешаем прогресс-бар
progress_enable=1

# background
# b(order) or i(nter)
box silent noover 176 478 651 498 #ff000000
# progress bar
# цвета заливки для прогремм-бара
box silent inter  176 479 176 497 #800000 #620000 #620000 #800000
box silent        176 479 651 497 #800000 #620000 #620000 #800000
# black border (top, bottom, left, right)
# рамка прогресс-бара
box silent        176 478 651 478 #A80D0D
box silent        176 498 651 498 #BA0707
box silent        176 478 176 498 #A80D0D
box silent        651 478 651 498 #BA0707

# text box
# box noover        35 34 754 535 #000000e2 # не знаю, не пробовал

# а эта опция перерисовывает шрифт при изменениях надписей
# у меня почему-то получаются накладки, разберусь - скажу
overpaintok=0

# (ax, ay) are the (x, y) coordinates for playing boot/shutdown animations
# если предусмотрена анимация

ax=200
ay=200

Далее все изменения: в конфиге темы и файле /etc/lilo.conf нужно зафиксировать командами:

splash -s -f /etc/bootsplash/themes/daywatch/config/bootsplash-800x600.cfg > /boot/initrd.daywatch

lilo -C /etc/lilo.conf
Перезагружаемся. Будьте внимательны при записях путей к файлам!

установка пакетов .tgz , .tar.gz

Для Vector Linux, на мой взгляд лучше подходят два варианта установки программ:
1. Из исходников, которые обычно содержатся в архивах .tar.gz
2. Из уже готовых пакетов .tgz

Обы варианта имеют схожие методы установки. Рассмотрим их в отдельности.

Установка программ из исходников.
По сути все очень просто. Порядок таков:
 1. Распаковываем программу
    В общем, в этом деле вам поможет MidnightCommander. Я распаковываю и вхожу в распакованную папку. Делее       закрываем mc и переходим к следующему шагу.
 2. Собираем программу
    - ./configure
    - make
 3. Подготавливаем пакет для устанвки
    - checkinstall -S --pakdir=/tmp/install
    Тут нужно немного пояснить. После компиляции программы нам нужно сделать пакет для устаноки. Это и         делает команда checkinstall. В отличие от команды make install устанавливаемая программа будет зарегистрирована в системе, и ее можно будет легко удалить.
Аргумент -S говорит, что мы создаем пакет для Slackware. А pakdir указывает в какую папку будет записан файл пакета. После запуска команды будет предложено ввести имя программы. Также в интерактивном режиме можно ввести дополнительную информацию о пакете.
Такую как: архитектура процессора, версия, описание и т.д.
 4. Установка пакета
    - installpkg имя_пакета

Преимещество такого варианта установки программы заключается в том, что программу можно будет легко удалить при помощи программы GSlapt или slapt-get.

Установка из готовых пакетов:
  - installpkg имя_пакета

ЗЫ

По сути .tgz и .tar.gz это архивы. Только .tgz содержит откомпилированную программу и скрипт с инструкциями по ее установке, который выполняет программа installpkg. В обоих архивах можут находится такие файлы:
Authors
Bugs
Changes
Install - краткая инструкция по установке
Readme
Todo
Version

Перед установкой настоятельно рекомендую ознакомится с файлом Install.