391

ПОП⇓ пишет:

вообщем проверить диск... Спасибо !

Винда...  bw

392

Не стал читать все 14 страниц, по этому может предлагали... Попробуйте Росинку. Сейчас ей пользуюсь (Использую Linux Mint 11), вполне доволен. Многое "из коробки", хотя её всё равно нужно делать под себя.  Кстати ОЧЕНЬ желательно не обновляться)

K1890 пишет:

ОЧЕНЬ желательно не обновляться)

Классный дистрибутив! ag

394

Сообщения о блокировке экрана и просмотре видео выделены в новую тему - http://linuxforum.ru/viewtopic.php?id=28795. yars.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

395 (28.12.2013 14:46:18 отредактировано ПОП)

Всем доброго здравия и хорошего настроения!
Решил выложить первые итоги для тех, кто интересуется этим вопросом. Сам дистрибутив не готов, т.к. столкнулся с рядом причин, которые прорабатываются. Но, уже четко определилась основа: Linux Mint 14 "Nadia" с графической средой рабочего стола MATE (форк GNOME2) 32-bit и 64-bit . Подробности по установке. Полная Русификация дистрибутива
Из опробованных нескольких десятков дистрибутивов и десяти рабочих сред, Linux Mint - это единственный подходящий дистрибутив для простого пользователя, а MATE - единственная адекватная Рабочая среда для простого пользователя. Более простого и удобного в использовании и в настройках рабочего окружения не встречал.
Из версий Linux Mint (брал 13, 14, 15, 16), 14-я оказалась самой стабильной на нескольких компьютерах с разным "железом". Уже почти год интенсивно использую Linux Mint 14 и ни разу не было каких-либо глюков при обновлениях, установке/удалении/компиляции программ и настройке/оптимизации системы и т.д. Правда, поддержка обновлениями будет только по Апрель 2014 года, после чего останется возможность самому обновлять только версии программ, но к этому времени, надеюсь, появится какая-то альтернатива.
Из программ по теме Linux для Православных:
1 Библия - Священное Писание
2 Православный Церковный календарь deb-пакет
3-4 Православные темы для рабочего стола и шрифты выложу по личной просьбе
5 Игры по-умолчанию не установленны. Здесь предложенные на ваше усмотрение
6 В Mozilla Firefox желательно добавить дополнения:
Noscript - запрещает запускать вредоносные скрипты на открываемых страницах.
Adblock Plus - блокирует рекламму, порно и другие баннеры...
Block site - блокирует сайты, которые посчитаете пиратскими.
Quick Translator - самый легкий и удобный онлайн переводчик 50 языков.
DownThemAll - менеджер и ускоритель загрузок.
7 По-умолчанию установленно 4 медиаплеера. Дополнительно здесь предлагали audacious (можно установить из Synaptic) и deadbeef
8 Словарь GoldenDict можно установить из Synaptic, а словари здесь
9 Поисковик по-содержимому текста и именам файлов recoll можно установить из Synaptic
10 Просмотрщики документов установленны по-умолчанию. Себе установил еще fb2edit и acroread из Synaptic
11 Хорошая безплатная программа для бухгалтеров Дебет Плюс v12
12 Программы сканирования и распознавания текста в связке cuneiform + yagf можно установить из Synaptic
13 Настроить правильное отображение кодировку текста в текстовике можно командой:

gsettings set org.mate.pluma auto-detected-encodings "['UTF-8', 'WINDOWS-1251', 'CURRENT', 'ISO-8859-15', 'UTF-16']"

а также скриптом-сценарием ru2ru
14 Музыкальные и нотные редакторы, думаю подойдут  Rosegarden и Noteedit
15 Для руководства по Linux Mint есть книги Linux Mint на 100%_Яремчук_2011.djvu и Linux Mint 11_Руководство_russian_11.0.pdf
Рекомендую еще несколько программ:
focuswriter - кросс-платформенный безплатный текстовый редактор для концентрации внимания именно на написании текста или для приятного и удобного просмотра, чтения и редактирования текста. Программа позволяет настроить рабочую среду так, чтобы снизить напряжение глаз при долгой работе с текстом или чтении. Устанавливаем из Synaptic, а темы здесь
meld - сравнение простых текстовых файлов и каталогов
zim - домашняя википедия
minitube - поиск, просмотр и закачка с Youtube
caffeine - чтобы не гас экран во время просмотра видео. Как установить
Для чистки системы: localepurge, bleachbit, debfoster, deborphan (установка из Synaptic)
Для оптимизации системы: preload и prelink (установка из Synaptic)

P.S. ОГРОМНОЕ СПАСИБО всем, кто помогал и подсказывал. Продолжение следует...


Чуть изменил сообщение - добавлен тег "Code".

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

396

Вопрос-просьба к Администрации http://linuxforum.ru открыть новый отдел по теме скриптов в Linux: например, "Скрипты" или "Копилка скриптов" и т.д. Есть большая потребность в скриптах и умение правильно создавать/запускать их, желательно русифицированные. В сети в основном существуют только английские сайты, где систематично выложены скрипты с объяснением к каждому. Хотелось бы, чтобы подобные сайты были и у нас, за что будет огромное спасибо от всех пользователей Linux, особенно от новичков.
P.S. Что-то наподобие этого или этого

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

397

Для тех, кто еще не решился перейти с Windows на Linux:
За почти год крайне интенсивного использования Linux, мне только один раз пришлось зайти в Windows для работы с FineReader, - это, наверное, единственная программа, которой еще нет достойной замены. Хотя, cuneiform+yagf делают свое дело, но не так качественно.
Отпала постоянная нужда борьбы с вирусами, дефрагментацией, лицензионные вопросы и многое, что отвлекало от нормальной работы...
Каждый раз убеждаюсь в превосходстве Linux над Windows: мощь, простота, гибкость настройки под любые нужды, безопасность и надежность...
Windows - это коммерческий продукт с коммерческой целью, и потому это преднамеренно почти пустая система, для работы в которой необходимо покупать со стороны нормальный софт, чтобы сделать что-то нормальное...
Linux - это творческий и свободный продукт профессионалов программистов, который имеет в себе уже все необходимое для полноценной работы системы. Для частных нужд имеется дополнительно огромный выбор программ в репозиториях для решения разных задач... Именно, по причине предустановленности всего необходимого, в Linux сильно распостраненны работа скриптов-сценариев, которые по сути лишь связки или наборы команд/ключей, делающие работу с большей легкостью/гибкостью/настраивамостью, чем программы-монстры/комбайны...
Есть и подводные камни. Т.к. Linux=свободное творчество, то, конечно, из почти 600 дистрибутивов не все имеют одинаковую стабильность и рабочесть, поэтому желательно выбирать "под себя" с вопрошением профессионалов...
Еще, в Linux нельзя лезть с виндовс-подходом. Здесь требуется внимательный и разумный подход, а не бездумное тыкание по кнопочкам... Однако, однажды правильно настроенная система, будет надежно годы работать, радуя стабильностью и не отвлекая от других дел.
P.S. Будет возможность, постараюсь поделиться небольшими "наработками" и скриптами для решения насущных задач.

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

398 (25.12.2013 18:15:53 отредактировано xxblx)

ПОП пишет:

новый отдел по теме скриптов в Linux: например, "Скрипты" или "Копилка скриптов" и т.д.

Раздел "по скриптам" у нас уже есть
Работа в командной строке
Вопросы по написанию скриптов можно задавать там.

Что касается "копилки скриптов", на моей памяти была попытка создать тему (вот только кто именно создавал тему - не помню), коллекционирующую полезные скрипты. Но как-то тогда не срослось, тема поддерживалась не очень активно пользователями, в результате, так и забыли все про нее. А если даже одну тему активно поддерживать не стали, то раздел и подавно пустовать бы стал.

Fedora GNOME3

399

xxblx пишет:

Раздел "по скриптам" у нас уже есть
Работа в командной строке

Смотрите, я - новичек, ничего еще толком не понимающий, набираю, например, в поисковике браузера: "Скрипты в Linux" и... первая строка указывает мне: "зайди сюда, где уже все разжевано по этой теме". Я, естественно, довольный, что быстро решил вопрос, с благодарностью перехожу к следующему делу... Разве это плохо?

xxblx пишет:

Что касается "копилки скриптов", на моей памяти была попытка создать тему... тема поддерживалась не очень активно пользователями, в результате, так и забыли все про нее.


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

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

400 (26.12.2013 05:50:57 отредактировано ПОП)

Тем, кому часто приходится читать и переводить с иностранных языков могут скачать замечательльный безплатный переводчик vsTranslator (движок PROMT). Чтобы преводить тексты не надо запускать браузер, достаточно лишь подключение к интернету. Скачивать бинарник и запускать двойным кликом по файлу vstranslator

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

401

ПОП пишет:

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

На самом деле уже есть достаточно много информации, например, если вас интересует Bash:
Руководство по Bash для начинающих
Искусство программирования на языке сценариев командной оболочки
Если Python, здесь небольшая подборка ресурсов:
Python [Полезные ресурсы]

Да, у меня Ubuntu.
Нет, не глючит.

402 (26.12.2013 06:42:51 отредактировано yars)

ПОП пишет:

замечательльный безплатный переводчик

Он не «безплатный», он с открытым исходным кодом, т.е., свободный, разница между «свободный» и «бесплатный» та еще. И таки да, кроме PROMT, он еще и гуглотранслятор использует для перевода.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

403

-=Serj=-, спасибо!
Просьба была еще потому, чтобы не изобретать велосипеды и другим по-рекомендовать...

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

404

yars пишет:

Он не «безплатный»

Программа бесплатна и распространяется по лицензии GPL v.2

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

405

ПОП пишет:

распространяется по лицензии GPL v.2

== свободный.
Вот в чем разница.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

406

Есть маленькая неприятность с zip-архивами (созданными в Windows), имена которых открываются/распаковываются в виде крякозябр. Исправляется так: Открываем Терминал и исполняем 3 комманды одна за другой:

sudo add-apt-repository ppa:frol/zip-i18n
sudo apt-get update
sudo apt-get install libnatspec0 p7zip-full
ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

407

ПОП пишет:

Есть маленькая неприятность с zip-архивами (созданными в Windows), имена которых открываются/распаковываются в виде крякозябр.

Кстати, аналогичной проблемы с rar не возникает?
В интернете можно найти огромное количество советов как это починить, из которых 99% - фуфло.
А на деле все просто - удалить пакет rar, поставить unrar

408

AnKar пишет:

А на деле все просто - удалить пакет rar, поставить unrar

все сложнее...

Hunter, who is on the trail ...

409

AnKar пишет:

Кстати, аналогичной проблемы с rar не возникает?

Нет, не возникало. Специально достал старые виндовс-архивы и просмотрел. Все правильно открываются.

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

410

Ну  как я понял, проблема достаточно распространённая :https://www.google.ru/search?client=ope … p;safe=off

Slackware  14.1 KDE
Один Терафлю это 1024 Гигафлю или 1048576 Мегафлю!!!

411 (10.01.2014 16:33:08 отредактировано ПОП)

Всех с Праздниками и всем хорошего настроения!
Для настройки файрвола в Linux есть замечательная статья, пожалуй, одна из лучших (в смысле: просто о сложном). Для автоматического запуска созданного правила для файрвола после перезагрузки системы нужно будет воспользоваться  подсказкой Lupo Alberto.
Если часто приходится работать и обмениваться информацией из Windows через флешки, то может пригодится антивирусный сканер clamav c графической оболочкой clamtk (устанавливается из Synaptic). Правда, в Linux вирусы сами не смогут запустится, но проверить флешку можно. Для удобства проверки файлов и разных носителей есть хороший скрипт Scanner из комплекта ASP: Airelle Scripts Package. Скрипт устанавливаем в папку ~/.config/caja/scripts/ и в свойствах файла (на вкладке "Права") даем разрешение "Позволять выполнение файла как программы". После этого, можно обозначить любой файл или папку и в меню "Сценарии", нажатием на скрипт Scanner, запустить его.
Может кому будет интересно узнать кто следит за вами в интернете и "запретить" им делать это, то есть хороший плагин Ghostery. Подробнее можно почитать тут, тут и тут.

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

412

Winff — хороший конвертер аудио и видео файлов, использует ffmpeg. Устанавливается: открываем Терминал и набираем комманду:

sudo apt-get install ffmpeg winff

Еще один, на выбор, конвертер аудио/видео/текстовых файлов ffmulticonverter. Устанавливается также, только исполняем 3 комманды одна за другой:

sudo add-apt-repository ppa:ffmulticonverter/stable
sudo apt-get update
sudo apt-get install ffmulticonverter

Сам предпочитаю пользоваться скриптом avconvert - Аудио/Видео/Изображения/Текст/ISO - конвертер. Это, можно сказать, скрипт мини-шедевр. При подключенном интернете сам переводит на основной язык, установленной ОСи, правда очень долго.

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

413

Если кому-то понадобится, то русифицированный (мной) скрипт (не требующий интернет-подключения и быстро работающий) можно скопировать здесь:

#!/bin/bash

# marc brumlik, tailored software inc, Mon Sep  8 22:50:20 CDT 2008
# АВТОМАТИЧЕСКИЙ DVD RIPPING\n\n\nДобавленный определенный кодек, чтобы распознать, что один\n(или 
# больше) файл(ов) VOB отобраны \nВам, будет предлагаться, чтобы объединить их в\nединственный файл 
# AVI на Ваш Рабочий стол\nсо всеми надлежащими заданными вариантами
 
version="0.98 Mon Mar  5 14:52:51 CST 2012\n   AUTOMATIC DVD RIPPING\n\n\nAdded specific code to recognize that one\n(or more) VOB file(s) are selected.\nYou will be offered to combine them into\na single AVI file on your Desktop\nwith all proper options pre-set."

# tsi-inc@comcast.net
# posted to:  http://www.gnome-look.org/content/show.php/Audio%2BVideo%2BImage%2BText%2BISO+Convert?content=92533
# YOUR VOTE WOULD BE APPRECIATED (as would a $1 donation :-)

# convert various image, audio, and video files into other likely formats

# set -x

#####
# Watcher
#####
avwatcher() {
### this function produces the "progress window" during the conversion.
### there are two phases...

case $veryquiet in
    y)    exit 0 ;;
esac

# set -x
watchit="$1"
mult="100"

# doing frames??
frames=n
echo "$watchit" | grep "frame-%04d" >/dev/null && frames=y
[ "$frames" = "y" ] && mult="1000" 

# doing pdf/gif --> multiple images?
[ -z "$multipage" ] || watchit=`echo "$watchit" | sed "s^.$each^-0.$each^"`

# phase 1 begins.  sleep for one second while the conversion gets started.
# sleep 1
# using the process NAME and the PPID given, find the PID of the conversion
pid=`ps -ef | grep " $4 " | grep "$2" | awk '{print $2}'`
z="0"
# every second, test for the appearance of the output file

wtext1=`mytranslate "Ожидайте"`
wtext1="$wtext1 $2\n"
wtext1="$wtext1 "`mytranslate "начата запись"`
wtext1="$wtext1 $watchit"
wtext2=`mytranslate "Программа закончила!"`

while true
do
# if this is a "frame job", skip watcher phase 1
    [ "$frames" = "y" ] && break
# if the file appears before progress window even comes up, go to phase 2
    if test -s "$watchit"
        then    break
    fi
        for a in 10 20 30 40 50 60 70 80 90 80 70 60 50 40 30 20 10 00
        do
# when file appears, go to phase 2
                test -s "$watchit" && break 2
# otherwise, increment counter in zenity window for next display
                echo $a; sleep 1
        z=`expr $z + 1`
# but if no file is seen for 20 seconds, something's not right.  exit.
        if [ "$z" = "20" ]
            then    exit 0
        fi
        done
done | zenity --progress --auto-close --text="$wtext1" || ( kill -9 $pid >/dev/null 2>&1; zenity --info --text="$wtext2" )

# phase 2

loopsleep=2
# set up for multi-image output if $multipage is non-blank
[ -z "$multipage" ] && multipage="x"
for loop in $multipage
do

if [ "$loop" = "x" ]
    then    : single loop
    else    : loop for each output image
        watchit=`echo "$1" | sed "s^.$each^-$loop.$each^"`
        loopsleep=.5
fi

wtext1=`mytranslate "Ожидайте"`
wtext1="$wtext1 $watchit\n"
wtext1="$wtext1 "`mytranslate "Оценка к завершению...\n\nЕсли прогресс подскакивает между 95 и 99, этот средство\nновый файл больше, чем оригинал.  Будьте терпеливы."`

jump=1

while true
do
# это все еще там? некоторые преобразования управляют именем
    if [ "$frames" = "y" ]
        then    cksize=`echo "$watchit" | sed 's/frame-.*/frame-/'`
            ckext=`echo "$watchit" | sed 's/^.*\././'`
        else    if test -s "$watchit"
                then    cksize="$watchit"
                else    break
            fi
    fi

# find the size of the target output file (найдите размер целевого выходного файла)
    if [ "$frames" = "y" ]
        then
        newsize=`du -a -b -c "$cksize"????$ckext | tail -1 | awk '{print $1}'`
        else
    newsize=`du -a -b "$watchit" | awk '{print $1}'`
    fi
# calculate this as a percentage of target file size (вычисление в процентах размера конечного файла)
        progress="0"`echo "scale=10; $newsize / $3 * $mult" | bc`
    if [ "$progress" = "$oldprogress" ]
# если будем в 100% zenity, то выйдет самостоятельно
# но если выходной файл прекращает расти ПЕРЕД 100%, то выйдет
        then    break
    fi
    oldprogress="$progress"
    showprogress=`echo "$progress" | sed 's/\..*//'`
    sleep $loopsleep
# if the file is still growing but we're over 95%, get fancy
    if [ "$showprogress" -ge "95" ]
        then    if [ "$jump" = "1" ]
                then    showprogress=95; jump=2
                else    showprogress=99; jump=1
            fi
    fi
    echo $showprogress
done | zenity --progress --percentage=01 --auto-close --text="$wtext1" || ( kill -9 $pid >/dev/null 2>&1; zenity --info --text="$wtext2" )

# end of multi-image loops
done
}
# end of watcher


#####
# Translate text to other languages
#####
mytranslate() {
#
# use online translation service on text

case $online in
    n)    echo "$*"; exit 0 ;;
esac

# A NEWER WAY  :-)
# use gnome's provided "translate"
# (hope this is available to non-gnome users!!)
echo "$*" | sed 's/$/++/' | $trbin -f en -t $lang | sed 's/++/
/g'

# A NEW AND BETTER WAY
###    No longer works -- Google Translate API is now a paid service
### wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$1&langpair=en|$lang" | sed 's/.*"translatedText":"\([^"]*\)".*}/\1\n/' | sed "s/\\u0026#39;/'/g"

# Keeping old code for posterity...
# and, because, it appears the above will not be available (for free) forever

#case $service in
#google)    serviceline="-d langpair=en|$lang http://translate.google.com/translate_t" ;;
#babel)    serviceline="-d lp=en_$lang http://babelfish.yahoo.com/translate_txt" ;;
#esac
#
#transline=`curl --connect-timeout 1 -m 1 --retry 1 -s -A "Mozilla/5.0" \
#    -d "hl=en" -d "ie=UTF8" -d text="$*" $serviceline`
#
#case $service in
#    google) echo "$transline" | grep "gtrans" | \
#        gawk -F"gtrans value" '{print $2}' | \
#        cut -d'"' -f2 | $links -dump | $links -dump | sed 's/^ *//'
#        ;;
#    babel)  echo "$transline" | grep "result" | grep "div" | \
#        tr '<>' '~~' | awk -F~ '{print $5}'
#        ;;
#esac
}

#####
# Convert
#####
myavconvert() {
#
# processing images or performing text-to-image conversion

# set -x

# this is for looping after the first item, using the env for settings
looping=n
if test -s /tmp/avconvert.env
    then    . /tmp/avconvert.env
        looping=y
fi

# the output types allowed for

case $it in
    image)  out=" gif jpg ico pdf png tif OTHER"
        height=460 ;;
    text)   out=" gif jpg ico pdf png tif OTHER"
        height=370 ;;
esac

# set default checkbox: all false except the original ext (except txt)
case $imageext in
    none)    out=`echo "$out" | sed -e 's/ / FALSE /g'` ;;
    same)    out=`echo "$out" | sed -e 's/ / FALSE /g' -e "s/FALSE \$ext/TRUE $ext/"` ;;
    *)    out=`echo "$out" | sed -e 's/ / FALSE /g' -e "s/FALSE \$imageext/TRUE $imageext/"` ;;
esac

# show output choices to user and loop until selection is made
while true
do
if [ "$looping" = "n" ]
    then
case $prog$it in
        convertimage)   ident=`identify "$target"`
            ident="$ident\n$imident"
            title=`mytranslate "Преобразование файла:"`
            c1=`mytranslate "Преобразуйте в формат"`
            text=`mytranslate "Формат исходного файла"`
            text="$text $show,
$ident

"
            text="$text"`mytranslate "Вы можете выбрать разнообразные форматы - avconvert, циклично пройдет, чтобы создать их всех.

ВЫХОДНОЕ ИМЯ: имена создаваемых файлов будут включать надлежащее расширение, 
и если разрешение отличается от оригинала тогда будет \"-XXX\" перед расширением. 

Выберите OTHER (ДРУГОЙ), не перечисленный выходной тип"`
            choice=`zenity --list --height=$height --title="$title $target" --text="$text" --checklist --column "$s1" --column "$c1" $out` || exit 0
            ;;
        converttext)    title=`mytranslate "Конвертированный"`
            text=`mytranslate "Формат исходного файла"`
            text="$text $show

"
            text="$text"`mytranslate "Действие по-умолчанию должно преобразовать ТЕКСТ в ИЗОБРАЖЕНИЕ

Выберите OTHER (ДРУГОЙ), не перечисленный выходной тип"`
            c1=`mytranslate "Преобразуйте в формат"`
            choice=`zenity --list --height=$height --title="$title $target" --text="$text" --checklist --column "$s1" --column "$c1" $out` || exit 0
            ;;
esac
fi

if [ -n "$choice" ]
    then    break
fi
done

# was it OTHER?
case $choice in
        OTHER_non-image)  exec myavtext ;;
        OTHER)  title=`mytranslate "Выходной тип"`
        text=`mytranslate "Поставьте соответствующее расширение файла"`
        choice=`zenity --entry --title="$title" --text="$text"` || exit 0 ;;
esac

# clean up any _audio reference and any leading . in ext
choice=`echo $choice | sed -e 's/_.*//' -e 's/^\..*//'`

#       loop over (possibly multiple) choice(s)
# (THE OUTER LOOP)
for each in `echo $choice | sed 's/|/ /g'`
do

#       what will the destination filename be?
new=`echo $target | sed -e "s/.$ext$//" -e "s/$/.$each/"`

if [ "$looping" = "n" ]
    then
# set resolution here
# results into $dim, will look like "jpg|gif|pdf"
origrez=`echo "$ident" | sed "s/$target//"`
case $it in
    text)    title=`mytranslate "Размеры"`
        text=`mytranslate "Выходные размеры для файла"`
        text="$text \"$new\"\n\n"
        text="$text"`mytranslate "Это будет размером вдоль более длинного края
(в зависимости от портрета или пейзажного способа)

Выберите один или более.
(\"Оригинальный\" не может быть объединен с другими размерами)"`
        c1=`mytranslate "Выбор размера"`
        dim=`zenity --list --height=520 --title="$title" --text="$text" --checklist --column "$s1" --column "$c1" FALSE 1280 FALSE 1024 FALSE 800 FALSE 640 FALSE 480 FALSE 320 FALSE 250 FALSE 200 FALSE 150 FALSE 100 FALSE "Еще"` || exit 0
        ;;
    image)    title=`mytranslate "Размеры"`
        text=`mytranslate "Выходные размеры для файла"`
        text="$text \"$new\"\n\n"
        text="$text"`mytranslate "Это будет размером вдоль более длинного края
(в зависимости от портрета или пейзажного способа)

Выберите один или более.
(\"Оригинальный\" не может быть объединен с другими размерами)"`
        c1=`mytranslate "Выбор размера"`
        dim=`zenity --list --height=580 --title="$title" --text="$text" --checklist --column "$s1" --column "$c1" FALSE "Оригинальный размер" FALSE 1280 FALSE 1024 FALSE 800 FALSE 640 FALSE 480 FALSE 320 FALSE 250 FALSE 200 FALSE 150 FALSE 100 FALSE "Еще"` || exit 0
        ;;
esac
fi

case "$dim" in
    Original*)    dim="" ;;
    Something*)    while true
            do
                text=`mytranslate "Новый размер (вдоль более длинного края)"`
                dim=`zenity --entry --text="$text"` || exit 0
                case $dim in
                    [0-9]*[0-9])    break ;;
                    *)        ;;
                esac
            done ;;
esac

# if $safedims is set and $dim is empty
# then set it to what we used last time
if [ -z "$dim" -a -n "$safedims" ]
    then    dims="$safedims"
fi
# parse $dim into $dims
case $dim in
    '')    dims=" " ;;
    *)    dims=`echo $dim | sed 's/|/ /g'` ;;
esac

# and save these $dims for next time
safedims="$dims"
textdims=`mytranslate "Ранее выбранные разрешения:"`
textdims="$textdims: $safedims"

if [ "$looping" = "n" ]
    then
# if this is a jpeg, ask for quality
case "$new" in
    *jpg)    title=`mytranslate "Качество"`
        title="JPG $title"
        text=`mytranslate "Выберите качество для"`
        text="$text \"$new\""
        qual=`zenity --list --height=290 --title="$title" --text="$text" --radiolist --column "$s1" --column "$title" FALSE 100 FALSE 90 FALSE 80 TRUE 70 FALSE 60 FALSE 50` || exit 0 ;;
esac

# normalize and equalize
case $it in
    image*)    ntxt=`mytranslate "Скорректировать для полного спектра цветов"`
        etxt=`mytranslate "Скорректировать для полного спектра яркости"`
        normeq=`zenity --list --height=190 --title="Нормально / Сбалансировано / Повернуть" --text="Normalize: $ntxt\nEqualize: $etxt" --checklist --column "$s1" --column "$s2" FALSE normalize FALSE equalize FALSE rotate-90 FALSE rotate-180 FALSE rotate-270 FALSE transpose FALSE transverse` || exit 0
        case $normeq in
            '')    ;;
            *)    normeq=`echo "$normeq" | \
                    tr '|' '\012' | sed 's/^/-/'`
                case $normeq in
                    -normalize*)    normeq=`echo "$normeq" | sed 's/-normalize/-separate -normalize -combine/'`
                            ;;
                esac
                normeq=`echo "$normeq" | sed -e 's/-90/ 90/' -e 's/-180/ 180/' -e 's/-270/ 270/'`
                normeq=`echo $normeq`
                ;;
        esac
        ;;
esac
fi

# create arg to convert for quality
case "$new" in
    *jpg)    case $qual in
            '')    quality="-quality 70" ;;
            *)    quality="-quality $qual" ;;
        esac ;;
esac

# echo "$dir"
# echo "$outdir"

case "$dims" in
    *x*x*)    ;;
    *)    case "$dir$overwrite" in
            "$outdir")    title=`mytranslate "Переписать?"`
                    text=`mytranslate "Прочитайте тщательно:

МНОГО мест в этой программе разработано, чтобы предотвратить 
случайное переписывание Вашего оригинального файла(ов). 
Однако, так как Вы выбрали исходную директорию в качестве своего места назначения 
И выбрали только одно преобразование, у Вас есть любой выбор. 
Вы (с осторожностью) можете ЗАМЕНИТЬ ОРИГИНАЛЫ переделанными файлами. 
В этом случае у переделанных файлов будет настоящее имя тоже 
(вместо того, чтобы вставить разрешение), но с выбранным расширением. 

Выберите мудро..."`
                    c1=`mytranslate "Переписать оригинальные файлы там же?"`
                    overwrite=`zenity --list --title="$title" --height=340 --text="$text" --radiolist --column "$s1" --column "$c1" TRUE NO FALSE YES` || exit 0
                    ;;
        esac
        ;;
esac

# loop through all the $dims.
for rez in " "$dims
do
# THE INNER LOOP

case "$rez" in
    " ")    geom="" ;;
    *)    rez=`echo $rez`; geom="-geometry $rez"x"$rez"
        new=`echo $target | sed -e "s/.$ext$//" -e "s/$/.$rez.$each/"` ;;
esac
if test -s "$outdir/$new"
    then    title=`mytranslate "Выберите новое Имя Назначения"`
        text=`mytranslate "существует - Переписать?"`
        zenity --question --title="$text" --text="$new $text" || newout=`zenity --file-selection --filename="$outdir/$new" --save --confirm-overwrite --title="$title"` || exit 0
        if [ ! -z "$newout" ]
            then    outdir=`dirname "$newout"`
                new=`basename "$newout"`
        fi
fi

case $it in
text)    # EXTRA stuff for TEXT to IMAGE
    colorlist=`convert -list color | sed -n '/,/s/  .*//p' | sort -u`
    colorlist=`echo " "$colorlist | sed 's/ / FALSE /g'`
    if which kcolorchooser >/dev/null 2>&1
        then    colorlist="FALSE GUI-\"kcolorchooser\" $colorlist"
        else    colortext=`mytranslate "

Установите пакет \"kdegraphics\", чтобы выбрать цвета с GUI"`
    fi
    colorlist="FALSE Key-in_RGB-value $colorlist"
    # for OLD version of convert
    # fontlist=`convert -list font | sed -n '/0$/s/ .*//p' | sort -u`
    # for NEW version of convert
    fontlist=`convert -list font | grep Font | sed 's/^.*://' | \
        sed -e 's/^ //g' -e 's/ $//' | sort -u`
    fontlist=`echo " "$fontlist | sed 's/ / FALSE /g'`
    sizelist=" 8 10 12 15 20 25 30 35 40 50 60 80 100 120 150 200 250 300"
    sizelist=`echo "$sizelist" | sed 's/ / FALSE /g'`

    bg=`mytranslate "Фон"`
    title="$bg"
    text=`mytranslate "Выберите цвет фона

ПРИМЕЧАНИЕ: Если Вы используете селектор (того, кто выбирает) GUI, 
то значения RGB будет показан в последующих окнах для Вашей ссылки."`

    text="$text $colortext\n\n"
    text=`mytranslate "ЕЩЕ ПРИМЕЧАНИЕ: по некоторой неизвестной причине
есть длинная задержка, когда GUI закрывается."`
    c1=`mytranslate "Выберите цвет"`
    back=`zenity --list --height=500 --title="$title" --text="$text" --radiolist --column "$s1" --column "$c1" $colorlist` || exit 0
    case $back in
        GUI-*)    back=`kcolorchooser --print` ;;
        _GUI*)    text=`mytranslate "Выберите цвета, используя GUI
интерфейс, установите"`
            text="$text \"kdegraphics\""
            text="$text "`mytranslate "package"`
            zenity --info --title="kcolorchooser" --text="$text"
            exit 0
            ;;
        Key-*)    title=`mytranslate "Key in color"`
            text=`mytranslate "Enter the RGB color as"`
            back=`zenity --entry --title="$title" --text="$text  #RGB  #RRGGBB  #RRRGGGBBB  #RRRRGGGGBBBB  rgb(rrr,ggg,bbb)"` || exit 0
            ;;
    esac
    fg=`mytranslate "Передний план"`
    title="$fg"
    text=`mytranslate "Выберите цвет переднего плана"`
    fill=`zenity --list --height=500 --title="$title" --text="[$bg = $back]\n\n$text" --radiolist --column "$s1" --column "$c1" $colorlist` || exit 0
    case $fill in
        GUI-*)    fill=`kcolorchooser --print` ;;
        _GUI*)    kdeg=`mytranslate "Выберите цвета с GUI
интерфейсом, установите пакет \"kdegraphics \""`
            zenity --info --title="kcolorchooser" --text="$kdeg"; exit 0 ;;
        Key-*)    title=`mytranslate "Key in color"`
                        text=`mytranslate "Enter the RGB color as"`
            fill=`zenity --entry --title="$title" --text="$text:  #RGB  #RRGGBB  #RRRGGGBBB  #RRRRGGGGBBBB  rgb(rrr,ggg,bbb)"` || exit 0 ;;
    esac
    title=`mytranslate "Border Width"`
    text=`mytranslate "Выберите Border Width"`
    borw=`zenity --list --height=340 --title="$title" --text="[$bg = $back]\n[$fg = $fill]\n\n$text" --radiolist --column "$s1" --column "$text" FALSE 0 FALSE 5 FALSE 10 FALSE 20 FALSE 30 FALSE 50` || exit 0
    case $borw in
        0)    borc=`mytranslate "transparent"` ;;
        *)    title=`mytranslate "Border Color"`
            text=`mytranslate "Border Width"`
            borc=`zenity --list --height=500 --title="$title" --text="[$bg = $back]\n[$fg = $fill]\n[$text = $borw]\n\n$title" --radiolist --column "$s1" --column "$title" $colorlist` || exit 0 ;;
    esac
    case $borc in
        GUI-*)    borc=`kcolorchooser --print` ;;
        _GUI*)    zenity --info --title="kcolorchooser" --text="$kdeg"; exit 0 ;;
        Key-*)    title=`mytranslate "Key in color"`
                        text=`mytranslate "Enter the RGB color as"`
            borc=`zenity --entry --title="$title" --text="$text:  #RGB  #RRGGBB  #RRRGGGBBB  #RRRRGGGGBBBB  rgb(rrr,ggg,bbb)"` || exit 0 ;;
    esac
    title=`mytranslate "Шрифт"`
    text=`mytranslate "Выберите шрифт текста и стиль"`
    font=`zenity --list --height=500 --title="$title" --text="[$bg = $back]\n[$fg = $fill]\n[Border width is $borw]\n[Border color is $borc]\n\n$text" --radiolist --column "$s1" --column "$title" $fontlist` || exit 0
    title=`mytranslate "Размер шрифта"`
    text=`mytranslate "Выберите размер шрифта текста"`
    size=`zenity --list --height=500 --title="$title" --text="[$bg = $back]\n[$fg = $fill]\n[Border width is $borw]\n[Border color is $borc]\n[Font style is $font]\n\n$text" --radiolist --column "$s1" --column "$title" $sizelist` || exit 0
    textoptions="-background $back -fill $fill -border $borw -bordercolor $borc -font $font -pointsize $size label:@"
    longestline=`cat "$target" | awk 'BEGIN {max[i]=0}
                        (length >= max[i]) {max[i] = length}
                        END {printf "%s\n", max[i]}'`
    # horizrez=`echo -e "scale=0\n$rez * 8 / 11\nquit\n" | bc`
    horizrez=$rez
    maxpossible=`echo -e "scale=0\n$horizrez / $size\nquit\n" | bc`
    # splitpieces=`echo -e "scale=0\n$longestline / $maxpossible\nquit\n" | bc`
    newlength=`echo -e "scale=2\n$maxpossible * .9\nquit\n" | bc`
    newlength=`echo "$newlength" | sed 's/\..*//'`
    if [ "$longestline" -ge "$maxpossible" ]
        then    newtarget=`echo "$target" | sed "s/$ext$/wrap$newlength/"`
            title=`mytranslate "Корректировка входного файла"`
            text=`mytranslate "Исходный файл \"1\" содержит длинные линии.

Самая длинная строка равняется 2, но макс. возможная
ширина изображения 3 и размер шрифта 4 равняются 5.

Создание промежуточного текстового файла с переходом на новую строку в
первое пространство после символьной позиции 6.

Это получит Вас ПРИБЛИЗИТЕЛЬНО
символьный размер, который Вы запросили.
Промежуточный файл будет содержать полный текст 7.

Промежуточное имя файла: 8"`
            text=`echo "$text" | \
            sed -e "s/1/$target/" -e "s/2/$longestline/" \
            -e "s/3/$horizrez/" -e "s/4/$size/" \
            -e "s/5/$maxpossible/" -e "s/6/$newlength/" \
            -e "s/7/$target/" -e "s/8/$newtarget/"`
            
            zenity --info --title="$title" --text="$text"
        sed "s/.\{$newlength\} /&\n/g" < "$target" > "$newtarget"
            target="$newtarget"
    fi

    linecount=`wc $target | awk '{print $1}'`
    maxpossible=`echo -e "scale=2\n$rez / $size\nquit\n" | bc`
    maxpossible=`echo -e "scale=2\n$maxpossible * 2 / 3\nquit\n" | bc`
    maxpossible=`echo "$maxpossible" | sed 's/\..*//'`

    if [ "$linecount" -gt "$maxpossible" ]
        then    shorttarget=`echo $target | sed 's/$ext$//'`
            title=`mytranslate "Корректировка входного файла"`
            text=`mytranslate "Исходный файл \"1\" содержит слишком много строк.
Корректировка для более нормального соотношения сторон.

Есть 2 строки, но макс. возможное
с длиной 3 и размером 4 is 5.

Разделение 6 в ряд файлов с 7
строки в каждом. Получающиеся файлы будут обработаны.

Это получит Вас ПРИБЛИЗИТЕЛЬНО
символьный размер, который Вы запросили.

Промежуточные файлы назовут 8"aa.txt", 8"ab.txt", 8"ac.txt", и т.д."`
            text=`echo "$text" | \
            sed -e "s/1/$target.txt/" -e "s/2/$lincount/" \
            -e "s/3/$rez/" -e "s/4/$size/" \
            -e "s/5/$maxpossible/" -e "s/6/$target.txt/" \
            -e "s/7/$maxpossible/" -e "s/8/$shorttarget/g"`
            zenity --info --title="$title" --text="$text"
            cat "$target" | split -$maxpossible - "$shorttarget"
            targets=`ls $shorttarget??`
            multiple=y
            for each in `ls $shorttarget??`
            do
                mv "$each" "$each.txt"
            done
    fi
    ;;
esac
#End of extra stuff for text to image

# Now, do the actual conversion

# usually just one target
targets="$target"

# in a text->image that needed splitting will be multiple $targets
case $multiple in
    y)    count=1
        targets=`ls $shorttarget??*`
        basenew="$new" ;;
esac

echo "$targets" | \
while read target
do
case $multiple in
    y)    case $count in
            ?)    count="00"$count ;;
            ??)    count="0"$count ;;
        esac
        new=`echo "$basenew" | sed "s/\....$/.$count&/"`
        ;;
esac

# some special handling of pdf files
tpdf=n; npdf=n
echo "$target" | grep "pdf$" >/dev/null && tpdf=y
echo "$new" | grep "pdf$" >/dev/null && npdf=y

# if source=pdf and dest=image - set density for reasonable quality
[ "$tpdf$npdf" = "yn" ] && density="-density 600"
# case $tpdf$npdf in
    # yn)    density="-density 600" ;;
# esac


# if source is multi-page, find how many
# but ONLY if target is NOT gif or pdf
echo "$target" | egrep -y "pdf|gif|" && tmult=y
echo "$new" | egrep -y "pdf|gif|" && nmult=y
case $tmult$nmult in
    yy) ;;
    *)
    capext=`echo $ext | tr '[a-z]' '[A-Z]'`
    multipage=`echo "$ident" | grep ".$ext\[[0-9].* $capext" | \
        sed -e "s/ $capext.*//"`
    case "$multipage" in
        *[0-9]\])    multipage=`echo "$multipage" | \
                    sed -e "s/^.*$ext.//" -e 's/.$//g'`
                export multipage each
                
                ;;
    esac
    ;;
esac

text=`mytranslate "Продолжать работать"`
oldsize=`du -a -b "$target" | awk '{print $1}'`
avwatcher "$outdir/$new" "$prog" "$oldsize" $$ &
convert -verbose $density $geom $quality $normeq $textoptions"$target" "$outdir/$new" >/tmp/convert.$$.$count 2>&1
case $overwrite in
    YES)    rename=`echo "$target" | sed "s/$ext$/$each/"`
        mv "$outdir/$new" "$rename"
        rm "$target" ;;
esac
# ImagMagick/convert may call ufraw for camera raw images
# there is a new version of ufraw with slightly different options
# convert is using old options, causing a "deprecated" complaint
# but the results are good as old options are still accepted.
cleanup=`egrep -v "deprecated|ppm16" /tmp/convert.$$.$count` >/tmp/$$
mv /tmp/$$ /tmp/convert.$$.$count
if test -s /tmp/convert.$$.$count
    then    message=`cat /tmp/convert.$$.$count`
        text=`mytranslate "Ошибка произошла во время преобразования

Сообщение было: "`
        zenity --info --text="$text $message" &
    else    rm -f /tmp/convert.$$.$count
fi

case $multiple in
    y)    count=`expr $count + 1` ;;
esac
# end of multiple $targets loop
done

# end of inside loop for $rez
done
# end of outside loop for $dims
done 

# convert -verbose $geom $quality $textoptions"$target" "$outdir/$new" 2>/tmp/convert.$$.$count | zenity --progress --text="Working on $new" --auto-close --auto-kill --pulsate

case $autoloop in
    y)    echo "
            choice=\"$choice\"
            dim=\"$dim\"
            dims=\"$dims\"
            geom=\"$geom\"
            qual=\"$qual\"
            textoptions=\"$textoptions\"
            normeq=\"$normeq\"
                " > /tmp/avconvert.env ;;
esac
}
# end of avconvert



#####
# ffmpeg
#####
myavffmpeg() {
#
# processing audio and video

# set -x
# this is for looping after the first item, using the env for settings
looping=n
if test -s /tmp/avffmpeg.env
    then    . /tmp/avffmpeg.env
        looping=y
fi

# set up output extensions
case $av in
    video)  out=" ogg ogv 3gp asf avi flv mkv mp4 mov mpg rm wmv flac_audio_only m4a_audio_only mp3_audio_only wav_audio_only wma_audio_only jpeg_frames OTHER"
        height=550 ;;
    audio)  out=" ogg flac m4a mp3 wav wma OTHER"
        height=360 ;;
esac

out=`echo "$out" | sed -e 's/ $ext //' -e "s/ / FALSE /g"`

# loop for output conversion type
if [ "$looping" = "n" ]
    then
while true
do
title=`mytranslate "Преобразованный"`
text1=`mytranslate "Исходная информация файла"`
text2=`mytranslate "Выберите OTHER (ДРУГОЙ) для выходного типа, не перечисленного"`
choice=`zenity --list --height=$height --title="$title $target" --text="$text1 $show\n$ffident\n\n$text2" --radiolist --column "$s1" --column "$title" $out` || exit 0

if [ -n "$choice" ]
        then      break
fi
done
fi

# was it OTHER?
case $choice in
        OTHER)  title=`mytranslate "Выходной тип"`
        text=`mytranslate "Предоставьте правильное расширение файла, пример"`
        choice=`zenity --entry --title="$title" --text="$text ogg / vob"` || exit 0 ;;
esac


case $choice in
    *_audio*)    av=audio; choice=`echo $choice | sed 's/_.*//'` ;;
    *_frames)    av=frame; choice=`echo $choice | sed 's/_.*//'`
            outf=`echo $choice | awk -F_ '{print $1}'`
            title=`mytranslate "Frame capture"`
            text=`mytranslate "Число фреймов, чтобы получить в секунду.
FPS (КАДР/С) исходного файла показан выше."`
            step=`zenity --scale --title="$title" --text="$show\n$ffident\n\n$text" --value=1 --min-value=0 --max-value=60 --step=1` || exit 0
            # step="1/$step"
            ;;
esac

# we now have the output type

# ffmpeg options from options files
## SEED THE FILES IF NOT PRESENT
# recreate the audio and video files, create custom if not present

cat <<!audio > ~/.config/avconvert/avconvert.ffopts.audio
# ~/.config/avconvert/avconvert.ffopts.audio
#
# Do *NOT* put your own options here - they will be overwritten!
#
# Use ~/.config/avconvert/avconvert.ffopts.custom instead
#
TRUE AUDIO-CODEC-UNCHANGED
FALSE acodec-ac3
FALSE acodec-mp2
FALSE acodec-libmp3lame
TRUE AUDIO-SAMPLE-RATE-UNCHANGED
FALSE ar-44100
FALSE ar-22050
TRUE AUDIO-BITRATE-UNCHANGED_default=64k
FALSE ab-128k
TRUE VOLUME-UNCHANGED_default=256
FALSE vol-512
!audio

cat <<!video > ~/.config/avconvert/avconvert.ffopts.video
# ~/.config/avconvert/avconvert.ffopts.video
#
# Do *NOT* put your own options here - they will be overwritten!
#
# Use ~/.config/avconvert/avconvert.ffopts.custom instead
#
TRUE VIDEO-SIZE-UNCHANGED#you_choose_width/height_will_be_calculated/aspect_retained
FALSE w-128
FALSE w-320
FALSE w-640
TRUE NO-ROTATION#rotation_requires_VLC_(using_KEY-IN,'vert'/'vlip'/'hflip'_too)
FALSE rotate-right
FALSE rotate-left
TRUE DO-NOT-LETTERBOX#choose_aspect_of_your_player_to_avoid_stretching
FALSE d-1.3333#4:3
FALSE d-1.5#Apple_iPhone
FALSE d-1.7778#16:9
TRUE VIDEO-CODEC-UNCHANGED
FALSE vcodec-libx264
FALSE vcodec-mjpeg
FALSE vcodec-mpeg2video
!video

[ ! -f ~/.config/avconvert/avconvert.ffopts.custom ] && \
cat <<!custom > ~/.config/avconvert/avconvert.ffopts.custom
# ~/.config/avconvert/avconvert.ffopts.custom
#
# The purpose of THIS file is that you can create option-sets that
# you use often, and apply them with a single click in avconvert
#
# This file will NOT be overwritten by updates, but if you remove it then
# a new one will be created with all new options from the latest release
#     
# There MUST be only two "words" per line, separated by a space
# TRUE or FALSE followed by an option.  The option has the "-" moved
#   so that "-option parameter" becomes "option-paramater".
# These can be combined by separating them with "~", as in
#   option1-parameter~option2-paramater
# A comment may be added by following options with "#comment" as in 
#   option1-parameter~option2-parameter#My-Comment-here
#   s-640x480~vcodec-mpeg2video#my_custom_options
# But there must be ONLY ONE space in each line
#
# An option for SIZING (-w) is NOT actually an ffmpeg option.  The real
# size option is "-s WWWxHHH" where WWW and HHH are width and height and
# would be written in an ffopts file as "s-WWWxHHH".  However, both here
# and in ffopts.custom and ffopts.submissions, this script will use the
# "-w WWW" (w-WWW) to trigger automatic resizing of the height to preserve
# the original aspect ratio.  The supplied and calculated values will also
# be rounded down to the nearst multiple of 2 pixels
#
# The DISPLAY option (-d) is ALSO not a true ffmpeg option.  It will be
# used to determine if the video needs to be letterboxed so that aspect
# ration is preserved when played on your device.  So regardless of SIZE,
# if the original aspect does not match your specified DISPLAY, the math
# will be done for you and black bands added to make the video fit.
# Again, this form may also be used in .custom and .submissions files.

TRUE NO-CUSTOM-OPTIONS_these.are.created.using.KEY-IN
FALSE s-640x480~vcodec-mpeg2video~acodec-mp2#Sample_custom_command
!custom

grep tsi-inc ~/.config/avconvert/avconvert.ffopts.custom >/dev/null || cat <<!message >> ~/.config/avconvert/avconvert.ffopts.custom
#
# One more thing:  if you come up with some handy (or necessary) option
# sets for specific conversions and submit them to me, I will start
# maintaining a ~/.config/avconvert/avconvert.ffopts.submissions file and
# regularly post it for download.
# Just email me your option line in the format below.
# Include a comment section, and describe the circumstances that require
# it.  For example "when the input file is *.xxx and the output file is
# *.yyy and ffmpeg identifies the audio stream as zzz.
# Send submissions to:  tsi-inc@comcast.net
# and include "avconvert submission" in the subject line.
!message
cat <<!ffmpeghelp > ~/.config/avconvert/avconvert.ffmpeg-help
NOTE: an option like "-ss 60 -t 30" (seek in 60 seconds and record 30 seconds)
would be written in ~/.config/avconvert/avconvert.ffopts* as:
    ss-60~t-30#seek-60_record-30
but here, use standard command-line syntax, like this:
    -ss 60 -t 30

-t time        "time" is in seconds OR HH:MM:SS.xxx            stop recording after "time"
-fs NNN        "filesize" in bytes                            stop recording at this "size"
-f FFF        format as in "rawvideo" "oss"
-ss time        "time is in seconds OR HH:MM:SS                start recording at "time"
-target        eg. "vcd" "dvd" "ntsc" sets all appropriate options for this type
-b rate        video bitrate in bit/s                        default "200 kb/s" (200000)
-r fps        video frames per second in HZ                    default "25" fps
-s size        frame size HHHxVVV (default is retain original)    HORIZONTALxVERTICAL size
-aspect        4:3  16:9  1.3333  1.7777
-croptop        NN crop NN pixels from the top                produces a band
-cropbottom    -cropleft   -cropright                        (see croptop)
-padtop        NN  pad NNN pixels on the top                produces a band
-padbottom    -padleft   -padright                            (see padtop)
-padcolor        H 6-digit HEX value (eg 000000) for padded bands
-vcodec        CC  CC is codec name as in "libxvid" "mpeg4"
-pass N        N = 1 or 2                                                 1-pass or 2-pass vid encoding
-ilme        (MPEG-2/4) if input interlaced, retain it for higher quality
-ar            NNN     audio sample frequency 44100/22050/11025 default 44100
-ab            NNN     audio birate in bit/s                              default 64k
-ac            N       number of audio channels                           default 1
-an            disable audio recording
-acodec CCC    audio codec name as in "ac3" "mp2"
-tvstdc SSS    set TV standard to NTSC PAL SECAM
-shortest        finish recording when shortest input stream ends

Not OFFICIALLY ffmpeg options, but handled by avconvert:

-w            WWW    specify a new video width, height is calculated for you
-d            A.AAAA    specify the HxW ratio of a display device for letterboxing to preserve aspect ratio
!ffmpeghelp

## END OF SEEDING THE FILES
# THE WORK STARTS HERE...

# If we are NOT in a loop, ask for options...
if [ "$looping" = "n" ]
    then
case $av in
    audio)    storedopts=`cat ~/.config/avconvert/avconvert.ffopts.audio ~/.config/avconvert/avconvert.ffopts.custom ~/.config/avconvert/avconvert.ffopts.submissions 2>/dev/null` ;;
    video)    storedopts=`cat ~/.config/avconvert/avconvert.ffopts.audio ~/.config/avconvert/avconvert.ffopts.video ~/.config/avconvert/avconvert.ffopts.custom ~/.config/avconvert/avconvert.ffopts.submissions 2>/dev/null` ;;
esac
storedopts=`echo "$storedopts" | sed 's/^#.*//'`

title=`mytranslate "Дополнительные опции"`
text1=`mytranslate "Исходный файл:"`
text2=`mytranslate "Выберите комбинацию опций или оставьте все БЕЗ ИЗМЕНЕНИЙ.
Вы можете выбрать опции здесь и нажать KEY-IN-OPTIONS, 
тогда выбранные и включенные опции будут обе использоваться.
Есть страница справки для ключа в опциях.

Обратите внимание на то что, если бы опции были НЕ ИЗМЕНЕНЫ, 
то результат фактически привел бы к некоторым действиям по-умолчанию. 
Итак, проверьте свои результаты!
Если ВСЕ опции НЕ ИЗМЕНЕНЫ, ffmpeg выполняется с параметром -sameq

Эти опции будут сохранены в ~/.config/avconvert/avconvert.ffopts*
Вы можете изменить файл avconvert.ffopts.custom, который не будет перезаписан.
Используйте свой любимый текстовый редактор и следуйте инструкциям, содержащиеся в этом файле."`
c1=`mytranslate "Выберите ТОЛЬКО ОДИН из каждой категории"`

ffopts=`zenity --list --height=600 --title="$title" --text="$text1 $target\n$ffident\n\n$text2" --checklist --column "$s1" --column "$c1" $storedopts FALSE KEY-IN-OPTIONS` || exit 0

if echo "$ffopts" | grep KEY-IN-OPTIONS >/dev/null
    then    title=`mytranslate "Краткий список ffmpeg опций"`
        zenity --info --no-wrap --title="FFMPEG:  $title" --text="`cat ~/.config/avconvert/avconvert.ffmpeg-help`" 2>/dev/null &
        sleep .5
        zpid=`ps -ef | grep -v grep | grep -e "--title=FFMPEG:" | \
            awk '{print $2}'`
        title=`mytranslate "Введите свои опции"`
        text=`mytranslate "Примеры (оставить незаполненный ни для одного)
"`
        text2=`mytranslate "

Если Вы добавите комментарий, то Ваши опции будут сохранены для будущего использования
в ~/.config/avconvert.ffopts.custom.  Пример:   "`
        text3=`mytranslate "My favorite"`
dopts=`echo "$ffopts" | tr '|' '\012' | sed 's/^[A-Z].*//' | grep -v '^$'`
dopts=`echo "$dopts" | sed -e 's/^/ /' -e 's/#.*//'`
dopts=`echo "$dopts" | sed -e 's/~/ /g' -e 's/-/~/g' -e 's/ / -/g' -e 's/~/ /g'`
case "$dopts" in
    " -")    dopts="" ;;
esac
        keyin=`zenity --entry --title="$title" --text="$text     -acodec mpeg3 -vcodec libx264 -ab 320k$text2 -acodec mpeg2 -vcodec libx264 # $text3

Current ffmpeg options:  $dopts"`
        kill -15 $zpid >/dev/null 2>&1
        if echo "$keyin" | grep "#" >/dev/null
            then
            opt=`echo "$keyin" | sed -e 's/  */ /g' -e 's/^ //'`
            com=`echo "$opt" | sed -e 's/^.*#//' \
                -e 's/^ //' -e 's/ $//' -e 's/ /_/g'`
            opt=`echo "$opt" | sed 's/#.*//'`
            for word in $opt
            do
                case $word in
                -*)    line=$line`echo $word | sed 's/-//'` ;;
                *)    line=$line-$word~ ;;
                esac
            done
            line=`echo "$line#$com" | sed 's/~#/#/'`
            echo "FALSE $line" >> ~/.config/avconvert/avconvert.ffopts.custom
            keyin=`echo "$keyin" | sed 's/#.*//'`
        fi
fi

Это первая часть одного файла, т.к. скопировать весь скрипт не позволяет лимит сообщения.

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

414

Вторая часть:

# manage the SPECIAL options for resizing and letterboxing
size=`echo "$ffident" | grep Video | awk '{print $6}'`    #current size per ffmpeg
size=`echo $size | sed 's/,//'`
curw=`echo $size | sed 's/x.*$//'`            #current width
oldw=$curw
curh=`echo $size | sed 's/^.*x//'`            #current height
cura=`echo -e "scale=2\n$curw / $curh\nquit" | bc`    #current aspect
wopt=`echo "$ffopts" | grep "w-" | sed 's/^.*w-//' | \
    sed -e 's/|.*//' -e 's/#.*//'`             #new width
neww=$wopt
disp=`echo "$ffopts" | grep "d-" | sed 's/^.*d-//' | \
    sed -e 's/|.*//' -e 's/#.*//'`             #disp asp
if [ ! -z "$neww" ]
    then    neww=`expr $neww / 2 \* 2`        #round down
        scale=`echo -e "scale=5\n$curw / $neww\nquit" | bc` #height chg
        newh=`echo -e "scale=5\n$curh / $scale\nquit" | bc` # new HHH
        newh=`echo $newh | sed 's/\..*//'`    #integer
        newh=`expr $newh / 2 \* 2`        #round down
        curh=$newh                #new HHH
        oldw=$curw
        curw=$neww
        nopt="$neww"x"$newh"            #WWWxHHH string
        ffopts=`echo "$ffopts" | sed "s/w-$wopt/s-$nopt/"` #substitute
fi

if [ ! -z "$disp" ]
then    # *10000 and remove decimal, so "test" can treat as integer
    # which aspect is wider? to calculate padding
    curam=`echo -e "scale=5\n$cura * 10000\nquit" | bc`
    dispm=`echo -e "scale=5\n$disp * 10000\nquit" | bc`
    curam=`echo $curam | sed 's/\..*//'`
    dispm=`echo $dispm | sed 's/\..*//'`
    if [ "$cura" != "$disp" ]
    then    if [ "$curam" -ge "$dispm" ]
            then    # current aspect is wider than target aspect
                # pad top and bottom
        xtra=`echo -e "scale=5\n$cura / $disp * $curh\nquit" | bc` #dots
            pad=tb
            else    # target aspect is wider than current aspect
                # pad left and right
        xtra=`echo -e "scale=5\n$disp / $cura * $curw\nquit" | bc` #dots
            pad=lr
        fi
        # $xtra is the total dots HHH or WWW in display aspect
        xtra=`echo $xtra | sed 's/\..*//'`    #integer
        # ACTUAL pad is $xtra - soze-of-image
        case $pad in
            tb)    xtra=`expr $xtra - $curh + 1` ;;  #subtract HHH
            lr)    xtra=`expr $xtra - $curw + 1` ;;  #subtract WWW
        esac
        # the padding should be half/half either L/R or T/B
        xtra=`expr $xtra / 2`            #top/bottom
        xtra=`expr $xtra / 2 \* 2`        #round down
        # create command option
        case $pad in
            tb)    padding="padtop-$xtra|padbottom-$xtra" ;;
            lr)    padding="padleft-$xtra|padright-$xtra" ;;
        esac
        ffopts=`echo "$ffopts" | \
            sed "s/d-$disp/$padding|aspect-$disp/"`
    fi
fi
## end of aspect and padding section

ffopts=`echo "$ffopts" | tr '|' '\012' | sed 's/^[A-Z].*//' | grep -v '^$'`
if echo "$ffopts" | grep rotate >/dev/null
    then    rotate=`echo "$ffopts" | grep rotate`
        ffopts=`echo "$ffopts" | grep -v rotate`
        case $rotate in
            *right)    rotate=90 ;;
            *vert)    rotate=180 ;;
            *left)    rotate=270 ;;
            *vflip)    rotate=vflip ;;
            *hflip)    rotate=hflip ;;
        esac
fi
ffopts=`echo "$ffopts" | sed -e 's/^/ /' -e 's/#.*//'`
ffopts=`echo "$ffopts" | sed -e 's/~/ /g' -e 's/-/~/g' -e 's/ / -/g' -e 's/~/ /g'`
case "$ffopts" in
    " -")    ffopts=" -sameq" ;;
esac

ffopts="$ffopts $keyin"
# echo -e "\n\nThe final ffmpeg options look like this:\n"
# echo $ffopts

# END OF OPTION-SETTING
fi

new=`echo $target | sed "s/$ext$/$dot$choice/"`

case $av in
    frame)    new="$target.frame-%04d.$outf"
        specialopts="-f image2 -r $step" ;;
esac

case $new in
    *3gp)    x264=`ls /usr/lib/*x264* | sed 's/\..*//' | head -1`
        x264=`basename $x264`
        specialopts="-vcodec $x264 -acodec libfaac" ;;
    *flv)    case "$ffopts" in
            *-ar*)    ;;
            *)    ar=`echo "$ffident" | grep Audio | \
                awk -F, '{print $2}' | 
                sed -e 's/Hz//' -e 's/ //g'`
                if [ "$ar" -gt "11025" ]
                    then    nr=11025
                fi
                if [ "$ar" -gt "22050" ]
                    then    nr=22050
                fi
                if [ "$ar" -gt "44100" ]
                    then    nr=44100
                fi
                ffopts="$ffopts -ar $nr"
                ;;
        esac
esac

case "$outdir/$new" in
    "$dir/$target")    title=`mytranslate "У конечного файла то же имя, как у исходного!!  Выберите новое имя"`
            newout=`zenity --file-selection --filename="$outdir/$new" --save --confirm-overwrite --title="$title"` || exit 0
            outdir=`dirname "$newout"`
            new=`basename "$newout"`
            ;;
esac

if test -s "$outdir/$new"
    then    text=`mytranslate "существует - Переписать?

(ДА, чтобы перезаписать; НЕТ, чтобы переименовать)"` 
        zenity --question --text="$outdir/$new $text" || newout=`zenity --file-selection --filename="$outdir/$new" --save --confirm-overwrite --title="Выберите новый файл/папку"` || exit 0
        if [ ! -z "$newout" ]
            then    outdir=`dirname "$newout"`
                new=`basename "$newout"`
        fi
fi

oldsize=`du -a -b "$target" | awk '{print $1}'`
case $rotate in
    ?*)    tempfile=`echo "$target" | sed 's/^/rotate-/'`
        avwatcher "$outdir/$tempfile" "mencoder" "$oldsize" $$ &
        # first attempt:
        # mencoder -vf rotate=$rotate -o "$outdir/$tempfile" -oac copy -ovc lavc "$target"
        # better quality:
mident=`midentify "$target"`
arate=`echo "$mident" | grep "AUDIO_BITRATE" | tail -1 | awk -F= '{print $2}'`
vrate=`echo "$mident" | grep "VIDEO_BITRATE" | tail -1 | awk -F= '{print $2}'`
rpass1=`mencoder "$target" -ovc lavc -lavcopts vbitrate=$vrate:vpass=1:turbo:threads=2 -oac copy -passlogfile $outdir/2pass.log -o "/tmp/mencoder-pass1-$tempfile" 2>&1`
rpass2=`mencoder "$target" -vf rotate=$rotate -ovc lavc -lavcopts vbitrate=$vrate:vpass=2:vhq=4:threads=2:abitrate=$arate -oac copy -passlogfile $outdir/2pass.log -o "$outdir/$tempfile" 2>&1`
echo -e "\tPASS 1\n\n$rpass1" > /tmp/mencoder-rotate.$$
echo "\n\n\tPASS 2\n\n$rpass2" >> /tmp/mencoder-rotate.$$
rm -f $outdir/2pass.log
midentr=`midentify "$outdir/$tempfile"`
arater=`echo "$midentr" | grep "AUDIO_BITRATE" | tail -1 | awk -F= '{print $2}'`
vrater=`echo "$midentr" | grep "VIDEO_BITRATE" | tail -1 | awk -F= '{print $2}'`
sizeof=`wc "$outdir/$tempfile" | awk '{print $3}'`
if [ "$arater"="0" -o "$vrater"="0" -o "$sizeof"="0" ]
    then    zenity --warning --title="Изменить не удалось" --text="Изменить не удалось!  :-(\n\nMencoder не работает хорошо со всеми кодеками.\nПопытайтесь сначала преобразовать свой файл (возможно, в AVI) и получите результат"; exit 0
fi
        #   NEW WAY with VLC, which apparently doesn't work "yet"
        #   BECAUSE vlc will NOT write 'transforms' to a file!
        #   so the IMPROVED MENCODER code above is being used
        # avwatcher "$outdir/$tempfile" "vlc" "$oldsize" $$ &
        # vlc -I dummy "$target" -vvv --vout-filter=transform --transform-type=$rotate --sout '#transcode{deinterlace,audio-sync}:standard{dst="$tempfile",access=file}' vlc://quit > /tmp/vlc.$$ 2>&1
        target="$outdir/$tempfile"
        oldsize=`du -a -b "$target" | awk '{print $1}'`
        ;;
esac

avwatcher "$outdir/$new" "$prog" "$oldsize" $$ &

echo -e "ffident:\n$ffident\n" >/tmp/ffmpeg.$$
echo "ffmpeg command as executed:" >>/tmp/ffmpeg.$$
echo ffmpeg -y -i "$target" $vol $specialopts $ffopts "$outdir/$new" >>/tmp/ffmpeg.$$
echo >>/tmp/ffmpeg.$$
# set -x
ffmpeg -y -i "$target" $vol $specialopts $ffopts "$outdir/$new" 2>&1 | tr '=' '\012' >> /tmp/ffmpeg.$$

case $rotate in
    ?)    echo "mencoder rotated original file to $outdir/$tempfile" >>/tmp/ffmpeg.$$
        if test -s "/tmp/$tempfile"
            then    : it worked
            else    echo "but that operation failed" >>/tmp/ffmpeg.$$
        fi ;;
esac

result=`tail -5 /tmp/$prog.$$`
result="$result

The full text output from this conversion is in /tmp/$prog.$$
"

grep "lame: output buffer too small" /tmp/ffmpeg.$$ && note=`mytranslate "
Сообщение о буфере libmp3lame безсмысленно.
Если это - единственное сообщение жалобы, преобразование действительно сработало."`

grep "bitrate tolerance too small" /tmp/ffmpeg.$$ && note=`mytranslate "
Сообщение о слишком маленьком допуске скорости передачи должно
к пути ffmpeg работы. Секунды между фреймами не могут быть
больше, чем о 2/3 кадров в секунду в видео.

ВОЗМОЖНОЕ РЕШЕНИЕ: Определите меньшие секунды между фреймами"`

grep "does not support" /tmp/ffmpeg.$$ && note=`mytranslate "
ffmpeg требует больше/различных вариантов для этого преобразования
    ИЛИ
Ваш исходный файл необычен и требует специальных опций

POSSIBLE SOLUTIONS:
    specify a video or audio codec
    specify a sample rate
    specify a different output size"`

newsize=`du -a -b "$new" | sed 's/   .*//'`
# show results summary
case $quiet in
    y)    notify="--notification --window-icon=/usr/share/zenity/zenity-progress.png"
        cp /usr/share/zenity/zenity.glade.progress-under /usr/share/zenity/zenity.glade 2>/dev/null ;;
    n)    notify="--info"
        cp /usr/share/zenity/zenity.glade.progress-over /usr/share/zenity/zenity.glade 2>/dev/null ;;
esac

title=`mytranslate "Результаты преобразования"`
text=`mytranslate "Последнее сообщение в"`
text2=`mytranslate "Размер файла:"`
zenity $notify --title="$title" --text="$target --> $new
$text2 $newsize
$note

$prog $text /tmp/$prog.$$:
$result" &
sleep .25
zpid=`ps -ef | grep -v grep | grep -e "--notification" | awk '{print $2}'`
case "$zpid" in
    '')    ;;
    *)    (sleep 60; kill -9 $zpid >/dev/null 2>&1) & ;;
esac

case $autoloop in
    y)    echo -e "choice=\"$choice\"\nbits=\"$bits\"" > /tmp/avffmpeg.env ;;
esac
}
# end of ffmpeg


#####
# ISO conversions
#####
myaviso() {

case $it in
    bchunk)    
        which bchunk >/dev/null 2>&1 || exec zenity --warning --text="Необходимо установить сначала пакет \"bchunk\" !"
        tracks=`grep TRACK $base.cue | awk '{print $2}'`
        zenity --question --text="BIN/CUE преобразуют в ISO\nCUE показывает дорожки $tracks\nПрогресс будет указан для первой дорожки только \nкоторая будет названа "$base"01.iso" || exit 0
        new="$outdir/$base"
        if test -s "$new"01.iso
            then    zenity --question --text="$new"01.iso" существует - Переписать?" || new=`zenity --file-selection --filename="$outdir/$new" --save --confirm-overwrite --title="Выберите новый файл/папку"` || exit 0
        fi
        prog=bchunk
        oldsize=`du -a -b "$base.bin" | awk '{print $1}'`
        avwatcher "$new"01.iso "$prog" "$oldsize" $$ &
        bchunk "$base.bin" "$base.cue" "$new" >/tmp/bchunk.$$ 2>&1
        ;;
        daa*|nrg*|b?i*|cdi*|mdf*|pdi*|ccd*|uif*)
        which $it >/dev/null 2>&1 || exec zenity --warning --text="Никакая программа \"$it\" не найдена для обработки \"$target\"!\n\nДля преобразования ISO, установите один или более из этих пакетов...\n\nAcetoneISO для:  b5i cdi mdf nrg pdi\nnrg2iso для:     nrg\ndaa2iso для:     daa\nbchunk для:      bin/cue\nccd2iso для:     cdd\nuif2iso для:      uif\n\ncdd2iso доступно на: sourceforge.net/projects/ccd2iso\nuif2iso доступно на: aluigi.altervista.org/mytoolz.htm\n\nостальные находятся в репозиториях."
        base=`echo $target | sed 's/....$//'`
                zenity --question --text="Исходный файл $target\n$ext преобразованный в ISO\nбудет назван $base.iso" || exit 0
                new="$outdir/$base".iso
                if test -s "$new".iso
                        then     zenity --question --text="$new".iso" exists - Overwrite?" || new=`zenity --file-selection --filename="$outdir/$new" --save --confirm-overwrite --title="Choose a new file/folder"` || exit 0
                new="$new".iso
                fi
        prog=$ext"2iso"
        oldsize=`du -a -b "$target" | awk '{print $1}'`
        avwatcher "$new" "$prog" "$oldsize" $$ &
        case $ext in
            b?i|pdi)    new="" ;;
        esac
        $prog "$target" "$new" >/tmp/$prog.$$ 2>&1
        ;;
esac

}
# end of iso conversions
#####
# Text conversions
#####
myavtext() {
#
# processing text between formats and into other things

# set -x

case $it in
    text)    # image->avconvert sound->espeak html->txt2tags
        out=" image sound html"; height=300 ;;
    doc)    # text->antiword
        out=" text"; height=300 ;;
    rtf)    # text->unrtf html->unrtf
        out=" text html"; height=300 ;;
    odt)    # text->odt2txt xml->odt2txt
        out=" text xml"; height=300 ;;
esac

out=`echo "$out" | sed -e 's/ $ext //' -e "s/ / FALSE /g"`

# loop for output conversion type
while true
do
title=`mytranslate "Конвертированный"`
text=`mytranslate "Формат исходного файла"`
text2=`mytranslate "Конвертировать в формат"`
choice=`zenity --list --height=$height --title="$title $target" --text="$text $show\n$ffident\n" --radiolist --column "$s1" --column "$text2" $out` || exit 0

if [ -n "$choice" ]
        then      break
fi
done

# pre-check for installed application
case $it$choice in
    textsound)    if ! which espeak >/dev/null 2>&1
            then    zenity --warning --title=HELP --text="\"espeak\" package needs to be installed"
                exit 0
            fi ;;
    texthtml)    if ! which txt2tags >/dev/null 2>&1
            then    zenity --warning --title=HELP --text="\"txt2tags\" package needs to be installed"
                exit 0
            fi ;;
    doctext)    if ! which antiword >/dev/null 2>&1
            then    zenity --warning --title=HELP --text="\"antiword\" package needs to be installed"
                exit 0
            fi ;;
esac

case $it$choice in
    textimage)    prog=convert; myavconvert 2>/tmp/avconvert.debug ;;
    textsound)    title=`mytranslate "Язык"`
            text=`mytranslate "Выберите язык для произношения"`
            pronun=`zenity --list --height=500 --title="$title" --text="$text" --radiolist --column "$s1" --column "$title" FALSE af_afrikaans FALSE bs_bosnian FALSE cs_czech FALSE cy_welsh FALSE de_german FALSE el_greek TRUE en_english FALSE es_spanish FALSE fi_finnish FALSE fr_french FALSE hi_hindi FALSE hr_croatian FALSE hu_hungarian FALSE is_icelandic FALSE it_italian FALSE la_latin FALSE mk_macedonian FALSE nl_dutch FALSE no_norwegian FALSE pl_polish FALSE pt_brazil FALSE ro_romanian FALSE ru_russian FALSE sk_slovak FALSE sr_serbian FALSE sv_swedish FALSE sw_swahihi FALSE vi_vietnam FALSE zh_Mandarin` || exit 0
            pronun=`echo $pronun | sed 's/_.*//'`
            title=`mytranslate "Голос"`
            text=`mytranslate "Выберите речь для использования"`
            voice=`zenity --list --height=400 --title="$title" --text="$text" --radiolist --column "$s1" --column "$title" FALSE m1_male-1 FALSE m2_male-2 FALSE m3_male-3 FALSE m4_male-4 FALSE f1_female-1 TRUE f2_female-2 FALSE f3_female-3 FALSE f4_female-4 FALSE croak FALSE whisper` || exit 0
            voice=`echo $voice | sed 's/_.*//'`
            text=`mytranslate "Высота"`
            pitch=`zenity --scale --text="$text" --min-value=0 --max-value=99 --value=50` || exit 0
            text=`mytranslate "Скорость"`
            speed=`zenity --scale --text="$text" --min-value=0 --max-value=99 --value=43` || exit 0
            speed=`expr $speed \* 4`
            new=`echo "$target" | \
                sed -e 's/.txt$//' -e 's/$/.wav/'`
            oldsize=`du -a -b "$target" | awk '{print $1}'`
            avwatcher "$outdir/$new" "$prog" "$oldsize" $$ &
            cat "$target" | espeak --stdin -v$pronun+$voice -p $pitch -s $speed -w "$outdir/$new" >/tmp/espeak.$$ 2>&1
            ;;
    texthtml)    new=`echo "$target" | \
                sed -e 's/.txt$//' -e 's/$/.html/'`
            oldsize=`du -a -b "$target" | awk '{print $1}'`
            avwatcher "$outdir/$new" "$prog" "$oldsize" $$ &
            txt2tags --infile="$target" --outfile="$outdir/$new" -t xhtml >> /tmp/txt2tags.$$ 2>&1
            if test -s /tmp/txt2tags.$$
            then    title=`mytranslate "вывод программы"`
                zenity --info --title="txt2tags $title" --text=`cat /tmp/txt2tags.$$`
            fi
            rm -f /tmp/txt2tags.$$
            ;;
    doctext)    new=`echo "$target" | \
                sed -e 's/.doc$//' -e 's/$/.txt/'`
            title=`mytranslate "Опции"`
            text=`mytranslate "Включить любой из них?

r = \"revisioning text\"
s = \"hidden text\""`
            text2=`mytranslate "Встроенный текст"`
            incl=`zenity --list --height=300 --title="$title" --text="$text" --checklist --column "$s1" --column "$text2" FALSE r FALSE s ` || exit 0
            case $incl in
                '')    ;;
                *)    opts=`echo "$incl" | sed 's/|/ /g' | \
                    sed 's/^/ /' | sed 's/ / -/g'` ;;
            esac
            oldsize=`du -a -b "$target" | awk '{print $1}'`
            avwatcher "$outdir/$new" "$prog" "$oldsize" $$ &
            antiword $opts "$target" > "$outdir/$new" 2>>/tmp/antiword.$$
            if test -s /tmp/antiword.$$
            then    zenity --info --title="antiword output" --text=`cat /tmp/antiword.$$`
            fi
            rm -f /tmp/antiword.$$
            ;;
    *)    text=`mytranslate "Не готов еще"`
        zenity --info --title="OOPS!" --text="$text"; exit 0 ;;

esac
}
# end of text

#####
# Initial script  #~/.gnome2/nautilus-scripts; export PATH
#####
PATH=$PATH:.:~/.config/caja/scripts/Мультимедиа; export PATH

# check some stuff first...
# have we been renamed?
case `basename $0` in
    avconvert)    ;;
    *)        exec xterm -hold -geometry 70x2 -bg red -T "Пожалйста, переименуйте скрипт назад в 'avconvert'" -e true ;;
esac
# if zenity is not installed, use xterm to display a warning
which zenity >/dev/null 2>&1 || exec xterm -hold -geometry 50x2 -bg red -T "OOPS! Must install zenity first!" -e true
# if imagemagick is not installed, display warning
which convert >/dev/null 2>&1 || im="\n\t\"ImageMagick\""
# if ffmpeg is not installed, display warning
which ffmpeg >/dev/null 2>&1 || ffmpeg="\n\t\"ffmpeg\""
# etc, etc
which wget >/dev/null 2>&1 || wget="\n\t\"wget\""
which curl >/dev/null 2>&1 || curl="\n\t\"curl\""
which gawk >/dev/null 2>&1 || gawk="\n\t\"gawk\""
which links >/dev/null 2>&1 || which elinks >/dev/null 2>&1 || links="\n\t\"links\" or \"elinks\""
which bc >/dev/null 2>&1 || bc="\n\t\"bc\""

# special handling for translate
translate="\n\t\"libtranslate\" or \"libtranslate-bin\"\n\t  (whichever your distro offers)"
which translate-bin 2>&1 >/dev/null && info translate-bin | grep -q "translate a text" && trbin=/usr/bin/translate-bin
which translate >/dev/null 2>&1 && info translate | grep -q "translate a text" && trbin=/usr/bin/translate
case $trbin in
        /*)     translate="" ;;
esac

case $im$ffmpeg$wget$curl$gawk$links$bc$translate in
    ?*)    exec zenity --warning --text "Пожалуйста, установите пакет$im$ffmpeg$wget$curl$gawk$links$bc$translate\nи запустите конвертер снова!" ;;
esac

# the config files are now moved....
mkdir -p ~/.config/avconvert
if test -f ~/.avconvert
    then    for each in ~/.avconvert*
        do
            new=`echo "$each" | sed 's/^.*\/.//'`
            mv $each ~/.config/avconvert/$new
        done
fi

# translation

langlist=`$trbin -f en -l | \
    sed -e 's/.*-> //' -e 's/ /=/' -e 's/:.*//' | \
    tr -d '()\040'`

dlang=`echo "$LANG" | sed 's/_.*//'`
langlist=`echo -e "en=English\n$langlist" | sort | uniq | \
    sed -e 's/^/FALSE /' -e "/ $dlang=/s/FALSE/TRUE/"`

online=n
#echo "$langlist" | grep English >/dev/null && online=y
if ping -c 1 google.com >/dev/null 2>&1
    then    online=y
fi

# if language preference file is out of date, remove it
if grep "lang=" ~/.config/avconvert/avconvert.lang >/dev/null 2>&1
    then    :
    else    rm -f ~/.config/avconvert/avconvert.lang
fi

# requirements for translations
if which curl >/dev/null 2>&1
    then    curlok=y
    else    curlok=n; text="$text\n\tcurl"
fi
if which elinks >/dev/null 2>&1
    then    linksok=y; links=elinks
    else    if which links >/dev/null 2>&1
            then    linksok=y; links=links
            else    linksok=n; text="$text\n\telinks  -OR-  links"
        fi
fi

# if we are not online, do not ask about language
if [ "$online" = "n" ]
    then    lang=en
    else
# check language
if test -s ~/.config/avconvert/avconvert.lang
    then    . ~/.config/avconvert/avconvert.lang
        case $curlok$linksok in
            *n*)    if [ "$lang" = "en" ]
                    then    : ok
                    else    zenity --info --title="Required for translation" --text="Please install$text\nfor translation"
                        lang="en"
                fi
                ;;
        esac
        export lang service
    else    lang=`zenity --list --height=520 --title="Language" --text="Выберите язык для всего текста" --radiolist --column="Select" --column="Language" $langlist` || exit 0
        lang=`echo $lang | sed 's/=.*//'`
        echo "lang=$lang" > ~/.config/avconvert/avconvert.lang
        export lang
        if [ "$lang" = "en" ]
            then    online=n
            else    text="Пожалуйста, установите пакет(s):\n"
                case $curlok$linksok in
                    *n*)    zenity --info --title="Необходимы пакеты" --text "$text\n\nдля показа перевода.\nПереход на английский язык, пока не установлено."
                        online=n ;;
                esac

                #service=`zenity --list --title="Service" --text="Which service should be used" --radiolist --column="Select" --column="Language" TRUE google FALSE babel` || exit 0
                #echo "service=$service" >> ~/.config/avconvert/avconvert.lang
                #export lang service
                export lang
        fi
        title=`mytranslate "Параметры языка"`
        text=`mytranslate "Когда Интернет будет доступен, этот сценарий будет
отправлять текст через сервис онлайн-перевода.

Если не будет интернет-соединения, то все будет на английском языке.
Если Интернет медленный, переводы могут работать не хорошо.
Пожалуйста, сообщите мне, если есть проблемы, чтобы я мог это улучшить.

Ваш язык сохранен в ~/.config/avconvert/avconvert.lang
Удалите или отредактируйте тот файл, чтобы изменить язык."`
        [ "$lang" = "en" ] && text="Вы приняли решение вывести на экран текст на английском языке.

Вы можете изменить язык, редактируя или удаляя
~/.config/avconvert/avconvert.lang"
        zenity --info --title="$title" --text="$text"
fi
fi

# if language is EN, we do not need to translate
case $lang in
    en)    online=n ;;
esac

if grep "trash=" ~/.config/avconvert/avconvert >/dev/null 2>&1
    then    : UP TO DATE
    else    rm -f ~/.config/avconvert/[Aa]vconvert
fi

if test -s ~/.config/avconvert/avconvert
    then    : defaults already set
    else    echo -e "destdir=n\nautoloop=n\nzenityfix=n\nquiet=n\ntrash=n" > ~/.config/avconvert/avconvert
        title=`mytranslate "Набор значения по-умолчанию"`
        text=`mytranslate "Это - Ваш первый показ avconvert.

Файл ~/.config/avconvert/avconvert может сохранить некоторые поведения по-умолчанию.  Вы можете теперь создать тот, выбирая из опций ниже,
и Вы можете изменить его в любое время, редактируя его непосредственно или удаляя его, который инициирует этот диалог, чтобы вновь появиться.

Читайте каждую опцию ниже и выберите Ваши параметры, сопровождая OK, или нажмите Cancel, чтобы задержать это до позже."`
        p1=`mytranslate "Всегда всплывающее окно, чтобы попросить место назначения, в которое можно сохранить переделанные файлы"`
        p2=`mytranslate "Когда выбрано много файлов, то обрабатывать каждый таким же образом"`
        p3=`mytranslate "Проверьте zenity значения по-умолчанию и предложите фиксировать их раскрытие так, как ЗАКОНЧЕНЫ, а не ПОД"`
        p4=`mytranslate "Тихий режим - использует 'уведомление' вместо 'информации', чтобы показать некоторые результаты преобразования"`
        p5=`mytranslate "ОЧЕНЬ тихий режим - НИКОГДА не показывает индикаторы хода выполнения"`
        p6=`mytranslate "После преобразований, предложение переместить оригиналы в ~/Desktop/avconvert-Trash"`
        behavior=`zenity --list --height=400 --title="$title" --text="$text" --checklist --column="" --column="Description" TRUE "$p1 (destdir=y)" TRUE "$p2 (autoloop=y)" TRUE "$p3 (zenityfix=y)" TRUE "$p4 (quiet=y)" FALSE "$p5 (veryquiet=y)" FALSE "$p6 (trash=n)"` || exit 0
echo "$behavior" | tr '|' '\012' | sed -e 's/^.*(//' -e 's/.$//' | grep "=" >> ~/.config/avconvert/avconvert

        title=`mytranslate "Набор значения по-умолчанию изображения"`
        text=`mytranslate "При преобразовании изображений система может установить значение по-умолчанию для типа файла быть преобразованным в.

выберите один из следующих"`
        col=`mytranslate "Расширения изображения по-умолчанию"`
        i1=`mytranslate "Никакого значения по-умолчанию не должно быть предварительно выбрано"`
        i2=`mytranslate "Создайте изображение того же типа, как исходный"`
        i3=`mytranslate "Тип изображения по-умолчанию должен быть"`
        imageext=none
        imageext=`zenity --list --height=370 --title="$title" --text="$text" --radiolist --column="" --column="$col" TRUE "$i1 (imageext=none)" FALSE "$i2 (imageext=same)" FALSE "$i3 gif (imageext=gif)" FALSE "$i3 jpg (imageext=jpg)" FALSE "$i3 ico (imageext=ico)" FALSE "$i3 pdf (imageext=pdf)" FALSE "$i3 png (imageext=png)" FALSE "$i3 tif (imageext=tif)"` || exit 0

echo "$imageext" | tr '|' '\012' | sed -e 's/^.*(//' -e 's/.$//' >> ~/.config/avconvert/avconvert
. ~/.config/avconvert/avconvert

echo "# Defaults file for avconvert, created `date`
destdir=$destdir
autoloop=$autoloop
zenityfix=$zenityfix
quiet=$quiet
veryquiet=$veryquiet
trash=$trash
imageext=$imageext
" > ~/.config/avconvert/avconvert
fi

# set everything to 'defaults' regardless of preferences file
# in case there's no file, or some are missing
destdir=y; autoloop=x; zenityfix=y; imageext=none; quiet=n trash=n

# now "dot" the file if it is there
# due to google translator, be sure it is linked to Avconvert as well
if test -s ~/.config/avconvert/avconvert
    then    . ~/.config/avconvert/avconvert
    if cmp ~/.config/avconvert/avconvert ~/.config/avconvert/Avconvert >/dev/null 2>&1
        then    : alldone
        else    rm -f ~/.config/avconvert/Avconvert
            ln ~/.config/avconvert/avconvert ~/.config/avconvert/Avconvert
    fi
fi

# here we go.....

# let's get some common translated phrases in advance first:
# export them all!!
s1=`mytranslate "Выбор"`; export s1


while true
do
    case $1 in
        --no-destdir)    destdir=n; shift ;;
        --no-loop)    autoloop=n; shift ;;
        --no-zenityfix)    zenityfix=n; shift ;;
        *)        break ;;
    esac
done

case $1 in
    '')    which avconvert >/dev/null 2>&1 || exec zenity --warning --text="Внимание необходимо:\n\nНикакие исходные файлы не были выбраны.  Это OK,\nно для того, чтобы работать должным образом, программа avconvert должна быть скопирована или соединена\nк расположению, которое находится по Вашему ПУТИ.\nИли Вы можете изменить свой ПУТЬ, чтобы включить расположение этого сценария."
        title=`mytranslate "Выберите исходные файлы. Они должны быть все того же типа (все изображения или все видео, и т.д.)"`
        files=`zenity --title="$title" --file-selection --multiple --separator="|"` || exit 0
        files=`echo "$files" | sed -e 's/^/"/' -e 's/$/"/' -e 's/|/" "/g'`
        echo "avconvert $* $files" > /tmp/avconvert.rerun
        sh /tmp/avconvert.rerun &
        rm -f /tmp/avconvert.rerun
        exit 0
        ;;
esac

# if this is not a "fixable" zenity, do not try to fix it
# (at least) ubuntu 9.10 lacks the configuration file
if test -s /usr/share/zenity/zenity.glade
    then    : good
    else    zenityfix=n
fi
case $zenityfix in
    n)    ;;
    *)
if test -s /usr/share/zenity/zenity.glade.orig
    then    : already done
    else    cat << ZenityFix > /tmp/zenity.fix
# zenity.fix
# written by
# marc brumlik, tailored softare inc
# distributed with
# avconvert, posted on gnome-look, to correct the behavior of zenity
# The driectory containing zenity.glade is:
DIR=/usr/share/zenity

if test -s \$DIR/zenity.glade
    then    cd \$DIR
    else    echo -e "Файл /usr/share/zenity/zenity.glade\nне может быть найден!\n\nПожалуйста, измените скрипт /tmp/zenity.fix с корректным\nрасположением файла 'zenity.glade'.\nТогда выполните его непосредственно из командной строки.\n\nВыйдите теперь...\n\nНажмите Возврат (Return) \c"; read fred; exit 0
fi
echo -e "\nИзменение файла \$DIR/zenity.glade\n\nСохраняет безопасную копию Вашего файла как zenity.glade.orig"
if test -s zenity.glade.orig
    then    echo "Кажется, это было выполнено прежде."
        echo "Выполнить его снова..."
    else    cp zenity.glade zenity.glade.orig
fi
cat zenity.glade.orig | sed '/focus_on_map/s/False/True/' > zenity.glade
cp zenity.glade zenity.glade.progress-over
progline=\`grep -n "zenity_progress_dialog" zenity.glade | sed 's/:.*//'\`
focusline=\`sed -n "\$progline,\$"p < zenity.glade | grep -n focus_on_map | \
    head -1 | sed 's/:.*//'\`
targetline=\`echo -e "\$progline + \$focusline - 1 \n quit" | bc\`
sed "\$targetline s/True/False/" < zenity.glade.progress-over > zenity.glade.progress-under
chmod 666 /usr/share/zenity/zenity.glade
echo -e "/tmp/zenity.fix now exiting\n\nPress Return \c"; read fred
ZenityFix
        chmod 755 /tmp/zenity.fix
        if which xterm >/dev/null 2>&1
            then    message=`mytranslate "Нажмите OK, если Вы хотите, чтобы это было выполнено для Вас прямо сейчас, или если Вы предпочитаете, нажмите Cancel, чтобы препятствовать тому, чтобы avconvert сделал это. Если Вы, Отмена, avconvert создаст сценарий /tmp/zenity.fix, который Вы можете выполнить как \'root\' вручную. Это изменит Ваше значение по-умолчанию Zenity, таким образом, его окна появятся поверх любых других."`
            else    message=`mytranslate "Это изменение не может быть автовыполнена для Вас, потому что у Вас не установлен \'xterm\'. Нажмите Cancel и выполните /tmp/zenity.fix как \'root\'. Это изменит значения по-умолчанию Zenity, таким образом, его окна появятся поверх любых других."`
        fi
        title=`mytranslate "Значения по-умолчанию Zenity"`
        text1=`mytranslate "Утилиту Linux, которую avconvert использует для раскрывающихся диалоговых окон, вызывают Zenity. В некоторых выпусках эти диалоговые окна раскрываются под существующими окнами. Это делает чтение вывода и ответ на подсказки от avconvert очень неудобными.

Ваша установленная версия Zenity - та, которая ведет себя этот путь. Для Вашего удобства маленькая программа, названная 'zenity.fix', была просто записана в Вашей директории /tmp."`
        text2=`mytranslate "ВНИМАНИЕ: это окно и некоторые другие могут быть постоянно заставлены замолчать или с параметрами командной строки или создавая файл конфигурации ~/.config/avconvert/avconvert. Считайте конец avconvert сценария для деталей.

Кроме того, это окно не появится вновь, как только zenity значения по-умолчанию были изменены ИЛИ, пока файл /tmp/zenity.fix существует."`
        zenity --question --title="$title" --text="$text1\n\n$message\n\n$text2" && xterm -e ' echo -e "To fix zenity requires Root \c"; su -c /tmp/zenity.fix '
fi
    ;;
esac

case $quiet in
    y)    cp /usr/share/zenity/zenity.glade.progress-under /usr/share/zenity/zenity.glade 2>/dev/null ;;
    n)    cp /usr/share/zenity/zenity.glade.progress-over /usr/share/zenity/zenity.glade 2>/dev/null ;;
esac

rm -f /tmp/avconvert.env /tmp/avffmpeg.env

for each in "$@"
do
    allargs=`echo -e "$allargs\n$each"`
done
allargs=`echo -e "$allargs" | grep -v "^$"`
chkavi=`echo -e "$allargs" | sed 's/^.*\.//' | egrep "avi$|AVI$" | sort | \
    uniq | wc | awk '{print $1}'`
case $chkavi in
    1)    qtyavi=`echo -e "$allargs" | wc | awk '{print $1}'`
        case $qtyavi in
            [01])    ;;
            *)    multiavi=y ;;
        esac ;;
esac
case $multiavi in
    y)    title=`mytranslate "Объединить AVI файлы"`
        text1=`mytranslate "Вы выбрали один или несколько AVI файлов."`
        text2=`mytranslate "Нажмите CANCEL, чтобы продолжить с нормальными преобразованиями."`
        text3=`mytranslate "Если эти файлы все имеют те же настройки аудио и видео"`
        text4=`mytranslate "Вы можете нажать "OK", чтобы объединить их в один AVI файл."`
        text5=`mytranslate "Заключительный файл будет назван MergedAVI.avi"`
        if zenity --question --title="$title" --text="$text1\n\n$text2\n\n$text3\n$text4\n\n$text5"
            then    if ! which avimerge >/dev/null 2>&1
                    then    zenity --warning --title=HELP --text="Необходима программа \"avimerge\" , но не была найдена.\nЭто должно быть обеспечено пакету \"transcode\" .\nПожалуйста, установите его и попробуйте снова."
                    exit 0
                fi

                dest=`echo -e "$allargs"| head -1`
                dest=`dirname "$dest"`
            oldsize=`du -b -c "$allargs" | grep total | awk '{print $1}'`
            avwatcher "$dest/MergedAVI.avi" "avimerge" "$oldsize" $$ &
                avimerge -o "$dest/MergedAVI.avi" -i "$@" >/tmp/avimerge.$$ 2>&1
                exit 0
        fi ;;
esac

chkvob=`echo -e "$allargs" | sed 's/^.*\.//' | egrep "vob$|VOB$" | sort | \
    uniq | wc | awk '{print $1}'`
case $chkvob in
    1)    qtyvob=`echo -e "$allargs" | wc | awk '{print $1}'`
        case $qtyvob in
            [0])    ;;
            *)    multivob=y ;;
        esac ;;
esac
case $multivob in
    y)    title=`mytranslate "Объединить VOB файлы"`
        text1=`mytranslate "Вы выбрали один или несколько VOB файлов."`
        text2=`mytranslate "Нажмите CANCEL, чтобы продолжить с нормальными преобразованиями."`
        text3=`mytranslate "Вы можете нажать "OK", чтобы объединить их в один AVI файл"`
        text4=`mytranslate "со всем набором опций, чтобы отделить от DVD."`
        text5=`mytranslate "Заключительный файл будет назван $HOME/Desktop/MergedVOB.avi"`
        if zenity --question --title="$title" --text="$text1\n\n$text2\n\n$text3\n$text4\n\n$text5"
            then    dest=`echo -e "$allargs"| head -1`
                dest=`dirname "$dest"`
            oldsize=`du -b -c "$allargs" | grep total | awk '{print $1}'`
            avwatcher "$HOME/Desktop/MergedVOB.avi" "ffmpeg" "$oldsize" $$ &
            cat "$allargs" | ffmpeg -i - -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k $HOME/Desktop/MergedVOB.avi
            exit 0
        fi ;;
esac

until [ -z "$1" ]
do

fileargs="$fileargs
$1"

echo "$1" > /tmp/files

targetpath=$1; shift
target=`basename "$targetpath"`
# had used this due to an earlier bug, but dirname is better
# dir=`echo "$targetpath" | sed "s/\/\$target//"`
dir=`dirname "$targetpath"`

case "$dir" in
    */*)    ;;
    *)    dir=`pwd` ;;
esac

test -d "$dir" && cd "$dir"

dir=`pwd`

if test -f "$target"
    then    if test -s "$target"
            then    : OK
            else    text=`mytranslate "Исходный файл ПУСТОЙ"`
                exec zenity --warning --text="$target\n\n$text"
        fi
    else    text=`mytranslate "Исходный файл, НЕ НАЙДЕН!"`
        exec zenity --warning --text="$target\n\n$text"
fi

echo destdir: $destdir
echo target: $target
echo outdir: $outdir

case $outdir in
    '')    
        case $destdir in
            n)    outdir=`pwd` ;;
        esac

        case "$outdir" in
            '')    outdir=`dirname "$target"` ;;
        esac

        case $destdir in
            y)    outdir="" ;;
        esac

        if test -z "$outdir"
            then    cwd=`pwd`
        title=`mytranslate "Целевая папка (ОТМЕНА запишет в ИСХОДНЫЙ КАТАЛОГ)"`
                outdir=`zenity --file-selection --directory="$dir" --title="$title"`
                if test -z "$outdir"
                    then    outdir=$cwd
                fi
        fi
    ;;
esac

case "$target" in
    *.*)    ;;
    *)    zenity --question --title="Что сделать?" --text="Это было бы хорошо, если \"$target\" имел расширение...\nПереименование этого файла рекомендуется!\n\nЧтобы мог avconvert продолжить, так или иначе, нажимите OK.\nЧтобы выйти теперь, таким образом, Вы можете переименовать файл, нажмите Cancel" || exit 0 ;;
esac

type=`file "$target" | tr '[A-Z]' '[a-z]' | sed 's/^.*://'`
mtype=`file -i "$target" | tr '[A-Z]' '[a-z]' | sed 's/^.*://'`
show=`file "$target" | awk -F: '{print $2}'`
case "$target" in
    *.rm|*.rmvb|*.???|*.????)    ext=`echo "$target" | sed 's/^.*\.//'` ;;
    *)        ext="" ;;
esac
lcext=`echo "$ext" | tr '[A-Z]' '[a-z]'`
# imagemagick identify does not properly execute mencoder on *avi files
# and instead generated a png image for every frame. 
# until fixed, this like should be commented out.
## ident=`identify "$target" 2>/dev/null | sed "s/^.*$ext //"`
# ffmpeg provides lots of info anyway
ffident=`ffmpeg -i "$target" 2>&1 | tail -4 | head -3`
if echo "$ffident" | grep Unable >/dev/null
    then    ffident=""
fi
echo "$ffident" | grep audio >/dev/null && fftype=audio
echo "$ffident" | grep video >/dev/null && fftype=video
[ "$fftype" = "video" ] && echo "$ffident" | grep "bitrate: N/A" && fftype=image
[ "$fftype" = "image" ] && imident=`echo "$ffident" | grep Video | \
    awk -F, '{print $1, $2, $3, $4}' | sed 's/^.*://'`

#    based on source file, what might the destinations be?
#     what application will we use to create them?
#    the case wildcards are things we know how to convert FROM
#    "prog" is the actual conversion program
#    "out" is a list of formats we can choose to convert TO
it=""; av=""    # for "image/text" and "audio/video"
# strings from file, and extensions, which imply input file type
case "$fftype$type$mtype$lcext" in
    *bin)
        base=`echo "$target" | sed 's/.bin$//'`
        if test -s "$base".cue
            then    prog=iso; it=bchunk
        fi ;;
    *cue)
        base=`echo "$target" | sed 's/.cue$//'`
        if test -s "$base".bin
            then    prog=iso; it=bchunk
        fi ;;
    *daa)
        prog=iso; it=daa2iso ;;
    *nrg)
        prog=iso; it=nrg2iso ;;
    *b?i)
        prog=iso; it=b5i2iso ;;
    *cdi)
        prog=iso; it=csi2osi ;;
    *mdf)
        prog=iso; it=mdf2iso ;;
    *pdi)
        prog=iso; it=pdi2iso ;;
    *ccd)
        prog=iso; it=ccd2iso ;;
    *uif)
        prog=iso; it=uif2iso ;;
    *text/plain*|*ascii*)
        # recognized plain text formats, out to other text or image
        prog="text"; it="text" ;;
    *image*|*pdf|*ico|*orf)
        # recognized image formats, output will also be an image
        prog="convert"; it="image" ;;
    *video*|*3g2|*3gp|*ogv|*mkv|*mpg|*wmv|*asf|*mp4|*ogg|*rm|*rmvb)
        # recognized multimedia formats, output to multimedia or audio
        prog="ffmpeg"; av="video" ;;
    *audio*|*mp3|*wav|*m4a|*wma)
        # recognized audio-only formats, output to audio
        prog="ffmpeg"; av="audio" ;;
    *msword*)
        # micro$oft office word document, v2 / v6 or newer
        prog=text; it="doc" ;;
    text/html)
        prog=text; it="html" ;;
    *text/rtf*)
        prog=text; it="rtf" ;;
    *Unicode*)
        prog=text; it="uni" ;;
    *opendocument*|*openoffice*)
        prog=text; it="odt" ;;
    *openoffice*)
        prog=text; it="oo" ;;
    *)    prog=`zenity --list --height=520 --title="Неизвестно!" --text="Не уверенны, что сделать с этим файлом!\n\nКонечный файл: \"$target\"\n\nИнформация найдена:\n$type\n$mtype\n$ffident$ident\n\n\nВероятно, этот тип файла не был\nявно распознан, но avconvert может его обработать\nпреобразованием (Images) или ffmpeg (Audio/Video).\n\nЕсли Вы хотите ПОПРОБОВАТЬ выбрать утилиту, которая Вы думаете\nподойдет, то avconvert приложит все усилия.\n\n" --radiolist --column "Выбор" --column "Утилита, чтобы использовать" FALSE convert FALSE ffmpeg` || exit 0
        case $prog in
            ffmpeg)        av=`zenity --list --title="Выбор" --text="Скажите ffmpeg, является ли этот файл:" --radiolist --column "Выбор" --column "Тип контента" FALSE audio FALSE video` || exit 0 ;;
            convert)    it=image ;;
        esac
        ;;
        
esac

# export everything we know so far and launch the appropriate function quality

case $prog in
    ffmpeg|convert)    audiovideo=y ;;
    *)        audiovideo=n ;;
esac
case "$1$audiovideo$autoloop" in
    ?*yx)    autoloop=n
        zenity --question --title="Auto-Loop though Source Files??" --text="Вы выбрали разнообразные исходные файлы.  Avconvert циклично пройдется по ним и преобразует их всех.\n\n*ЕСЛИ* Вы знаете, что все исходные файлы имеют тот же тип\n   (images, audio, и т.д.)\nи *ЕСЛИ* Вы хотите их, чтобы все они преобразовались тем же путем\n   (images->1024/jpg, audio->128bit/mp3, и т.д.)\n*ТОГДА* кликните OK\n\n     Но...\n\n*ЕСЛИ* исходные файлы имеют различные типы\n   (не ВСЕ изображения или не ВСЕ видео)\nили, *ЕСЛИ* Вы хотите управление за файл того, как каждый источник обработан you want per-file control of how each source is handled\n*ТОГДА* нажмите Cancel\n\nOK, желая auto-loop (авто-цикл), Cancel, желая рассмотреть каждый файл отдельно." && autoloop=y
        ;;
esac

today=`date +%Y%m%d`
if grep "$today" ~/.config/avconvert/versioncheck >/dev/null 2>&1
    then    : already checked
    else    echo "$today" > ~/.config/avconvert/versioncheck
        versioncheck=`wget -q --timeout=3 --tries=1 \
        http://www.gtk-apps.org/CONTENT/content-files/92533-avconvert.tar.gz -O - | \
        gunzip 2>/dev/null | grep -a version= | head -1 | \
        sed -e 's/"$//' -e 's/^.*"//'`
        case "$versioncheck" in
            [0-9].[0-9][0-9]*)
                case "$versioncheck" in
                    "$version")    ;;
                    *)    zenity --info --height=500 --title="Более новая версия 'avconvert' доступна для скачивания" --text="Вы используете версию\n\t$version\n\nДоступно для скачивания\n\t$versioncheck"
                        ;;
                esac
        esac
fi

export dir target ext type mtype show ident ffident it av prog autoloop base
myav$prog

# this 'done' is for looping through multiple selected input files
done

case $overwrite in
    YES)    ;;
    *)    case $trash in
            y)    totrash=`zenity --list --title="Отправить в мусор?" --height=210 --text="Вы можете переместить исходный файл(ы) в\n$HOME/Desktop/avconvert-Trash" --radiolist --column "Выбор" --column "Trashcan the исходный файл(ы)?" TRUE NO FALSE YES` || exit 0
            case $totrash in
                NO)    ;;
                YES)    mkdir -p ~/Desktop/avconvert-Trash/$$ 2>&1
                    echo "$fileargs" | while read each
                    do mv "$each" ~/Desktop/avconvert-Trash/$$; done
                    ;;
            esac
            ;;
        esac
        ;;
esac

exit 0

#####
# READ ME
#####
avconvert

marc brumlik, tailored software inc, Thu Nov 13 18:50:35 CST 2008
tsi-inc@comcast.net

#######
# IF YOU READ NO FURTHER THAN THIS, please note that when using
# "kcolorchooser" in text-to-image, there is a delay after choosing your
# color before the next window from avconvert comes up.  I have no idea why
# kcolorchooser is behaving this way.
#######

This project started out because I needed to create jpg files of numerous
resolutions from a number of source files and wanted an automatic way to
generate them more quickly.  Then my daughter asked for a way to convert
"unplugged" YouTube files into formats her friends could view.
Combining these two short scripts is where avconvert began.

Upon completion of each use of avconvert, a file for debugging purposes
is written to, with lots of output showing exactly what the script 
has done.  This can help a lot if you are getting unexpected results.
The file name is derived from the conversion, followed by "dot" PID.  In the 
case of text->image and if intermediary files were generated, there will be
another "dot" and a sequence number.  These files will be named:
    /tmp/convert.$$
    /tmp/convert.$$.$count
    /tmp/ffmpeg.$$
    /tmp/avconvert.debug
    /tmp/txt2tags.$$
    /tmp/antiword.$$
and more may be added in the future.

You can create a startup file ~/.config/avconvert/avconvert to contain preferences.
Currently there are three items that can be specified there.
A ~/.config/avconvert/avconvert which specifies the defaults for these would contain this:
    destdir=y
    autoloop=y
    zenityfix=y
The line "destdir" specifies whether or not there should be a popup prompting
for a destination directory for converted files.  The line "autoloop" determines
whether, if multiple files are selected, you will be prompted and asked if you
want to treat them all the same way.  Y means prompt, N means always treat the
files individually.  THe line "zenityfix" has to do with the prompt which offers
to fix zenity popups so they appear above (instead of below) other items on the
desktop.  Y means detect "popunder" and offer to fix it, N means ignore current
zentiy configuration.
Строка "destdir" определяет, должен ли быть popup, вызывающий для справочника назначения для переделанных файлов. 
Строка "autoloop" определяет, побудят ли, если многократные файлы отобраны, 
Вас и спросят, хотите ли Вы рассматривать их все равно путь. 
Y быстрые средства, N средства всегда рассматривают файлы индивидуально. 
Строка "zenityfix" имеет отношение к быстрому, которое предлагает фиксировать zenity popups, 
таким образом, они появляются выше (вместо ниже) другие пункты на рабочем столе. 
Y средства обнаруживают "popunder" и предлагают фиксировать, это, N средства игнорирует ток zentiy конфигурация.
 
Things you might want to customize (starting from the top of the script):
Вещи Вы могли бы хотеть настроить (начинающийся с верхней части подлинника):

Too much verbage that gives information about source files?
Слишком много verbage, который дает информацию об исходных файлах? 
    comment out the "ident=" and "ffident=" lines

Too much window activity and want to eliminate "progress" window?
Слишком много деятельности окна и хочет устранить окно "прогресса"? 
    uncomment the "exit 0" at the top of "myavconvert-watch"

To add more extensions to recognized file types for image/video/audio:
    the script uses two different forms of output from the
    "file" command plus the source file extension, to decide
    what type of file it has to work with.  "file" isn not 
    always useful, which is why extensions are needed at all.
    find the comment "# strings from file".  Below that are 
    four cases.  Each contains first something that may have
    been output by "file", followed by a set of extensions.
    Just follow the example to add more extensions.

To add more extensions to the default list of output file types:
    Find the comment line beginning "Show appropriate output".
    Below that are four entries - two for "convert" and two 
    for "ffmpeg".  These are each divided into two more.
    Just add any extension you like into that space-separated
    list (do NOT remove the leading space in the list).

To prevent a "default" output type for images:
    Currently the default output for images is the same as 
    the source file type.  To prevent this, find the comment
    "This line sets default" and, on the line for "convert",
    and comment out the "out=" line below that.

To change the list of image resolutions presented:
    Find the comment "# set resolution here".  Add or 
    remove any resolutions from the list.  Also, setting
    one or more from FALSE to TRUE will cause them to be 
    checkboxed when the window appears.

To change the list of jpg quality settings:
    Find the comment "# if this is a jpeg".  Add or remove.
    You may also set the default by changing a FALSE to TRUE

To change the list of font sizes:
    Modify the line beginning "sizelist=".

To change bitrate choices for ffmpeg audio conversion:
    Find the comment line "# audio bitrate".
    To set a default bitrate, change one of the FALSE to TRUE.

To prevent the final window showing summary after completion:
    (Not recommeded, since this is ALSO where you might see 
    diagnostic output after a failure)
    Find the comment " Show results summary" and comment out the 
    "zenity" line that follows it.


COMMENTS WELCOME!

Если кто-то найдет ошибки или не точности в переводе, то прошу простить меня, поправить скрипт и выложить здесь же.

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

415

ПОП пишет:

Это первая часть одного файла, т.к. скопировать весь скрипт не позволяет лимит сообщения.

Для этого есть всевозможные сервисы pastebin.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

416

Да, для скрипта необходимо до-установить (если не установленно):
xterm zenity ffmpeg imagemagick bc
Кодеки:
amrwb faac faad2 ffmpeg-libs gpac gstreamer-ffmpeg gstreamer-plugins-* xmms2-avcodec xmms2-wma
Выборочно и необязательно:
transcode . . . . . for merging avi
translate/libtranslate . language translation
curl . . . . . . . . . . language translation
links/elinks . . . . language translation
nautilus-actions . add directly to context menu
kdegraphics . . . GUI colors in text-to-image
espeak . . . . . . . text to audio
faac . . . . . . . . . required for m4a audio
faad2 . . . . . . . . mpeg-2 and mpeg-4
antiword . . . . . . M$Office to txt and rtf
unrtf . . . . . . . . . rtf to txt and html
odt2txt . . . . . . . OpenOffice to txt and xml
txt2tags . . . . . . txt to html
libavcodec-unstripped-52 . avi to .mp4
AcetoneISO . . . disk images b5i/cdi/mdf/nrg/pdi to ISO.
nrg2iso, daa2iso, cdd2iso, uif2iso, bchunk . more disk images to ISO
mencoder . . . . . to rotate videos
Подробнее на сайте

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

417 (10.01.2014 14:52:00 отредактировано ПОП)

yars пишет:

Для этого есть всевозможные сервисы pastebin

Да, спасибо, забыл совсем -> http://pastebin.com/SHUiRMV7

ОС: Debian 8.11, MATE 1.8.1, Caja 1.8.2

418

ПОП пишет:

Из программ по теме Linux для Православных:
1 Библия - Священное Писание

Чуть изменил сообщение - добавлен тег "Code".

Пробую установить:

$dpkg -i bible.deb

Пишет:

dpkg: зависимости пакетов не позволяют настроить пакет bible:
bible зависит от msttcorefonts, однако:
Пакет msttcorefonts не установлен.

Пакет msttcorefonts тоже не устанавливается.

419

Zepp пишет:

Пакет msttcorefonts тоже не устанавливается.

Debian 6? Вывод apt-get install msttcorefonts в студию.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

420

yars пишет:
Zepp пишет:

Пакет msttcorefonts тоже не устанавливается.

Debian 6? Вывод apt-get install msttcorefonts в студию.

Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Пакет msttcorefonts - виртуальный, его функции предоставляются пакетами:
  ttf-mscorefonts-installer 3.4+nmu1 [Нет версии-кандидата]

E: Для пакета msttcorefonts не найден кандидат на установку