Jak używać graficznych widżetów w skryptach bash z Zenity

Jak używać graficznych widżetów w skryptach bash z Zenity

Zenity to bardzo przydatne narzędzie, które pozwala nam tworzyć graficzne interfejsy użytkownika dla naszych skontaktów. Istnieje kilka widżetów i można go używać, wywołując program z odpowiednimi opcjami. Widżety są oparte na GTK narzędzia i zwróć wynik interakcji użytkownika na standardowym wyjściu lub jako kod powrotu.

W tym samouczku nauczysz się:

  • Jakie są ogólne opcje zenity
  • Jakie są jedne z najbardziej przydatnych dostępnych widżetów i jak z nich korzystać



Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny od rozkładu
Oprogramowanie Użyteczność Zenity
Inny Znajomość powłoki (w tym przypadku bash) i pojęć takich jak kody subshellowe i wyjściowe
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Instalacja

Zenity Pakiet jest zawarty w repozytoriach wszystkich głównych dystrybucji Linuksa i może być już zainstalowany, jeśli używasz GNOM Środowisko komputerowe. Aby go zainstalować, możemy użyć naszego ulubionego menedżera pakietów dystrybucyjnych Fedora, Na przykład możemy użyć DNF:

$ sudo dnf instaluj zenity


Korzystając z dystrybucji Debian i Debian, takich jak Ubuntu, możemy użyć polecenia Apt-Get:

$ sudo apt-get instaluj zenity

Zenity jest już uwzględniony w arklinux dodatkowy Repozytorium, dlatego możemy je zainstalować za pośrednictwem Pacman:

$ sudo pacman -s zenity

Opcje ogólne

Zanim zaczniemy widzieć niektóre z najbardziej przydatnych widżetów dostarczanych przez Zenity, Powinniśmy wymienić niektóre z dostępnych ogólnych opcji, których możemy użyć do zmiany zachowania programu.

Nazywamy je ogólnymi, ponieważ można je zastosować niezależnie od wybranego widżetu: --tytuł, --Wdowa-Icon, --szerokość, --wysokość I --koniec czasu.

Przede wszystkim mamy --tytuł Opcja: Możemy go użyć do określenia tytułu dla okna dialogowego. Podobnie --okno Opcja pozwól nam określić ikonę, która będzie używana jako ikona dla okna i będzie widoczna na przykład na pasku zadań. Aby wyświetlić ikonę w widżecie, możemy zamiast tego użyć --nazwa ikona opcja i podaj jedną z dozwolonych nazw ikon (tutaj jest pełna lista) jako argument. Aby użyć ikon zapasowych podanych w dialogach błędów, informacji, pytań lub ostrzeżenia, na przykład możemy określić odpowiednio: Dialog-Error, dialog-info, Pytanie dialogowe Lub Warowanie dialogowe.

--szerokość I --wysokość Opcje są dość oczywiste: pozwalają nam zdefiniować geometrię naszego okna dialogowego.

Wreszcie, używając --koniec czasu Opcja możemy ustawić limit czasu w sekundach dla dialogu: Po określonej ilości czasu zostanie ona automatycznie zamknięta.



Dostępne widżety

Istnieje kilka widżetów, których możemy użyć dzięki Zenity: każdy z nich ma określony cel. Zobaczmy niektóre z nich.

Widżet kalendarza

Widżet kalendarza wyświetli kalendarz i pozwoli użytkownikowi wybrać datę, wybierając miesiąc, dzień i rok. Wybrane wartości zostaną zwrócone na standardowe wyjście. Aby uruchomić kalendarz widgetów, musimy tylko wywołać zenity, z --kalendarz opcja:

$ Zenity -Calendar

Możemy użyć serii opcji, aby na przykład dostosować zachowanie widżetu, używając --dzień, --miesiąc, --rok i dostarczanie Int Jako wartość możemy odpowiednio ustawić domyślny dzień, miesiąc i rok, który zostanie wyświetlony w widżecie. Aby określić określony format, w którym należy zwrócić wybraną datę, możemy użyć --data opcja i określ wzór w Strftime styl.



Widżet kalendarza

Widżet wpisowy

Widżet wpisowy jest naprawdę przydatny, gdy musimy zapytać użytkownika o tekst. Powiedzmy na przykład, musimy poprosić użytkownika o wprowadzenie jego nazwy; Możemy uruchomić następujące polecenie:

$ Zenity -Eentry -Title „Nazwa żądania” --text „Wprowadź swoje imię:”


Tutaj użyliśmy --tytuł I --tekst wejściowy opcje dostosowywania odpowiednio tytułu i etykiety dla widżetu. Po uruchomieniu powyższego polecenia pojawi się widżet:



Widżet wpisowy

Tekst wprowadzony przez użytkownika zostanie zwrócony na standardowym wyjściu.

Widżet wyboru pliku

Widżet wyboru pliku pozwól nam wyświetlić ładny interfejs graficzny, aby umożliwić użytkownikowi wybrać jeden lub więcej plików. Podobnie jak w poprzednich przykładach, możemy użyć szeregu opcji, aby zmodyfikować zachowanie i wygląd dialogu. Jednym z najważniejszych jest --Nazwa pliku które można użyć do ustawienia pliku/katalogu, który zostanie domyślnie wybrany. Oto krótki przegląd opcji i funkcji, które zapewniają:

Opcje widżetu wyboru pliku Zenity
Opcja Funkcjonować
-Nazwa pliku Ustaw domyślny katalog/plik, który zostanie wybrany w widżecie
-wiele Włącz możliwość wyboru wielu plików jednocześnie
-Filtr plików Określ filtr dla nazw plików
-informator Ogranicz wybór do katalogów
-ratować Uruchom widżet w trybie „Zapisz”.
-Potwierdź-przewodowe Zapytaj użytkownika o potwierdzenie podczas nadpisania istniejącego pliku
-separator Określ separator, który będzie używany do oddzielania ścieżek, gdy wiele plików
są wybrane

Zobaczmy przykład użycia widżetu. Powiedzmy, że chcemy pozwolić użytkownikowi wybrać wiele plików i chcemy treści użytkownika $ Dom katalog, który ma być wyświetlany w widżecie, gdy jest otwarty. Wszystko, co musimy zrobić, to uruchomić następujące polecenie:

$ Zenity--File-Selection--Multiple--filename "$ home/"

Możesz zauważyć, że zapewniliśmy spóźnienie / na ścieżkę: w ten sposób wyświetlana jest zawartość katalogu, zamiast samego katalogu. Oto nasz widżet:



Widżet wyboru pliku

Po kliknięciu przycisku „OK”, bezwzględna ścieżka wybranych plików zostanie zwrócona na standardowym wyjściu, oddzielonym znakiem, który jest domyślny |:

/home/egdoc/pobieranie/a.txt |/home/egdoc/pobieranie/b.tekst

Możemy łatwo zmienić separator, podając znak, którego chcemy użyć jako argumentu opcji -SPARATOR.

Jeśli otworzymy dialog w tryb oszczędzania, Użytkownik zostanie poproszony o podanie nazwy pliku, który chce zapisać. Jeśli plik istnieje i dostarczyliśmy --Potwierdź-przewodowe Opcja zostanie poproszona o potwierdzenie, że chce go zastąpić:

$ Zenity--File-Selection--Save--Confirm-Overwrite--filename "$ home/"

Wybrana ścieżka zostanie zwrócona do standardowego wyjścia, a my będziemy swobodnie używać jej w naszym skrypcie.

Widżet postępu

Kolejnym interesującym widżetem jest Postęp pierwszy: możemy go uruchomić za pomocą, wywołując Zenity z --postęp opcja. Możemy go użyć, na przykład, aby pokazać postęp długoterminowych operacji. Oto niektóre z najbardziej przydatnych opcji, jakie możemy użyć z widżetem:

Opcja Funkcjonować
-odsetek Ustawia początkową wartość procentową paska postępu
-Auto-zamknięcie Automatycznie zamknij dialog po zakończeniu postępu
-Auto-Killl Zabij proces nadrzędny, jeśli dialog zostanie zamknięty z anulowaniem
przycisk
-Bez wiedzy Nie wyświetl przycisku Anuluj

Oto przykład, w jaki sposób możemy użyć widżetu w skrypcie Bash:



#!/bin/bash # # manekin, aby zademonstrować widżet postępu zenity! )!") | Zenity--title" Progress Bar przykład "--progress-Aauto-Kill
Kopiuj

Powyższy skrypt nie wykonuje żadnej operacji, ale warto zrozumieć, jak działa widżet. Istnieją dwie główne rzeczy, które należy zauważyć w kodzie: przede wszystkim polecenia, które należy wykonać, są owinięte między nawiasami, dlatego są wykonywane w Subshell: Jest to konieczne, aby widżet działał poprawnie; Po drugie, kiedy odzwierciedlamy linię, zaczynając od liczby, zostanie to interpretowane jako odsetek paska postępu.

W ten sam sposób, kiedy odzwierciedlamy linię, która zaczyna się od # znak, że będzie używany jako tekst do wyświetlania w widżecie. Oto krótki film o scenariuszu w akcji:

Informacje, widżety ostrzegawcze i błędów

Aby wyświetlić informacje, ostrzeżenie lub komunikaty o błędach, możemy użyć Zenity z --informacje, --ostrzeżenie I --błąd odpowiednio opcje. W takim przypadku używamy --tekst opcja określenia wiadomości. Oto przykład powiadomienia:

$ zenity - -info - -width = 400 - -high = 200 --text "To jest powiadomienie!"



Widżet powiadomień

Korzystanie z widżetu ostrzegawczego jest równie łatwe:

$ Zenity -Warning - -Width = 400 - -Height = 200 -TEXT "To jest ostrzeżenie!"



Widżet ostrzegawczy

Zamiast tego jest przykład komunikatu o błędzie:

$ zenity --error - -width = 400 - -height = 200 --text "To jest błąd!"



Widżet błędu

Widżet pytania

Aby zadać użytkownikowi pytanie i uzyskać jego odpowiedź, możemy użyć pytanie widżet, wywołujący zenity z --pytanie opcja. Określamy pytanie za pomocą --tekst opcja i zdefiniuj etykiety przycisków „OK” i „Anuluj”, używając odpowiednio --OK-label I --Anuluj label opcje. Oto przykład:

$ zenity -Question --text "czy na pewno chcesz rzucić palenie?„-No-Wrap --ok-Label„ Tak ”--Cancel-Label„ Nie ”



Widżet pytania



W takim przypadku użyliśmy również --Bez wrywania opcja, aby uniknąć owijania tekstu w widżecie. Wynik wyboru użytkownika nie zostanie wyświetlony na standardowym wyjściu; Zamiast tego polecenie ustawia to Kod wyjściowy W związku z tym powróci 0 Jeśli użytkownik kliknie przycisk „OK” i 1 Jeśli kliknie „Anuluj” lub zamknie okno (może to wydawać się sprzeczne z intuicją, ale pamiętaj niż kod wyjściowy 0 oznacza, że ​​polecenie zostało wykonane z powodzeniem w powłoce).

Widżet hasła

Jest to widżet, którego powinniśmy użyć, gdy chcemy, aby użytkownik wprowadził hasło lub wszelkie poufne informacje: tekst, który wprowadza, jest maskowany przez pociski:



Widżet hasła

Podczas gdy tekst wprowadzony od użytkownika jest maskowany, wartość zwrócona przez widżet będzie wyraźnie widoczna na standardowym wyjściu.

Widżet wyboru kolorów

To kolejny ładny widżet. Korzystając z niego, możemy sprawić, że użytkownik wybierze kolor z palety. Aby go uruchomić, używamy Zenity z --selekcja kolorów opcja. Możemy określić początkowo wybrany kolor za pomocą --kolor i podaj kolor jako argument. Oto przykład:



Widżet wyboru kolorów

Opcjonalnie możemy zamiast tego wyświetlić paletę kolorów, z --Paleta show opcja:

$ Zenity-Color-Selection-Color Red-Show-Palette



Paleta widżetu selekcji kolorów

Kolor wybrany przez użytkownika zostanie zwrócony RGB notacja na standardowym wyjściu. Na przykład przy wyborze koloru czerwonego zostaną zwrócone:

RGB (255,0,0)

Widżet listy

Kolejnym widżetem, na który spojrzymy, to widżet listy. Dzięki temu możliwe jest utworzenie dialogu wielu kolumnowych i opcjonalnie pozwól użytkownikowi wybrać jedną lub wiele opcji za pomocą skrzynek wyboru lub przycisków opcji. Aby zenity wyświetlał ten rodzaj dialogu, używamy --lista Opcja i zdefiniuj kolumny i ich zawartość; Jeśli ich pominiemy, polecenie zawiedzie:

$ Zenity -List Brak tytułów kolumnowych określonych dla okna dialogowego listy.
Kopiuj

Aby zdefiniować nagłówek kolumny, używamy --kolumna opcja i podaj ciąg jako argument. Powtarzamy polecenie dla każdej kolumny, którą chcemy utworzyć:

$ Zenity - -list -Wybór kolumny -Dystrybucja kolumnowa

Z powyższym poleceniem utworzyliśmy dwie kolumny, z nagłówkami „wyboru” i „dystrybucji”. Teraz zapewnimy użytkownikowi serię wiersza, z których każdy reprezentuje rozkład Linuksa. W pierwszej kolumnie każdego wiersza umieścimy pole wyboru, aby umożliwić użytkownikowi wybrać odpowiedni wpis:



$ Zenity - -list -Wybór kolumny -Kolenstwo Fałszywe Debian True Fedora -Radiolist

Każdy ciąg, który podajemy po definicji kolumn, jest powiązany z kolumnami, w zależności od ich kolejności wyglądu. Jak widać, utworzyliśmy dwa rzędy. W pierwszej kolumnie każdego wiersza podaliśmy wartość: użyliśmy FAŁSZ tak, aby odpowiednie pole wyboru lub przycisk opcji nie były wybierane po wyświetleniu widżetu, i PRAWDA Aby ustawić wejście jako oznaczone domyślnie. Oto wygenerowany widżet:



Widżet listy

Po kliknięciu przycisku „OK” i wykonanie naszego wyboru wartość powiązana z wierszem zostanie zgłoszona na standardowym wyjściu. Jeśli chcemy pozwolić użytkownikowi wybrać wiele wierszy, możemy użyć --Lista kontrolna Opcja: | znak zostanie użyty do oddzielania wybranych wartości.

Wnioski

W tym samouczku nauczyliśmy się wiedzieć Zenity, narzędzie, które pozwala nam używać graficznych dialogów w naszych skontleniach. Widzieliśmy, jakie są ogólne opcje, których możemy użyć ze wszystkimi widżetami, jak --szerokość I --wysokość, i nauczyliśmy się korzystać z jednych z najbardziej przydatnych widżetów, jakie możemy wygenerować z programem. Nauczyć się więcej o Zenity Możesz skonsultować się z jego strony!

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Mastering Bash Script Loops
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Zagnieżdżone pętle w skryptach Bash
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Obsługa danych wejściowych użytkownika w skryptach Bash
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Samouczek debugowania GDB dla początkujących
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Hung Linux System? Jak uciec do wiersza poleceń i…