Pemrograman Sederhana Shell & Zenity (multi platform Linux)

Tempat nongkrong. Diskusi bebas di luar topik.
Post Reply
User avatar
ArzonLinus
Contact:

Pemrograman Sederhana Shell & Zenity (multi platform Linux)

Post 22 Jan 2012, 10:30

Image
Apa itu zenity?
zenity adalah dialog window script yang berbasis gtk utk membantu membuat program berbasis GUI, yang bisa berjalan pada berbagai platform distro linux. pada ubuntu yang berbasis gnome sudah terinstall sebagai default. sedangkan pada ubuntu dengan desktop lain seperti KDE/Xfce/LXDE harus menginstal-nya terlebih dahulu :
sudo apt-get install zenity.


ketik di terminal :

zenity --info --text="Ini percobaan"

zenity --error --text="Pesan error"

zenity --info --text="Informasi"

zenity --warning --text="Peringatan"

zenity --question --text="Bagaimana kabar anda hari ini ?"

zenity --calendar --title="Tanggal"

zenity --file-selection --title="Pilih File"

zenity --list --title="Contoh List Menu" --column="Col1" --column="Col2" --column="Col3" 1.1 2.1 3.1 1.2 2.2 3.2 1.3 2.3 3.3

zenity --entry --title="Isi data" --text="Isi Password Anda:"

Berikutnya saya akan membahas penggabungan zenity dialog window dengan shell programming.

buat file dengan extension .sh
lalu buka dengan gedit jika di gnome, trus isi sbb :

#!/bin/sh
#contoh zenity pertanyaan input data

isi=`zenity --entry --title="Isi Data" --text="Bagaimana kabar anda hari ini?"`
if [ "$isi" != "" ]; then
zenity --info --text=$isi
else
zenity --info --text="Anda tidak mengisi"
fi

cukup sekian dulu contoh dari saya, akan di lanjutkan lagi dilain waktu...

Latihan 2 : (update 23/1/2012)

script dialog box pertanyaan pilihan :


if `zenity --question --text="Sudahkah anda mandi hari ini ?"`; then
zenity --info --text="anda menekan YES"
else
zenity --info --text="anda menekan NO"
fi


penjelasan diatas adalah menampilkan dialog pilihan pertanyaan, YES atau NO, dan hasil ditampilkan dalam dialog box info sesuai dengan yang tombol yang ada tekan

melihat home user anda :
zenity --info --text="Directory anda adalah $HOME"

melihat username anda :
zenity --info --text="username anda adalah $USER"

Latihan 3 : (update 24/1/2012)

contoh Progress Dialog :

#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Update System Logs" \
--text="Scanning mail logs..." \
--percentage=0

if [ "$?" = -1 ] ; then
zenity --error \
--text="Update canceled."
fi


contoh progress dialog pulsate ( bolak-balik )
biasanya menyajikan proses yang tidak bisa diukur berapa lama akan selesai.

contoh proses copy :

cp -Rfv $HOME/Documents $HOME/baru | zenity --progress --pulsate --auto-close --auto-kill --text="Mohon ditunggu...."


User avatar
lisnux
Contact:

Post 22 Jan 2012, 11:05

wow keren :D
Ada tutorial yang lengkapnya ndak bro arzon ?


User avatar
ArzonLinus
Contact:

Post 22 Jan 2012, 11:24

lisnux wrote:wow keren :D
Ada tutorial yang lengkapnya ndak bro arzon ?
ditunggu kelanjutan trit ini aja :grin:


User avatar
deny26

Post 22 Jan 2012, 12:30

mantap nie.. pengen belajar juga..
ditunggu kelanjutannya mastah :D
pesan tempat dulu :grin:


User avatar
thrvers
Contact:

Post 22 Jan 2012, 15:03

'
mantab kang arzon.

script sederhana bash bisa lebih keren nih :D

THX


User avatar
BudaSuyasa
Contact:

Post 22 Jan 2012, 20:10

Inponya keren mastah..
Tengkyu..
Langsung dicoba...


User avatar
buzzing_bee
Contact:

Post 24 Jan 2012, 11:11

hmm..berarti variabelnya diisi dengan zenity to, hehe :D
bisa untuk server ndak bro arzon??


User avatar
ArzonLinus
Contact:

Post 24 Jan 2012, 13:37

buzzing_bee wrote:hmm..berarti variabelnya diisi dengan zenity to, hehe :D
bisa untuk server ndak bro arzon??
bisa asal servernya bukan under cli saja, kan zenity berbasis GUI berjalan di xdesktop


User avatar
buzzing_bee
Contact:

Post 24 Jan 2012, 21:55

ArzonLinus wrote:
buzzing_bee wrote:hmm..berarti variabelnya diisi dengan zenity to, hehe :D
bisa untuk server ndak bro arzon??
bisa asal servernya bukan under cli saja, kan zenity berbasis GUI berjalan di xdesktop
wakakak...hehe, berarti ndak bisa yah, soalnya mau tak terapkan di kantor gitu :grin:
di kantor basis cli semua..hehehe


User avatar
saa7_go
Contact:

Post 25 Jan 2012, 06:04

buzzing_bee wrote: wakakak...hehe, berarti ndak bisa yah, soalnya mau tak terapkan di kantor gitu :grin:
di kantor basis cli semua..hehehe
mungkin bisa pake whiptail atau dialog. tapi aku lum coba sendiri sih. hehehe


User avatar
ArzonLinus
Contact:

Post 26 Jan 2012, 22:27

Latihan 4 (26/01/2012)

menampilkan list directory & file :

ls -la | zenity --text-info --width 530

Pilihan RadioList :

pilih=$(zenity --list --text "Linux apa yang anda gunakan" --radiolist --column "Pilih satu" --column "Jenis Distro" TRUE Debian/Ubuntu FALSE Slackware FALSE "Mandriva" FALSE "PCLinuxos"); echo $pilih


User avatar
buzzing_bee
Contact:

Post 13 Feb 2012, 23:22

@linuxer: aku ndak biasa pake zenity, ini tak modif dikit, tak tambahin dikit siih..belom tak coba :grin:

[spoiler]

Code: Select all

#/bin/sh

if [ "`whoami`" != "root" ];
then
echo "You are not ROOT"
echo "Please run with SUDO"
exit 1

apt-get install cheese compiz-plugins-main-dev compiz-plugins compiz-dev compiz-fusion-plugins-main compiz-plugins-main ubuntu-restricted-extras ubuntu-restricted-addons assaultcube nexuiz hedgewars && apt-get install -f && apt-get update && apt-get upgrade && apt-get dist-upgrade
[/spoiler]

kalo pake script yg ada zenity nya, ada bug nya, kalo di cancel ndak otomatis close windownya :D jadi harus klik "x" buat close nya :D

kalo script yg diatas, itu langsung jalan di terminal :D hehe
kalo ditambahin zenity aku masih blom paham zenity :grin:


User avatar
linuxers_cilik

Post 14 Feb 2012, 18:57

rencananya mau nambahin command berikut di akhiran script

Code: Select all

spd-say -l id "proses instalasi sudah selesai"
bagaimana pendapat abang, keren gak?

mohon bang koreksi jika peletakannya salah :smile:


User avatar
ArzonLinus
Contact:

Post 14 Feb 2012, 20:06

linuxers_cilik wrote:rencananya mau nambahin command berikut di akhiran script

Code: Select all

spd-say -l id "proses instalasi sudah selesai"
bagaimana pendapat abang, keren gak?

mohon bang koreksi jika peletakannya salah :smile:
atur pitchnya juga biar ga terlalu cepat atau lambat dalam pelafalan.
pake espeak juga bisa.


User avatar
linuxers_cilik

Post 14 Feb 2012, 23:50

ini hasilnya
aplikasi buat betulin dependensi rusak sekaligus update
kalau mau dioprek lagi silahkan

Code: Select all

#!/bin/sh

spd-say -r -10 -p 17 -l id -i 100 -t male2 "proses pembaharuan akan dimulai"
sleep 1
(
sudo -S apt-get install -f && sudo -S apt-get update && sudo -S apt-get upgrade 
) |
zenity --progress --pulsate --title="Proses Pembaharuan" --text="Mohon tungggu.... :)" --auto-close --auto-kill 
spd-say -r -10 -p 17 -l id -i 100 -t female2 "proses pembaharuan sudah selesai"
copy tulisan diatas dan tulis dan save dengan nama (terserah).sh
lalu agar lebih mirip aplikasi di ubuntu, copy text ini

Code: Select all

[Desktop Entry]
Name=(terserah)
Comment=(terserah)
Encoding=UTF-8
Exec=sh /home/ubuntu (sesuaikan direktori dengan file script-nya)
Icon=info (suka hati)
NotShownIn=KDE
Terminal=false
Type=Application
StartupNotify=true
Categories=System
lalu save tulisan diatas dengan nama sukahati.desktop lalu letakkan file save tadi di /usr/share/applications
lalu test buka aplikasinya di dash bagian System dan buka aplikasinya

Cuocok?


User avatar
ArzonLinus
Contact:

Post 15 Feb 2012, 16:27

bagus, ayo siapa lagi yg punya hasil coding silahkan share disini :

Latihan 5 (15/02/2012)

Proses copy dengan progress bar prosentase :

total=$(find $HOME/Documents | wc -l)
cp -Rfv $HOME/Documents $HOME/baru 2>&1 | gawk '{i++;printf"\n%f",(i*100)/'"$total"'} {}' | zenity --progress --percentage=0 --auto-close --auto-kill --text="Tunggu sampai proses copy selesai"


User avatar
Malsasa
Contact:

Post 18 Nov 2012, 21:30

Terima kasih, Kang Arzon! Saya kira inilah jalan yang melapangkan usaha kita nantinya.

Viva GUI! :D


User avatar
nif
Been thanked: 1 time

Post 19 Nov 2012, 09:38

Setuju, tritnya bagus :smile:


User avatar
buzzing_bee
Contact:

Post 20 Nov 2012, 01:22

saya dulu pernah nyoba pas awal2 ada trit ini, dan memang gokil...jadi memudahkan :D


User avatar
nif
Been thanked: 1 time

Post 19 Feb 2013, 08:32

Trit ini bagus nih, saya belajar banyak dari sini.
meskipun belum ijin om Arzon, saya iseng2 deh mau sharing juga :laugh:

# sript sederhana : folderscan.sh
misalnya kita mau buat GUI sederhana untuk scan virus pake clamAV. Seperti yang kita tau, kita bisa jalankan clamAV di terminal untuk men-scan suatu folder dengan perintah : clamscan -r [folder/directory yang dimaksud]
Nah, kita akan membuat script sederhana untuk itu.

Code: Select all

#folderscan.sh

#!/bin/bash
echo -e "\n-- folderscan : Scan folder dengan clamAV --\n"
echo "Silahkan pilih folder yang akan di-scan"
target=`zenity --file-selection --directory --title="folderscan : Pilih Folder"`
echo "Folder yang dipilih = $target"
echo -e "\nMemproses..."
clamscan -r $target
zenity --notification --text="folderscan : Proses scan telah selesai."&
exit 0
Alur kerjanya sangat sederhana. Pertama, kita hanya menggunakan zenity untuk meminta user memasukkan folder/directory yang ingin di-scan (pake zenity --file-selection --diretory). Lalu kita jalankan clamAV (pake clamscan -r $target). Terakhir, kita pake zenity untuk membuat notifikasi ketika proses scan telah selesai (pake zenity --notification).

Kalo mau lebih bagus, kita juga bisa membuat agar proses dibatalkan jika folder/directory yang diinputkan user ternyata tidak valid.

Code: Select all

#folderscan.sh

#!/bin/bash
echo -e "\n-- folderscan : Scan folder dengan clamAV --\n"
echo "Silahkan pilih folder yang akan di-scan"
target=`zenity --file-selection --directory --title="folderscan : Pilih Folder"`
if [ ! -d "$target" ]; then
  echo -e "Dibatalkan.\n"
  exit 0
fi
echo "Folder yang dipilih = $target"
echo -e "\nMemproses..."
clamscan -r $target
zenity --notification --text="folderscan : Proses scan telah selesai."&
exit 0
Selesai :smile:


cmiiw


Post Reply

Who is online

Users browsing this forum: No registered users and 55 guests