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
–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
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
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
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"
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.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.