Jak dodać GUI do skryptów powłoki Linux
Opublikowany: 2022-01-29 W skryptach Bash możesz używać okien GUI, suwaków, przycisków opcji, pasków postępu i nie tylko. Dowiedz się, jak korzystać z zestawu narzędzi zenity
i odświeżyć swoje skrypty Bash. Pokażemy Ci jak.
Skrypty Bash to potężny język programowania, a ponieważ są wbudowane w powłokę Bash, są łatwo dostępne dla każdego. Jest to łatwy język do rozpoczęcia programowania. Ponieważ jest interpretowany, nie musisz kompilować swoich skryptów. Jak tylko zmodyfikujesz plik skryptu i uczynisz go wykonywalnym, możesz go uruchomić. Dzięki temu cykl kodowania, uruchamiania i debugowania jest całkiem wydajny.
Istnieją dwa główne narzekania ludzi na skrypty Bash, a pierwszy to szybkość. Ponieważ powłoka Bash interpretuje polecenia w skrypcie, nie są one wykonywane tak szybko, jak skompilowany kod. Jest to jednak jak narzekanie, że traktor nie jest tak szybki jak samochód; są przeznaczone do różnych rzeczy.
Istnieją jednak dwa rodzaje prędkości. Często można ułożyć szybki skrypt i użyć go do wykonania zadania znacznie szybciej niż tworzenie rozwiązania w skompilowanym języku, takim jak C.
Drugi zarzut, jaki ludzie mają do skryptów Bash, to interfejs użytkownika — jest to okno terminala. Oczywiście czasami interfejs nie ma znaczenia. Jeśli jedyną osobą, która kiedykolwiek użyje skryptu jest jego autor, interfejs prawdopodobnie nie jest tak ważny. Nie ma też znaczenia dla skryptów, które wykonują przetwarzanie w tle i wsadowe. Zazwyczaj takie skrypty nie wymagają dużej (jeśli w ogóle) interakcji użytkownika.
Są sytuacje, kiedy potrzebujesz czegoś bardziej intuicyjnego i nowoczesnego niż okno terminala. Większość ludzi zna graficzny interfejs użytkownika (GUI). Aby zapewnić użytkownikom jak najbardziej bezproblemowe wrażenia, musisz tworzyć i używać elementów GUI ze swoich skryptów.
Aplikacja Zenity
zenity
pozwala na włączenie szerokiej gamy elementów interfejsu graficznego do skryptów Bash. To potężny zestaw narzędzi, który nadaje Twoim skryptom nowoczesny wygląd i nowoczesny, znajomy wygląd.
zenity
jest preinstalowane w dystrybucjach Ubuntu, Fedora i Manjaro. Jest częścią GNOME. Jeśli używasz KDE, możesz zamiast tego sprawdzić kdialog
, chociaż zenity
działa w każdym środowisku graficznym.
W przykładach w tym artykule pokazano, jak tworzyć różne okna dialogowe z wiersza polecenia, jak przechwytywać ich wartości zwracane i wybory użytkownika w zmiennych oraz jak używać okien dialogowych w skryptach.
Kończymy małą aplikacją, która wykorzystuje wszystkie trzy rodzaje okien dialogowych.
Okno dialogowe kalendarza
Okno dialogowe kalendarza pozwala wybrać datę. Aby stworzyć taki z zenity
, wystarczy jedno polecenie składające się z dwóch słów:
zenity – kalendarz
Pojawi się okno dialogowe kalendarza. Ma wszystkie funkcje, których można oczekiwać od standardowego selektora dat. Możesz zmienić miesiąc i rok, a następnie kliknąć dzień, aby wybrać tę datę. Domyślnie dzisiejsza data jest podświetlona, gdy pojawia się okno.
Kliknij „OK”, aby zamknąć okno dialogowe i wybrać podświetloną datę. Dwukrotne kliknięcie daty robi to samo.
Jeśli nie chcesz dokonywać wyboru daty, kliknij „Anuluj”, naciśnij klawisz „Esc” na klawiaturze lub zamknij okno dialogowe.
W powyższym przykładzie wybrano 19 sierpnia 2019. Jeśli użytkownik kliknie „OK”, kalendarz zamknie się, a wybrana data zostanie wydrukowana w oknie terminala.
Możesz zignorować wiersz „GTKDialog mapowany bez przejściowego rodzica. To jest odradzane”.
GTK to skrót od GIMP Tool Kit, czyli zestawu narzędzi używanego do tworzenia interfejsu GNOME. Został pierwotnie opracowany przez autorów programu GNU Image Manipulation Program (GIMP). GNU to skrót od GNU's Not Unix.
Silnik GTK ostrzega autorów zenity
, że użyli komponentu GTK w niestandardowy sposób.
Przechwytywanie wartości daty
Drukowanie daty na terminalu niewiele dla nas robi. Jeśli zamierzamy wywołać ten kalendarz z jednego z naszych skryptów, musimy przechwycić wybraną wartość daty, abyśmy mogli zrobić z nią coś przydatnego w naszym skrypcie. Dostosujemy również nieco kalendarz.
W kalendarzu użyjemy następujących opcji. Wszystkie muszą być używane z flagą z podwójną kreską „–”:
- –text : określa ciąg tekstu do wyświetlenia w kalendarzu. Zastępuje domyślne „Wybierz datę z dołu”.
- –title : Ustawia tytuł okna dialogowego kalendarza.
- –day : Ustawia dzień wybrany podczas otwierania kalendarza.
- –miesiąc : Ustawia miesiąc wybrany podczas otwierania kalendarza.
- –rok : Ustawia rok wybrany podczas otwierania kalendarza.
Używamy zmiennej o nazwie ChosenDate
, aby przechwycić datę zwróconą z kalendarza. echo $ChosenDate
, aby wyświetlić tę datę w oknie terminala.
Tak, osiągnęliśmy ten sam wynik w poprzednim przykładzie, ale tutaj mamy wybraną datę zapisaną w zmiennej. W poprzednim przykładzie został wydrukowany i zapomniany.
ChosenDate=$(zenity -- kalendarz --text "Wybierz datę" --title "How-To Geek Rota" --dzień 1 -- miesiąc 9 --rok 2019); echo $Wybrana data
Teraz kalendarz wyświetla nasz monit i tytuł okna. Data jest ustawiona na wybraną przez nas datę rozpoczęcia, a nie na dzisiejszą datę.
Możemy również dostosować format ciągu daty zwracanego po dokonaniu wyboru. Po opcji --date-format
musi następować specyfikator formatu. Jest to ciąg tokenów definiujących dane i formaty, które mają zostać uwzględnione w wyniku. Tokeny są takie same, jak te używane w funkcji języka C strftime()
i jest ich ogromny wybór.
Tokeny, których używamy to:
- %A : Pełna nazwa dnia tygodnia.
- %d : dzień miesiąca jako cyfra.
- %m : miesiąc jako cyfra.
- %y : Rok w postaci dwóch cyfr (bez wieku).
ChosenDate=$(zenity -- calendar --text "Wybierz datę" --title "How-To Geek Rota" --date-format="%A %d/%m/%y" --day 1 -- miesiąc 9 – rok 2019); echo $Wybrana data
Ktoś wybiera datę:
A data jest zwracana w naszym formacie. Pokazuje nazwę dnia tygodnia, po której następuje data w porządku europejskim: dzień, miesiąc, rok.
Okno dialogowe wyboru pliku: wybór pliku
Okna dialogowe wyboru plików są dość złożone. Ludzie mogą przeglądać system plików, podświetlać plik lub pliki, a następnie kliknąć "OK", aby wybrać te pliki lub całkowicie anulować wybór.
zenity
zapewnia wszystkie te funkcje i nie tylko. Jest tak samo łatwy w użyciu, jak okno dialogowe kalendarza.
Nowe opcje, z których będziemy korzystać, to:
- –file-selection : Mówi
zenity
, że chcemy użyć okna dialogowego wyboru pliku. - –wiele : Pozwala komuś wybrać więcej niż jeden plik.
- –file-filter : informuje okno dialogowe plików, jakie typy plików mają być wyświetlane.
zenity --file-selection --tile "How-To Geek" --multiple --file-filter='*.mm *.png *.page *.sh *.txt'
Okno dialogowe wyboru pliku działa tak samo, jak każde inne okno wyboru pliku.
Użytkownik może przeglądać system plików i wybrać wybrany przez siebie plik.
Przeszliśmy do nowego katalogu i wybraliśmy plik o nazwie „button_hybrid.png”.
Po kliknięciu "OK" okno dialogowe wyboru pliku zostanie zamknięte, a nazwa pliku i ścieżka zostaną wydrukowane w oknie terminala.
Jeśli musisz użyć nazwy pliku w jakimkolwiek dalszym przetwarzaniu, możesz przechwycić ją w zmiennej, tak jak w przypadku daty z kalendarza.
Okno dialogowe wyboru pliku: Zapisywanie pliku
Jeśli dodamy jedną opcję, możemy zmienić okno dialogowe wyboru pliku w okno dialogowe zapisywania pliku. Opcją jest --save
. Użyjemy również opcji --confirm-overwrite
. To monituje osobę o potwierdzenie, że chce nadpisać istniejący plik.
Response=$(zenity --file-selection --save --confirm-overwrite); echo $Odpowiedź
Pojawi się okno dialogowe zapisywania pliku. Zauważ, że istnieje pole tekstowe, w którym ktoś może wpisać nazwę pliku.
Użytkownik może przejść do wybranej przez siebie lokalizacji w systemie plików, podać nazwę pliku lub kliknąć istniejący plik, aby go zastąpić.
W powyższym przykładzie użytkownik podświetlił istniejący plik.
Kiedy kliknie „OK”, pojawi się okno dialogowe z prośbą o potwierdzenie, że chce zastąpić istniejący plik. Zauważ, że nazwa pliku pojawia się w ostrzegawczym oknie dialogowym. To ten rodzaj dbałości o szczegóły, który nadaje zenity
profesjonalny wygląd.
Gdybyśmy nie użyli opcji --confirm-overwrite
, plik zostałby po cichu nadpisany.
Nazwa pliku jest przechowywana w zmiennej Response
, która jest wypisywana w oknie terminala.
Okna dialogowe powiadomień
Dzięki zenity
włączanie do skryptów zgrabnych okien dialogowych powiadomień jest bezproblemowe. Dostępne są standardowe okna dialogowe, które można wywołać, aby przekazać użytkownikowi informacje, ostrzeżenia, komunikaty o błędach i pytania.
Aby utworzyć okno dialogowe komunikatu o błędzie, użyj następującego polecenia:
zenity --error --width 300 --text "Odmowa uprawnień. Nie można zapisać do pliku."
Nowe opcje, z których korzystamy to:
- –error : Mówi
zenity
, że chcemy użyć okna dialogowego błędu. - –width : Ustawia początkową szerokość okna.
Pojawi się okno dialogowe błędu o określonej szerokości. Używa standardowej ikony błędu GTK.
Aby utworzyć okno dialogowe informacji, użyj następującego polecenia:
zenity --info --width 300 --text "Aktualizacja zakończona. Kliknij OK, aby kontynuować."
Nowa opcja, której używamy, to --info
, która nakazuje zenity
utworzyć okno dialogowe informacji.
Aby utworzyć okno dialogowe pytania, użyj następującego polecenia:
zenity --question --width 300 --text "Czy chcesz kontynuować?"; echo $?
Nowa opcja, której używamy, to --question
, która nakazuje zenity
utworzyć okno dialogowe z pytaniem.
$?
jest parametrem specjalnym. Przechowuje wartość zwracaną z ostatnio wykonanego potoku pierwszego planu. Ogólnie rzecz biorąc, jest to wartość z ostatnio zamkniętego procesu. Wartość zerowa oznacza „OK”, a wartość jedna lub więcej oznacza „Anuluj”.
Jest to ogólna technika, którą możesz zastosować do dowolnego okna dialogowego zenity
. Zaznaczając tę wartość w skrypcie, możesz określić, czy dane zwrócone z okna dialogowego powinny być przetwarzane, czy ignorowane.
Klikaliśmy „Tak”, więc kod zwrotny to zero wskazujące „OK”.
Aby utworzyć okno dialogowe ostrzeżenia, użyj następującego polecenia:
zenity --warning --title „Mało miejsca na dysku twardym” --width 300 --text „Może być za mało miejsca na dysku twardym, aby zapisać kopię zapasową”.
Nowa opcja, której używamy, to --warning
, która nakazuje zenity
utworzyć okno dialogowe z ostrzeżeniem.
Pojawi się okno dialogowe ostrzeżenia. To nie jest pytanie, więc ma tylko jeden przycisk.
Okno dialogowe postępu
Możesz użyć okna dialogowego postępu zenity
, aby wyświetlić pasek postępu, który wskazuje, jak blisko ukończenia jest twój skrypt.
Pasek postępu jest zaawansowany zgodnie z wartościami, które są do niego przesyłane z twojego skryptu. Aby zademonstrować zasadę, użyj następującego polecenia:
(dla i w $(seq 0 10 100); wykonaj echo $i; śpij 1; gotowe)
Polecenie wygląda następująco:
- Polecenie
seq
przechodzi przez sekwencję od 0 do 100, w krokach co 10. - Na każdym kroku wartość jest przechowywana w zmiennej
i
. To drukuje w oknie terminala. - Polecenie zatrzymuje się na jedną sekundę z powodu polecenia
sleep 1
.
Możemy użyć tego w oknie dialogowym postępu zenity
, aby zademonstrować pasek postępu. Zauważ, że przesyłamy dane wyjściowe poprzedniego polecenia do zenity:
(dla i w $(seq 0 10 100); wykonaj echo $i; śpij 1; gotowe) | zenity --progress --title "How-To Geek" -- automatyczne zamykanie
Nowe opcje, z których korzystamy to:
- –progress : Mówi
zenity
, że chcemy użyć okna dialogowego postępu. - –auto-close : zamyka okno dialogowe, gdy pasek postępu osiągnie 100 procent.
Pojawi się okno dialogowe postępu, a pasek przesuwa się w kierunku 100 procent, zatrzymując się na jedną sekundę między każdym krokiem.
Możemy użyć tej koncepcji potokowania wartości do zenity
, aby uwzględnić w skrypcie okno dialogowe postępu.
Wpisz ten tekst w edytorze i zapisz go jako „progress.sh”.
!/kosz/bash funkcja lista robocza () { echo "# Pierwszy element pracy" echo "25" spać 1 echo "# Drugi element pracy" echo "50" spać 1 echo "# Trzeci element pracy" echo "75" spać 1 echo "# Ostatnia praca" echo "100" spać 1 } lista zadań | zenity --progress --title "How-To Geek" --auto-close wyjście 0
Oto podział skryptu:
- Skrypt definiuje funkcję o nazwie
work-list
. Tutaj umieszczasz swoje polecenia i instrukcje, aby wykonywać prawdziwą pracę. Zastąp każde z poleceńsleep 1
swoimi prawdziwymi. -
zenity
akceptuje linieecho "# ..."
i wyświetla je w oknie dialogowym postępu. Zmień tekst tych wierszy, aby przekazywały użytkownikowi komunikaty informacyjne. - Linie
echo
zawierające liczby, takie jakecho "25"
, są również akceptowane przezzenity
i ustawiają wartość paska postępu. - Funkcja listy roboczej jest wywoływana i przesyłana do
zenity
.
Użyj tego polecenia, aby skrypt był wykonywalny:
chmod +x postęp.sh
Użyj tego polecenia, aby uruchomić skrypt:
./progress.sh
Skrypt jest uruchamiany, a wiadomość tekstowa zmienia się w miarę wykonywania każdej fazy skryptu. Pasek postępu przesuwa się stopniowo w kierunku 100 procent.
Okno dialogowe Skala
Okno dialogowe skali pozwala przesunąć suwak, aby wybrać wartość liczbową. Oznacza to, że nie może wprowadzić wartości, która jest zbyt wysoka lub niska.
Nowe opcje, z których korzystamy to:
- –scale : Mówi
zenity
, że chcemy użyć okna dialogowego skali. - –min-value : Ustawia minimalną wartość skali.
- –max-value : Ustawia maksymalną wartość skali.
- –step : Ustawia wielkość przesunięcia suwaka, gdy używane są klawisze strzałek. Nie wpływa to na ruchy suwaka, jeśli ktoś używa myszy.
- –wartość : Ustawia początkową wartość i położenie suwaka.
Oto polecenie, którego używamy:
Response=$(zenity --scale --title "How-To Geek" --text "Wybierz powiększenie" --min-value=0 --max-value=30 --step=3 --value15); echo $Odpowiedź
Pojawi się okno dialogowe suwaka z suwakiem ustawionym na 15.
Użytkownik może przesunąć suwak, aby wybrać nową wartość.
Kiedy kliknie „OK”, wartość zostanie przeniesiona do zmiennej Response
i wydrukowana w oknie terminala.
Okno dialogowe wprowadzania
Okno dialogowe wprowadzania umożliwia wprowadzanie tekstu.
Nowe opcje, z których korzystamy to:
- –entry : Informuje
zenity
, że chcemy użyć okna dialogowego wprowadzania. - –entry-text : możesz użyć tej opcji, jeśli chcesz wpisać sugerowaną wartość w polu wprowadzania tekstu. Używamy „” do wymuszenia pustego pola. Nie jest to ściśle wymagane, ale chcieliśmy udokumentować tę opcję.
Pełne polecenie wygląda tak:
Response=$(zenity --entry --text "Wprowadź wyszukiwany termin" --title "Jak to maniak" --entry-text=""); echo $Odpowiedź
Pojawi się proste okno dialogowe zawierające pole do wprowadzania tekstu.
Ktoś może wpisywać i edytować tekst.
Kiedy kliknie „OK”, wpisana przez niego wartość zostaje przypisana do zmiennej Odpowiedź. Używamy echo do wypisania wartości zmiennej w oknie terminala.
Kładąc wszystko razem
Połączmy te techniki i stwórzmy funkcjonalny skrypt. Skrypt wykona skanowanie informacji o sprzęcie i przedstawi wyniki użytkownikowi w przewijanym oknie tekstowym. Może wybrać długi lub krótki typ skanowania.
W tym skrypcie użyjemy trzech typów okien dialogowych, z których dwa są dla nas nowe:
- Pierwszym z nich jest okno dialogowe listy. Pozwala komuś dokonać wyboru.
- Drugie to okno dialogowe postępu, które informuje użytkownika, że coś się dzieje, i powinien poczekać.
- Trzecie to tekstowe okno informacyjne, które wyświetla użytkownikowi wyniki.
Wprowadź ten tekst w edytorze i zapisz go jako „hardware-info.sh”.
#!/kosz/bash # Wyświetl listę sprzętu dla tego komputera Plik tymczasowy = $ (mktemp) ListType=`zenity --width=400 --height=275 --list --radiolist \ --title „Skanowanie sprzętu” \ --text „Wybierz typ skanowania:” \ --kolumna „Wybierz” \ --kolumna „Typ skanowania” PRAWDA „Krótki” FAŁSZ „Długi”` jeśli [[ $? -równ 1 ]]; następnie # nacisnęli Anuluj lub zamknęli okno dialogowe zenity --error --title="Odrzucono skanowanie" --width=200 \ --text="Skanowanie sprzętu pominięte" wyjście 1 elif [ $ListType == "Krótki" ]; następnie # wybrali krótki przycisk opcji Flag="--krótki" w przeciwnym razie # wybrali długi przycisk radiowy Flaga="" fi # wyszukaj informacje o sprzęcie z odpowiednią wartością w $Flag hwinfo $Flaga | trójnik >(zenity --width=200 --height=100 \ --title="Zbieranie informacji" --progress \ --pulsate --text="Sprawdzanie sprzętu..." \ --auto-kill --auto-close) > ${TempFile} # Wyświetlaj informacje o sprzęcie w przewijanym oknie zenity --width=800 --height=600 \ --title „Szczegóły sprzętu” \ --text-info --filename="${TempFile}" wyjście 0
Użyj tego polecenia, aby uczynić go wykonywalnym:
chmod +x informacje o sprzęcie.sh
Ten skrypt tworzy plik tymczasowy, a nazwa pliku jest przechowywana w zmiennej TempFile:
Plik tymczasowy = $ (mktemp)
Skrypt używa opcji --list
do utworzenia okna dialogowego zenity
zwanego oknem dialogowym listy. Znaki „\” na końcu linii informują skrypt, aby traktował je jako jedną długą linię, która jest owinięta dookoła. Oto proces:
- Określamy szerokość i wysokość okna.
- Okno dialogowe listy obsługuje kolumny. Opcja
--radiolist
powoduje, że pierwsza kolumna jest kolumną przycisków opcji. - Ustawiamy tytuł i monit tekstowy dla okna.
- Ustawiamy tytuł pierwszej kolumny na „Wybierz”. Treścią tej kolumny będą przyciski opcji.
- Ustawiamy tytuł drugiej kolumny na „Wybierz” i podajemy zawartość drugiej kolumny. Ta kolumna zawiera dwie etykiety tekstowe: „Krótki” i „Długi”. Wskaźniki TRUE i FALSE oznaczają, że opcja „Krótki” jest domyślnie zaznaczona, gdy pojawi się okno dialogowe.
- Przechowujemy wynik z tego okna dialogowego w zmiennej o nazwie
ListType
.
ListType=`zenity --width=400 --height=275 --list --radiolist \ --title „Skanowanie sprzętu” \ --text „Wybierz typ skanowania:” \ --kolumna „Wybierz” \ --kolumna „Typ skanowania” PRAWDA „Krótki” FAŁSZ „Długi”`
Jeśli użytkownik naciśnie „Anuluj”, nie musimy sprawdzać wartości w ListType,
możemy po prostu wyjść. Jeśli naciśnie „OK”, musimy dowiedzieć się, czy wybrał przycisk radiowy „Krótki” czy „Długi”:
- Specjalny parametr
$?
równa się zero, jeśli użytkownik nacisnął „OK”. Jest równy jeden, jeśli nacisnął „Anuluj” lub zamknął okno. - Jeśli jest równy jeden, skrypt wyświetla okno dialogowe z informacjami o błędzie i kończy działanie. Jeśli naciśnie „OK”, przejdziemy do testowania wartości w zmiennej
ListType
. - Jeśli zmienna
ListType
przechowuje wartość „Short”, skrypt ustawia zmienną o nazwieFlag
na wartość „–short”. - Jeśli zmienna
ListType
nie zawiera wartości „Short”, musi zawierać wartość „Long”. Skrypt ustawia zmienną o nazwieFlag
na równą „”, która jest pustym ciągiem. - Skrypt używa zmiennej
Flag
w następnej sekcji.
jeśli [[ $? -równ 1 ]]; następnie # nacisnęli Anuluj lub zamknęli okno dialogowe zenity --error --title="Skanowanie odrzucone" --width=200 \ --text="Skanowanie sprzętu pominięte" wyjście 1 elif [ $ListType == "Krótki" ]; następnie # wybrali krótki przycisk opcji Flag="--krótki" w przeciwnym razie # wybrali długi przycisk radiowy Flaga="" fi
Teraz, gdy skrypt wie, jakiego typu skanowania chce użytkownik, możemy wykonać skanowanie informacji o sprzęcie:
- Skrypt wywołuje polecenie
hwinfo
i przekazuje mu wartość w zmiennejFlag
. - Jeśli
Flag
zawiera „–short”, poleceniehwinfo
wykonuje krótkie skanowanie. Jeśli wartośćFlag
to „”, nic nie przechodzi dohwinfo
i wykonywane jest domyślne, długie skanowanie. - Skrypt przesyła dane wyjściowe z
hwinfo
dotee
.tee
wysyła dane wyjściowe dozenity
iTempFile
. - Skrypt tworzy okno dialogowe paska postępu. Ustawia szerokość i wysokość okna dialogowego oraz tekst tytułu i monitu.
- Skrypt nie może wiedzieć z góry, ile informacji wygeneruje polecenie
hwinfo
, więc nie może ustawić paska postępu, aby przesuwał się poprawnie na 100 procent. Opcja--pulsate
powoduje, że okno dialogowe postępu wyświetla ruchomy wskaźnik. To informuje użytkownika, że coś się dzieje i powinien poczekać. - Opcja
--auto-kill
kończy działanie skryptu, jeśli ktoś kliknie „Anuluj”. - Opcja
--auto-close
powoduje automatyczne zamknięcie okna dialogowego postępu po zakończeniu monitorowania procesu.
# wyszukaj informacje o sprzęcie z odpowiednią wartością w $Flag hwinfo $Flaga | trójnik >(zenity --width=200 --height=100 \ --title="Zbieranie informacji" --progress \ --pulsate --text="Sprawdzanie sprzętu..." \ --auto-kill --auto-close) > ${TempFile}
Po zakończeniu skanowania hwinfo
skrypt wywołuje zenity
w celu utworzenia okna dialogowego z informacjami tekstowymi z --text-info
. Okno dialogowe informacji tekstowych wyświetla zawartość pliku TempFile
:
- Skrypt ustawia szerokość i wysokość okna dialogowego oraz tekst tytułu.
- Opcja
--flename
służy do odczytywania zawartości pliku przechowywanego w zmiennejTempFIle
.
# Wyświetlaj informacje o sprzęcie w przewijanym oknie zenity --width=800 --height=600 \ --title „Szczegóły sprzętu” \ --text-info --filename="${TempFile}"
Gdy użytkownik zamknie okno dialogowe informacji tekstowych, skrypt zostanie zamknięty.
wyjście 0
Odpalmy i spójrzmy.
./informacje-sprzętowe.sh
Pojawi się pole listy. Opcja „Krótki” jest zaznaczona domyślnie.
Wybierzmy „Długie”, a następnie kliknijmy „OK”.
Pojawi się okno postępu z przesuwanym wskaźnikiem. Pozostaje na ekranie aż do zakończenia skanowania sprzętu.
Po zakończeniu skanowania sprzętu pojawi się okno dialogowe informacji tekstowych ze szczegółami ze skanowania.
Kliknij OK."
Nawet zagorzały dżokej wiersza poleceń musi przyznać, że kilka okien dialogowych GUI może nadać skromnemu skryptowi Bash profesjonalny charakter.