Практическое использование диалогового окна Zenity

Я часто бываю на форумах своей страны… и, честно говоря, редко можно найти что-то интересное. Однако на одном из этих форумов есть пользователь, который сделал два интересных сообщения о 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

... Ну вот и все.

Я надеюсь, что смогу принести вам больше интересных сообщений.

привет