Многие пользователи Linux рано или поздно сталкиваются с bash-скриптами. До недавнего времени я не знал как можно использовать графический интерфейс в скриптах. Оказывается очень просто.
Возможно для вас это не будет чем то новым, но я думаю найдутся те, кому это пригодится.
Мы будем использовать библиотеку zenity (ещё есть kdialog ). У меня она была уже установлена. Набираем в консоли zenity --help или man zenity.
Приведу основные ключи:
--calendar Отобразить диалог для выбора даты
--entry Отобразить диалог для ввода текста
--error Отобразить диалог для вывода ошибки
--info Отобразить диалог для вывода информации
--file-selection Отобразить диалог для выбора файла
--list Отобразить диалог со списком
--notification Отобразить диалог уведомления
--progress Отобразить диалог хода процесса
--question Отобразить диалог с вопросом
--warning Отобразить диалог с предупреждением
--scale Отобразить диалог масштаба
--text-info Отобразить диалог с текстовой информацией
Теперь как использовать. Рассмотрим сразу пример. Для примера я написал маленький скрипт выключения компьютера по таймеру.
Рассмотрим его подробнее.
vTime=$(zenity —scale --title=«Timer shutdown» --text=«Turn off computer after:» --step=5 --min-value=0 —max-value=120);
zenity --scale --text=«Turn off computer after:» --step=5 --min-value=0 —max-value=120

Эта строка отображает диалоговое окно с ползунком с минимальным значением равным 0, максимальным равным 120 (120 минут — 2 часа) и с шагом в 5 ( у меня почему то не работает).
Результат присваивается значению vTime.
if [ "$?" = «1» ]; then
echo «Exit»; exit;
Переменная $? содержит значение 0 если нажата кнопка ОК и 1 если — Cancel.
vNow=$(date +'%T');
В переменную vNow текущее время.
sudo /sbin/shutdown -h $vTime &
Собственно запускаем команду на выключение. Здесь нужно обратить внимание на &. Он нужен для того чтоб следующая задача выполнялась не дожидаясь завершения предыдущей.
zenity --notification --text=«The system is going down in $vTime minutes. Start at $vNow!»;

Отобразим в трее значок с соответствующей надписью.
if [ "$?" = «0» ]; then sudo /sbin/shutdown -c;
И сделаем возможность прервать выключение по нажатию мишкой по значку. Если щелкнуть мышкой по значку zenity вернет значение 0 в переменную $?..
Осталось создать ярлык на запуск скрипта. Естественно нужно чтоб пользователь имел права на запуск команд через sudo. Также нужно в /etc/sudoers закоментить строку Defaults requiretty а можно заменить sudo на kdesudo.
Здесь только ознакомление. Думаю кому будет интересно сами разберутся с остальными возможностями zenity. Удачи.
Возможно для вас это не будет чем то новым, но я думаю найдутся те, кому это пригодится.
Мы будем использовать библиотеку zenity (ещё есть kdialog ). У меня она была уже установлена. Набираем в консоли zenity --help или man zenity.
Приведу основные ключи:
--calendar Отобразить диалог для выбора даты
--entry Отобразить диалог для ввода текста
--error Отобразить диалог для вывода ошибки
--info Отобразить диалог для вывода информации
--file-selection Отобразить диалог для выбора файла
--list Отобразить диалог со списком
--notification Отобразить диалог уведомления
--progress Отобразить диалог хода процесса
--question Отобразить диалог с вопросом
--warning Отобразить диалог с предупреждением
--scale Отобразить диалог масштаба
--text-info Отобразить диалог с текстовой информацией
Теперь как использовать. Рассмотрим сразу пример. Для примера я написал маленький скрипт выключения компьютера по таймеру.
#!/bin/bash
vTime=$(zenity --scale --title="Timer Shutdown" --text="Turn off computer after:" --step=5 --min-value=0 --max-value=120);
if [ "$?" = "1" ]; then
echo "Exit"; exit;
else
vNow=$(date +'%T');
sudo /sbin/shutdown -h $vTime &
zenity --notification --text="The system is going down in $vTime minutes. Start at $vNow!";
if [ "$?" = "0" ]; then sudo /sbin/shutdown -c;
fi
fi
Рассмотрим его подробнее.
vTime=$(zenity —scale --title=«Timer shutdown» --text=«Turn off computer after:» --step=5 --min-value=0 —max-value=120);
zenity --scale --text=«Turn off computer after:» --step=5 --min-value=0 —max-value=120

Эта строка отображает диалоговое окно с ползунком с минимальным значением равным 0, максимальным равным 120 (120 минут — 2 часа) и с шагом в 5 ( у меня почему то не работает).
Результат присваивается значению vTime.
if [ "$?" = «1» ]; then
echo «Exit»; exit;
Переменная $? содержит значение 0 если нажата кнопка ОК и 1 если — Cancel.
vNow=$(date +'%T');
В переменную vNow текущее время.
sudo /sbin/shutdown -h $vTime &
Собственно запускаем команду на выключение. Здесь нужно обратить внимание на &. Он нужен для того чтоб следующая задача выполнялась не дожидаясь завершения предыдущей.
zenity --notification --text=«The system is going down in $vTime minutes. Start at $vNow!»;

Отобразим в трее значок с соответствующей надписью.
if [ "$?" = «0» ]; then sudo /sbin/shutdown -c;
И сделаем возможность прервать выключение по нажатию мишкой по значку. Если щелкнуть мышкой по значку zenity вернет значение 0 в переменную $?..
Осталось создать ярлык на запуск скрипта. Естественно нужно чтоб пользователь имел права на запуск команд через sudo. Также нужно в /etc/sudoers закоментить строку Defaults requiretty а можно заменить sudo на kdesudo.
Здесь только ознакомление. Думаю кому будет интересно сами разберутся с остальными возможностями zenity. Удачи.