Копирование документов со сканера на принтер в Ubuntu

Автор:human

Копирование документов со сканера на принтер в Ubuntu

На одном из форумов мне порекомендовали написать скрипт и даже помогли с написанием. Вот этот скрипт:

Прикручиваем интерфейс

У вышеуказанного скрипта был огромный недостаток — нельзя было указать количество копий. После небольшой переделки стало возможным указывать в командной строке количество копий, но это не устроило моих домочадцев, которые не желали лезть в консоль. Писать нативное приложение с интерфейсом я не хотел и не умел. Потом я узнал, что к bash скриптам можно прикрутить интерфейс через программы dialog, zenity, kdialog. Ну я попробовал переписать используя zenity + я добавил обработку различных ошибок. Оказалось добавление интерфейса не просто, а очень просто! Вот что из этого у меня вышло.

Сначала определяем переменные и блокируем.

После инициализации всех переменных скрипт спрашивает количество копий. Результат программа возвращает в консоль, но мы с помощью обратных одиночных кавычек (там где находиться русское «ё», но в английской раскладке) присваиваем результат переменной COPY_COUNT.

Zenity возвратить код возврата, которая храниться в переменной $?.. Мы должны будем проверить его. Коды возврата: 0 — пользователь указал/ввел что то и нажал ОК; 1 — пользователь нажал «Отмена»; -1 — произошла ошибка. Целесообразно продолжать работу программы только при коде возврата 0, т.к. пользователь мог ошибочно запустить скрипт и у него должен быть выбор отмены.

Так как процесс сканирования и печати достаточно «долгий» от нескольких секунд до нескольких минут, то надо как то показать на какой стадии идет процесс. При этом пользователь должен иметь возможность остановить процесс копирования на стадии сканирования. Для прогресс бара у zenity есть параметр --progress. В результате предыдущий код приобретает вид:

чтобы прогрессбар двигался, нужно чтобы в блоке отмеченным комментарием «полезный код» выводились значения процента через echo, например echo 10 установит прогрессбар на 10%, echo 100 на 100%. Чтобы указать на какой стадии процесса мы находимся (сканирование, печать или завершение программы) в виде текста надо тоже использовать echo, но при этом мы должны добавить знак решетки в начале сообщения например echo «#Идет процесс сканирования» заставит вывести текст на прогресс баре.

И на последок уже добавляем команды сканирования и печати.

Заключение

В результате получилась программа которая имеет очень простой и понятный интерфейс и функционал не уступающей родной программе копирования от Epson.

Надеюсь мой скрипт окажется полезным для вас.

Об авторе

human administrator

    Оставить ответ

    Войти с помощью: