Zenity ile kabuk proglamlama

Ubuntu Türkiye Wiki sitesinden
Gezinti kısmına atla Arama kısmına atla

Zenity ile kabuk proglamlama

1-Giriş

Zenity aşağıdaki temel uygulamaları oluşturmanıza olanak verir;

  • Takvim
  • Dosya Seçimi
  • Liste
  • Bildirim simgesi
  • İleti(Mesaj)

Hata, Bilgi, Soru, Uyarı

2-Kullanım

Yazdığınız scriptlerde kullanıcı ile daha verimli iletişimde bulunmak için Zenity’nin temel görsel öğelerini kullanabilirsiniz…

Şöyle ki;

Kullanıcı bilgi diyaloğu oluşturarak, örneğin takvim diyaloğu; kullanıcıya takvimden tarihi seçtirebilir veya dosya seçme diyaloğu ile dosyalarını seçmesini çok rahat hale getirebilirsiniz…Bir başka diyalog ekleyerek kullanıcının bilgilenmesini sağlayabilirsiniz.Örneğin, ilerleme çubuğu(progress dialog) ekleyerek kullanıcıya işlemin durumu hakkında bilgi verdirebilirsiniz veya uyarı iletisi ile kullanıcıyı durumdan haberdar edebilirsiniz. Eğer bu diyaloglar kullanıcı tarafından kapatılırsa, Zenity standart bir text hatası oluşturacaktır

Zenity komutlarını yazdığınızda hangi argumanların tırnak işareti ile belirlendiğine dikkat etmemiz gerekmektedir. Örneğin;


 zenity --calendar --title="Tatil Planı" 


Bu şekilde kullanmayınız;


 zenity --calendar --title=Tatil Planı 


Eğer tırnak işareti kullanmazsanız bazı beklenmedik sonuçlarla karşılabilirsiniz…

2- a)Kısayol tuşları

Kısa yol tuşları çoğu zaman kullancıya klavye ve fareden daha fazla kullanışlı olur ve çoğumuz onlara alışmışızdır. Her kısa yol tuşu menu veya diyalog pencereleri üzerinde altı çizili olarak bulunurlar.Bazı Zenity diyalogları kısayol tuşlarını desteklerler. Bir kısa yol tuşu oluşturmak için aşağıdaki örneği inceleyelim ;

“Bir isim seçin”.

2- b)Çıkış kodları

Zenity aşağıdaki çıkış kodlarını döndürür.

Çıkış Kodu Tanım
0 Kullanıcı Tamam veya Kapat butonuna basmıştır.
1 Kullanıcı İptal veya pencere kapat butonuna tıklamıştır.
-1 Beklenmedik bir hata meydana gelmiştir.
5 Diyalog, işlem zaman aşımına uğradığı için kapanmıştır.

2- c)Genel seçenekler

Application Options:

zenity -- [arguman]
--calendar Takvim Diyaloğunu gösterir.
--entry Metin girdi diyaloğunu gösterir.
--error Hata diyaloğunu gösterir.
--info Bilgi Diyaloğunu gösterir.
--file-selection Dosya seçme diyaloğunu gösterir.
--list Liste diyaloğunu gösterir.
--notification Bildirimleri gösterir.
--progress Durum çubuğunu gösterir.
--question Soru diyaloğunu gösterir.
--warning Uyarı diyaloğunu gösterir.
--scale Ölçeklendir diyaloğunu gösterir.
--text-info Text bilgi diyaloğunu gösterir.
--display=DISPLAY kulanımı

Bütün Zenity diyalogları aşağıdaki genel seçenekleri desteklerler:

--title=Baslik

Başlık diyaloğunu özelleştirir.

--window-icon=icon_yolu

Diyalog penceresi göründüğünde hangi icon’un görüneceğini bu şekilde düzenleyebilirsiniz. Zenity ‘bilgi’, ‘uyarı’, ’soru’ ve ‘hata’ için 4 farklı icon(simge) barındırmaktadır.

--width=genislik

Diyalog penceresinin genişliğini düzenler..

--height=yukseklik

Diyalog penceresinin yüksekliğini düzenler…

2- d)Yardım seçeneği

Zenity’in bir diyaloğu hakkında yardım almak için ;

#zenity --help --[arguman]

şeklinde komut verilebilir.

Zenity hakkında bilgi için ;

#zenity --about

Zenity versiyon bilgisi için ;

# zenity --version

Zenityversion.jpg
komutları verilerek bilgi sahibi olunabilir.

(Not: Bu çalışmada anlatılanlar v2 ve 2.28.0 üzerinde denenenlerdir.)

2- e)GTK+ seçeneği

Zenity standart GTK+ seçeneğini de destekler. Daha fazla GTK+ seçeneği hakkında bilgi edinmek için

#zenity -?

komutunu veriniz.

3-Calendar dialog

--calendar seçeneğini kullanarak bir takvim oluşturabilirsiniz. Eğer komut satırında belirli bir tarih formatı belirtmezseniz Zenity hata verecektir.Eğer bir tarih seçilmezse Zenity şimdiki zamanı gösterir.

Takvim seçeneği aşağıdaki seçenekleri destekler.

--text=metin

Belirleyeceğiniz text takvim diyaloğunda görülecektir..

--day=gun

1-31 arasında seçeceğiniz takvim diyalog seçeneğidir.

--month=ay

1-12 arasında seçilebilen takvim ay seçeneğidir.

--year=yil

Takvim yıl seçeneği.

--date-format=format

Tarihi belirledikten sonra varsayılan olarak yerel ayarlanıza göre tarih formatlanacaktır. Fakat tarih format strftime fonsiyonuna göre kabul edilebilir olmalı.Örneğin %A%d%m%y Aşağıdaki script size nasıl bir takvim diyaloğu oluşturulması husunda yardımcı olacaktır;

  #!/bin/sh
  if zenity --calendar \
  --title="Takvim" \
  --text="Tarihi belirle." \
  --day=9 --month=1 --year=2010
  then echo $?
  else echo "Tarih seçilmedi."
  fi


Zenitytakvim.jpg

4-Dosya seçim penceresi

--file-selection seçeneğini kullanarak dosya seçim penceresi oluşturabilirsiniz. Zenity’nin dosya seçim penceresi varsayılan olarak dosya seçimi sonrasında seçilen dosyayı açması için ayarlanmıştır.

Dosya seçim penceresi aşağıdaki özellikleri destekler;

--filename=Dosya_ismi

Bu seçenek dosya ve dizinlerin ,dosya seçim penceresinde ilk göstereceği dizin veya dosyayı belirlememizi sağlar.

--multiple

Dosya seçimi penceresinde birden fazla dosya seçmemize olanak sağlar.

--directory

Sadece seçili dizinin içerisindeki dosyaların görünmesini sağlar.

--save

Dosya seçim penceresini kayıt moduna ayarlar.

--separator=ayirac

Dosya isimlerini listelemede ayıraç olarak kullanılabilecek bir string’e olanak sağlar.

Aşağıdaki script size nasıl bir “Dosya Seçim Penceresi” oluşturulması husunda yardımcı olacaktır;

  #!/bin/sh 
  FILE=`zenity --file-selection --title="Bir dosya seçiniz."` 
  case $? in 
  0) 
  echo "\"$FILE\" seçildi.";; 
  1)
  echo "Hiçbir dosya seçilmedi.";; 
  -  1) 
  echo "Hiçbir dosya seçilmedi.";;
  esac

Zenityfileselection.jpg

5-Bildirim simgesi


--text="metin"

Bildirim menüsünde belirlenen bildirimi göstermek için kullanılır.

Aşağıdaki script size nasıl bir “Bildirim Simgesi” oluşturulması husunda yardımcı olacaktır;

   #!/bin/sh 
   zenity --notification\
   --window-icon="Bilgi" \
   --text="Sistemin güncellenmesi gerekmektedir!"

6-Liste diyaloğu

--list seçeneğini kullanarak liste diyaloğu oluşturabilirsiniz. Zenity varsayılan olarak seçilen satırın sadece ilk sütununa girilen değeri döndürür.


--column=sutun

Sutun oluşturmak için kullanılır ve sütun bilgisi için –column seçeneği kullanılır.


 --checklist


İlk sütundaki değerleri kontrol için kullanılır ve kontrol kutusu içerir.


 --radiolist 


Liste diyaloğunun ilk sutunu radyo kutusu ile listelenebilir.


 --editable 


Seçili verinin düzenlenmesine olanak sağlar.


 --separator=ayirac


Şeçili girdileri ayırmak için kullanılan bir ayıraç belirtir.


--print-column=sutun


Hangi sutunun çıktı olarak görüntülenmesini belirlemek için kullanılır. Varyasılan sütun “1” . sütundur.

Aşağıdaki script size nasıl bir “Liste Diyaloğu” oluşturulması husunda yardımcı olacaktır;

   #!/bin/sh 
  zenity --list \ 	 
  --title="Liste Diyalog" \	 
  text="Lütfen amacınıza uygun bir kurulum yöntemi seçiniz." \
  --column="YÖNTEM" --column="BOYUT" --column="Tanım" \
  Normal 350MB "Sadece çok kullanılan bileşenler kurulacaktır." \
  Özel Belirlenmedi "Kurulacak öğeleri kullanıcı belirleyecek." \	 
  Tam 500MB "Bilgisayarınıza programın bütün bileşenleri kurulacaktır"

Zenity list.jpg

7-İleti(mesaj) diyalogları

Zenity ile dört farklı ileti diyaloğu oluşturabilirsiniz.

Error(Hata), Information(Bilgi) , Question(Soru), Warning(Uyarı)

Dört ileti seçeneğinde de –text seçeneği ile görüntülenecek metini belirleyebiliriz.

7- a)Error dialog

--error seçeneğini kullanarak hata iletisi oluşturabilirsiniz.

Aşağıdaki script örneği bunu daha iyi açıklayacaktır.

  #!/bin/bash 
  zenity --error \ 
  --title="Hata" \ 
  -text="/etc/wpa_supplicant.conf dosyası bulunamadı!"

Zenity error.png

7- b)Bilgi diyaloğu

--info seçeneğini kullanarak bilgi diyaloğunu oluşturabilirsiniz.

Aşağıdaki script örneği bunu daha iyi açıklayacaktır.;

   #!/bin/bash
   zenity --info \ 
   --title="Bilgi" \
   --text="Kurulum tamamlandı."

Zenity info6.jpg

7- c)Soru diyaloğu

--question seçeneğini kullanarak soru diyaloğu oluşturabilirsiniz.

Aşağıdaki script örneği bunu daha iyi açıklayacaktır.;

  #!/bin/bash 
  zenity --question \
  --title="Soru" \
  --text="Çıkmak istediğinizden emin misiniz?"

Zenity.question7.jpg

7- d)Uyarı diyaloğu

--warning seçeneğini kullanarak uyarı diyoloğu oluşturabilirsiniz.

Aşağıdaki script örneği bunu daha iyi açıklayacaktır.;

  #!/bin/bash
  zenity --warning \
  --title="Uyarı" \
  --text="Dosyayı kayıt etmediniz!"

Zenity uyari8.jpg

8-İlerleme diyaloğu

--progress seçeneğini kullanarak ilerleme diyaloğu oluşturabilirsiniz. Zenity standart dosyadan verileri okurken satır satır okur ve “#” karakterini görünce o satırdaki veri ile durumu günceller. Eğer satır başında sayı da varsa bunu işlemin yüzdesi olarak algılar ve ona göre işlem yapar.

İlerleme diyaloğu aşağıdaki seçenekleri destekler.

--text="metin"

İlerleme diyaloğunun metin kısmına ne yazmamız gerektiğine olanak verir.

--percentage=yuzde

İşlem yüzdesinin nereden başlaması gerektiğini ayarlamamıza yardımcı olur.

--auto-close

İşlem %100 olduğunda işlemi kapatır.

Aşağıdaki script örneği bunu daha iyi açıklayacaktır.;


  #!/bin/sh
  (
  echo "10" ; sleep 1
  echo "# Sistem kuruluma hazırlanıyor..." ; sleep 1
  echo "20" ; sleep 1
  echo "# Dosyalar kopyalanıyor..." ; sleep 1
  echo "50" ; sleep 1
  echo "Bu satır okunmayacak!" ; sleep 1
  echo "75" ; sleep 1
  echo "# Sistem yeniden başlatılıyor..." ; sleep 1
  echo "100" ; sleep 1
  ) |
  zenity --progress \
  --title="Kurulum" \
  --text="XYZ programı kuruluyor..." \
  --percentage=0
  if [ "$?" = -1 ] ; then
  zenity --error \
  --text="Kurulum İptal Edildi."
  fi

Zenity progress9.jpg

9-Metin giriş diyaloğu

--entry seçeneğini kullanarak metin giriş diyaloğu oluşturabilirsiniz.

Metin girişi diyaloğu aşağıdaki seçenekleri destekler;

--text=metin

text kısmına ne yazmamız gerektiğine olanak verir.

--entry-text=text

Varsayılan olarak metin kurusunun içeisinde ne olması gerektiğini belirtir.

--hide-text

Girilen metinin gizlenmesini sağlar bu özellik parola girişi sırasında kullanılabilir.

Aşağıdaki script örneği bunu daha iyi açıklayacaktır.;

  #!/bin/sh
  if zenity --entry \
  --title="Parola" \
  --text="Parola Gir:" \
  --entry-text "" \
  --hide-text
  then echo $?
  else echo "Parola girilmedi."
  fi

Zenity text10.jpg

  !/bin/bash
  zenity --entry \
  --title="Kullanıcı Adı" \
  --text="Kullanıcı Adınızı Giriniz:"

Zenity text11.jpg

10-Metin bilgi diyaloğu

–text-info seçeneğini kullanarak metin bilgi diyaloğu oluşturabilirsiniz.

Metin Bilgi Diyaloğu aşağıdaki seçenekleri destekler;

--filename=dosya_adi

Metin bilgilendirmesi için kullanılacak dosyanın adını belirlemek için kullanılır..

--editable

Metin Bilgi Diyaloğundaki bilginin düzenlenmesini sağlar.

Aşağıdaki script örneği bunu daha iyi açıklayacaktır.;

  #!/bin/sh
  FILE=`zenity --file-selection \
  --title="Bir dosya seçiniz."`
  case $? in
  0)
  zenity --text-info \
  --title=$FILE \
  --filename=$FILE \
  --editable 2>/tmp/tmp.txt;;
  1)
  echo "Dosya seçilmedi.";;
  -1)
  echo "Dosya seçilmedi.";;
  esac
 Zenity list dialog12.jpg 

Sonuç

Evet Zenity’nin kabuk programlama açısından ne kadar önemli bir gui ortamı sunduğunu anlamış olduk. Yararlandığım kaynağı Türkçe’ye çevirirken elbette birçok hata yapmışımdır ama pek çok şeyi deneyerek ve yeni yöntemleri ekleyerek yazdığımdan emin olabilirsiniz. Hatta edindiğim yeni bilgileri de mutlaka ekleyeceğimden emin olunuz. Bu konuyu daha derinlemesine anlatacak arkadaşlara başlangıç seviyesinde bir Zenity rehberi hazırlayabildiysem ne mutlu bana. Kaynağı oluşturma aşamasında oluşturduğum dosyalarıda yazının sonuna ekledim inceleyebilirsiniz.

Ayrıca bakınız

Kaynakça