Doküman

Linux’ta Whiptail ile GUI Oluşturma

Bu yazıda, Linux’ta Bash betiklerinde GUI (arayüz) iletişim kutuları oluşturmak için kullanılabilecek Whiptail adlı başka bir GUI yardımcı programını okuyacaksınız.

Whiptail, yeni bir programlama kitaplığı kullanan GUI yardımcı programıdır. Whiptail, farklı amaçlar için farklı iletişim kutuları sunar. Kullanım durumunuza bağlı olarak, komut dosyanızı daha etkileşimli hale getirmek için bu iletişim kutularını kullanabilirsiniz.

Whiptail’i Linux’a yükleyin

Whiptail, birçok dağıtımla önceden yüklenmiş olarak gelir, ancak dağıtımınızda Whiptail kurulu değilse, yüklemek için aşağıdaki talimatları izleyin.

Önce Whiptail’in kurulu olup olmadığını kontrol etmek için aşağıdaki komutu çalıştırın.

$ which whiptail

Whiptail’i Debian/Ubuntu ve türev dağıtımlarına kurmak için aşağıdaki komutu çalıştırın:

$ sudo apt install whiptail -y

Fedora/RHEL/CnetOS/AlmaLinux/Rocky Linux:

$ sudo dnf install newt

Arch Linux, EndeavourOS, Manjaro Linux:

$ sudo pacman -S whiptail

Yardım Seçeneği

Desteklenen iletişim kutularının listesini ve kullanabileceğiniz diğer seçenekleri görüntülemek için –help parametresini kullanabilirsiniz. Toplamda, çeşitli işlevlerle desteklenen 10 iletişim kutusu vardır.

1. Mesaj Kutusu

Mesaj kutusu kullanıcıya mesajları gösterecek ve kullanıcı <ok> veya <ESC> tuşuna basana kadar bekleyecektir. <ok> tuşuna bastığınızda dönüş kodu 0 , <ESC> tuşuna basarsanız dönüş kodu 255 verir .

$ whiptail --title "Hoş Geldiniz Mesajı" --msgbox "Merhaba, OSTechnix'e Hoş Geldiniz.." 8 78
Message Box
–title Pencereye başlık ekler
-msgbox  Pencere içine yazacağınız mesajı belirtir
8 78  Oluşturacağınız pencere boyutunu belirtir

2. Bilgi Kutusu

Bilgi, mesaj kutusuna benzer ancak farkı mesaj kutusunun aksine, bilgi kutusunun kullanıcı girişi beklememesidir. –-infobox parametresi ile bilgi kutusunda görüntülenecek bir metin belirtebilirsiniz.

$ TERM=ansi whiptail --title "Welcome Message" --infobox "Howdy, Welcome to OSTechnix.." 8 78 
Info Box

3. Evet/Hayır Kutusu

Evet/Hayır Kutusu, EVET veya HAYIR seçeneği olan bir iletişim kutusu görüntüler; burada <Evet>’i seçerseniz dönüş kodu 0 , <Hayır>’ a bastığınızda ise dönüş kodu 1 atar .

#!/usr/bin/env bash

whiptail --title "CONFIRMATION" --yesno "Should I proceed" 8 78 
if [[ $? -eq 0 ]]; then 
  whiptail --title "MESSAGE" --msgbox "Process completed successfully." 8 78 
elif [[ $? -eq 1 ]]; then 
  whiptail --title "MESSAGE" --msgbox "Cancelling Process since user pressed <NO>." 8 78 
elif [[ $? -eq 255 ]]; then 
  whiptail --title "MESSAGE" --msgbox "User pressed ESC. Exiting the script" 8 78 
fi 
Yes/No Dialog Box

4. Metin Kutusu

Metin kutusu dosyadan okuduğu metni ve pencere içine yazdıracaktır. -scrolltext bayrağı, geçerli pencereye sığmayan uzun metin sayfalarınız olduğunda dikey olarak kaydırmak için fare tekerleğini kullanmanıza olanak tanır.

$ whiptail --textbox --scrolltext ostechnix.txt 10 80
Text Box

5. Yönlendirmeler

Sonraki bölümde göreceğiniz iletişim kutuları, çıktının bir değişkende saklanmasını ve daha sonra işleme için kullanılmasını gerektirir. Widget’tan dönüş değeri stdout yerine stderr’e gönderilir. Bu nedenle, sonucun değişkende saklanması için stdout ve stderr’yi değiştirmelisiniz.

Stdout ve stderr’yi değiştirmek için aşağıdaki ifadeyi kullanmanız gerekir.

3>&1 1>&2 2>&3

6. Parola Kutusu

Parola iletişim kutusunu kullanarak, siz yazarken düz metin olarak görüntülenmeyecek parolaları yazabilirsiniz. Parolayı girmenizi istemek için –passwordbox kullanın.

$ whiptail --title "SET PASSWORD" --passwordbox "Choose a strong password"
Password DialogBox

Parolayı bir değişkene yakalamanız ve daha sonra komut dosyasında kullanmanız gerekir. Yönlendirme bölümünde tartışıldığı gibi, sonucu yeniden yönlendirmeniz gerekir.

$ PASSWORD=$(whiptail --title "PASSWORD AYARLA" --passwordbox "Güçlü bir parola seçin" 8 78 3>&1 1>&2 2>&3)
$ echo "Kullanıcı tarafından girilen şifre $PASSWORD"

Bunlar ve daha fazlasını yapabilmek için yazının orijinalini buradan okuyabilirsiniz.