Я часто бываю на форумах своей страны… и, честно говоря, редко можно найти что-то интересное. Однако на одном из этих форумов есть пользователь, который сделал два интересных сообщения о Linux, и это первый (которым я хочу с вами поделиться):
Практическое использование диалогового окна Zenity
Zenity - это набор графических диалоговых окон, используемых библиотеками gtk, с помощью этой программы мы можем вводить данные, выбирать список задач, показывать нам информацию, полученную в результате данного процесса, позволять нам делать прерывания до или во время определенного процесса, среди других функций.
Zenity состоит из примерно 13 графических диалоговых окон, давайте посмотрим, что это такое и их возможные комбинации:
1- Чтобы показать нам календарь и выбрать желаемую дату (эта дата будет отображаться в числовом формате после выбора):
zenity --calendar
2- Для ввода текста (очень полезно при запросе данных или имени файла)
zenity --entry
Объедините их правильно, чтобы он запрашивал у нас данные для ввода
zenity --entry --text "Escriba el nombre del archivo"
3- Чтобы сообщить нам, что произошла ошибка
zenity --error --text "Imposible continuar"
4- Чтобы выбрать файл
zenity --file-selection $HOME
Добавление этой опции позволяет нам выбрать несколько файлов:
--multiple
При этом вы выберете только папки
--directory
При этом вместо выбора мы будем активировать опцию сохранения.
--save
Этим мы предотвратим перезапись существующего файла:
--confirm-overwrite
5- Покажите нам определенную информацию
zenity --info *text "Información a mostrar"
6- Покажите нам список вариантов и выберите один или несколько из них:
zenity --list --column "nombre de columna" "opcion1" "opción2" "opción3" "opción4"
Что произойдет, если мы хотим иметь список действий для определенных файлов, но хотим, чтобы отображалось имя выполняемого действия. Для этого мы должны использовать эти две опции (–hide-column value и * print-column value), это будет выглядеть следующим образом:
zenity --hide-column 2 --print-column 2 --list --column "nombre de columna" --column "columna oculta" "nombre1" "comando1" "nombre2" "comando2"
Если мы хотим выбрать более одного действия за раз, мы должны добавить эти две опции
Текст, который будет отделять выбранную последовательность от другой (в данном случае мы добавляем это »», что означает пробел
--separator=" "
И опция, которая позволит нам выбрать более одного действия за раз
--multiple
7- Покажите нам уведомление в строке меню
zenity *notification *text "Texto deseado"
8- Покажите нам, как продвигается данный процесс:
zenity --progress --pulsate
9- При этом он покажет нам вопрос, и мы сможем выбрать, хотим ли мы продолжить процесс:
zenity --question --text "Desea Continuar"
10- При этом мы можем получить результат последовательности в консоли, такой как список поиска файлов, справочные запросы, среди прочего:
zenity --text-info zenity --help-all | zenity --text-info
11- Это может сообщить нам, что процесс был прерван.
zenity --warning --text "El proceso ha fallado" ls /media/carpeta || zenity --warning --text "No existe el directorio"
12- При этом мы можем выбрать заданное число с помощью ползунка:
zenity --scale
Добавляя эту опцию, мы можем определить минимальное значение:
--value 60 --min-value 60
(параметр –value никогда не должен быть меньше * min-value)
При этом выбираем максимальное значение
--max-value 100
13- При этом он покажет нам диалоговое окно, в котором мы можем выбрать желаемый цвет и взять цвет с другой стороны с помощью так называемой пипетки для выбора цвета.
zenity --color-selection --show-palette
Увидев, какие диалоговые окна доступны в этой программе, давайте рассмотрим несколько практических примеров с ними:
- Давайте посмотрим, как мы можем смешать диалоговое окно ввода текста
используя скрипт:
#!/bin/bash
#Darle a una palabra una secuencia de comandos.
archivo="`zenity --entry --text "Escriba el nombre del archivo"`"
#comando para renombrar
mv "$@" "`dirname "$@"`"/"$archivo"
- Посмотрим, как совместить диалоговое окно № 12 числовых шкал:
(Это простой скрипт для снижения качества изображений jpg и, таким образом, уменьшения места, которое они занимают на наших дисках)
#!/bin/bash
#Darle a una palabra una secuencia de comandos.
foto="`zenity --scale --value 80 --min-value 60 --max-value 100`"
#comando para comprimir la imagen
mogrify -compress jpeg -quality "$foto%" "$@"
- Давайте посмотрим на другой пример, в котором мы будем использовать диалоговое окно выбора цвета, в котором мы добавим рамку выбранного нами цвета к фотографии:
#!/bin/bash
#Darle a una palabra una secuencia de comandos.
foto="`zenity --color-selection --show-palette`" marco="`zenity --entry --text "Seleccione el rango deseado 6x6"`"
#comando para agregarle el marco
mogrify -border $marco -bordercolor $foto "$@"
- Давайте посмотрим на пример с диалоговым окном сообщений об ошибках:
#!/bin/bash
rm "$@" || zenity --error --text "Imposible de eliminar esto es una carpeta"
Как видите, если кто-то пытается удалить папку, процесс возвращает ошибку, поэтому цепочка продолжается благодаря этим операторам ||.
- Теперь посмотрим, что мы можем сделать с диалоговым окном номер 6, выбрав действия, которые мы будем выполнять с определенным файлом:
#!/bin/bash
actions="`zenity --multiple --separator="" --hide-column 2 --print-column 2 --list --column "nombre de columna" --column "columna oculta" "comprimir un 80%" " -compress jpeg -quality 80%" "Cambiar tamaño a 800x600" " -resize 800x600"`"
#Comando
mogrify$actions "$@"
Обратите внимание, что в поле команд есть пробел, так как он не позволяет тексту начинаться с дефиса, поэтому разделитель в этом случае должен быть нулевым –separator = »».
- Давайте посмотрим еще один пример с диалоговым окном прогресса
#!/bin/bash
#Script para eliminar
zenity --question --text "Desea borrara las imágenes dentro de esta carpeta `basename "$@"`" && find "$@" -name *.jpg -delete | zenity --list --progress * pulsate
... Ну вот и все.
Я надеюсь, что смогу принести вам больше интересных сообщений.
привет