Использование диалоговых окон KDE в shell-скриптах
Перейти к навигации
Перейти к поиску
Kdialog
Для красивого оформления скриптов с помощью диалоговых окон можно достичь используя kdialog.
Рассмотрим на примере диалога password
#!/bin/sh # Создаем переменную $tempfile во временном файле, который удаляется после завершения работы скрипта. # Эта часть примера взята здесь tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/temp$$ trap "rm -f $tempfile" 0 1 2 5 15 # Обратите внимание, что в случае отсутствия утилиты mktemp временный файл # создается не безопасным способом, то есть временный файл будет доступен на чтение другим пользователям. # Возможно в вашей системе в место утилиты mktemp используется утилита tempfile. # Теперь непосредственно вызов диалога: kdialog --title "Заголовок окна" --password "Введите пароль:" > $tempfile # пароль записываться в созданный нами файл # Проверим какую кнопку нажал пользователь, "Ok" или "Сancel" # код ошибки находится в переменной $? if [ $? = 0 ]; then echo " Вы выбрали: OK" # записываем пароль в переменную $pass pass=`cat $tempfile` # очищаем файл с паролем cat /dev/null > $tempfile echo $pass else echo " Вы выбрали: Cancel" fi
В kdialog доступны следующие параметры:
- --yesno <text> - Вопросительный диалог с кнопками да/нет
- --yesnocancel <text> - Вопросительный диалог с кнопками да/нет/отмена
- --warningyesno <text> - Предупредительный диалог с кнопками да/нет
- --warningcontinuecancel <text> - Предупредительный диалог с кнопками продолжить/отмена
- --warningyesnocancel <text> - Предупредительный диалог с кнопками да/нет/отмена
- --sorry <text> - Диалог с сообщением об ошибке
- --error <text> - Диалог "Ошибка"
- --msgbox <text> - Информационный диалог
- --inputbox <text> <init> - Диалог ввода
- --password <text> - Диалог ввода пароля
- --textbox <file> [width] [height] - Диалог с текстом
- --textinputbox <text> <init> [width] [height] - Диалог ввода текста
- --combobox <text> [tag item] [tag item] ... - Диалог с выпадающим списком (ComboBox)
- --menu <text> [tag item] [tag item] ... - Диалог с меню
- --checklist <text> [tag item status] ... - Диалог с опциями
- --radiolist <text> [tag item status] ... - Диалог с радиокнопками
- --passivepopup <text> <timeout> - Пассивное всплывающее окно
- --getopenfilename [startDir] [filter] - Диалог открытия существующего файла
- --getsavefilename [startDir] [filter] - Диалог сохранения файла
- --getexistingdirectory [startDir] - Диалог выбора существующего каталога
- --getopenurl [startDir] [filter] - Диалог открытия существующего ресурса (URL)
- --getsaveurl [startDir] [filter] - Диалог сохранения ресурса (URL)
- --geticon [group] [context] - Диалог выбора значков
- --progressbar <text> [totalsteps] - Диалог хода процесса, возвращает ссылку DCOP для коммуникации
- --title <text> - Заголовок диалога
- --default <text> - Запись по умолчанию для использования с выпадающими списками и меню
- --multiple - Позволяет параметрам --getopenurl и --getopenfilename возвращать несколько файлов
- --separate-output - Возвращает список элементов в отдельных строках (для опций checklist и file open с --multiple)
- --print-winid - Выводит winid каждого диалога
- --embed <winid> - Делает диалог прозрачным для приложений X, указанных по winid
- --dontagain <file:entry> - Файл конфигурации и имя параметра для сохранения состояния "не показывать/спросить снова". При выборе отказа от дальнейшего вывода подобных сообщений создается файл ~/.kde/share/config/file(если не существует) в который добавляется строчка entry=false