Ketika berbicara tentang skrip bash, semua skrip terutama difokuskan pada operasi baris perintah. Apakah Anda memerlukan masukan dari pengguna atau menampilkan beberapa pesan, semuanya dilakukan melalui terminal. Kebanyakan orang yang menulis skrip menggunakan Bash tidak tahu ada seperangkat alat GUI yang tersedia. Dalam artikel ini, kita akan melihat tentang salah satu alat yang disebut Zenity - program sederhana yang memungkinkan Anda membuat kotak dialog grafis (GTK+) di baris perintah dan skrip shell.
Apa itu Zenity?
Zenity adalah penulisan ulang gdialog, port dialog GNOME yang memungkinkan Anda membuat satu set widget untuk operasi yang berbeda di mana pengguna dapat berinteraksi dengan skrip secara grafis. Widget didasarkan pada toolkit GTK.
Zenity adalah program open source yang ditulis menggunakan C bahasa pemrograman. Mendukung Linux, BSD dan Windows.
Tanpa basa-basi lagi, mari kita lihat bagaimana menampilkan kotak dialog GTK+ grafis dari commandline dan skrip shell menggunakan Zenity.
Cara menginstal Zenity di Linux
Pertama, periksa apakah zenity telah diinstal dan tersedia untuk digunakan dengan menjalankan perintah berikut:
$ which zenity /usr/bin/zenity
$ zenity --version 3.32.0
$ zenity --about
Jika zenity tidak diinstal di distribusi Anda, jalankan perintah berikut tergantung pada distribusi Anda untuk menginstalnya.
Linux Alpen:
$ sudo apk add zenity
Linux Arch:
$ sudo pacman -S zenity
Fedora, RHEL, CentOS, Alma Linux dan Rocky Linux:
$ sudo dnf install zenity
Debian, Ubuntu, Linux Mint, Pop OS:
$ sudo apt install zenity
openSUSE:
$ sudo zypper install zenity
1. Bantuan Zenity &opsi umum
Untuk setiap widget, ada opsi bantuan terkait yang dengannya Anda bisa mendapatkan serangkaian opsi yang didukung.
Jalankan perintah berikut untuk mengakses bagian bantuan.
$ zenity --help
Ada beberapa opsi umum yang dapat digunakan bersama dengan widget apa pun. Ini bukan opsi wajib tetapi jika digunakan akan mempengaruhi Anda untuk mengubah perilaku widget.
Untuk mendapatkan daftar opsi umum, jalankan perintah berikut.
$ zenity --help-general
Kita akan melihat cara kerja opsi ini di bagian mendatang.
2. Kotak dialog pesan
Kotak dialog pesan akan menampilkan kotak dialog kesalahan, peringatan, info, dan pertanyaan. Tergantung pada situasinya, Anda harus menggunakan kotak dialog yang sesuai dalam skrip.
2.1. Kotak dialog kesalahan
Untuk mengakses daftar opsi yang didukung untuk kotak dialog kesalahan, jalankan perintah berikut:
$ zenity --help-error
Untuk menampilkan kotak dialog kesalahan dalam skrip, gunakan perintah berikut. Di sini, --error
flag akan membuat kotak dialog kesalahan dan --text
bendera akan mencetak pesan teks. Anda dapat melihat dari gambar ada ikon kesalahan yang terkait dengan kotak dialog.
zenity --error \ --title "Error Message" \ --width 500 \ --height 100 \ --text "Permission denied. Run with sudo or as root user."
Anda juga dapat melihat dari gambar di atas, beberapa opsi umum seperti --width, --height digunakan untuk mengontrol geometri kotak dialog. Bendera --title digunakan untuk mencetak dialog bar dengan judul.
2.2. Kotak dialog peringatan
Untuk mengakses daftar opsi yang didukung untuk kotak dialog peringatan, jalankan perintah berikut:
$ zenity --help-warning
Gunakan --warning
tandai dalam skrip untuk menampilkan kotak peringatan dan --text
bendera untuk menampilkan pesan peringatan.
zenity --warning \ --title "Warning Message" \ --width 500 \ --height 100 \ --text "Disk space exceeded the threshold limit. Check ASAP."
2.3. Kotak dialog info
Untuk mengakses daftar opsi yang didukung untuk kotak dialog info, jalankan perintah berikut:
$ zenity --help-info
Gunakan --info
tandai dalam skrip untuk menampilkan kotak info dan --text
tandai untuk menampilkan pesan info.
zenity --info \ --title "Info Message" \ --width 500 \ --height 100 \ --text "Installation completed successfully."
2.4. Kotak dialog pertanyaan
Untuk mengakses daftar opsi yang didukung untuk kotak dialog pertanyaan, jalankan perintah berikut:
$ zenity --help-question
Kotak dialog pertanyaan akan memunculkan pesan bersama dengan Ya atau Tidak pilihan. Jika Anda menekan "Ya" , kode pengembalian akan menjadi "nol" dan untuk "Tidak" kode pengembalian akan menjadi "satu" . Anda harus menggunakan kode keluar untuk menulis logika lebih lanjut dalam skrip Anda.
zenity --info \ --title "Info Message" \ --width 500 \ --height 100 \ --text "Installation completed successfully."
3. Kotak dialog entri teks
Untuk mengakses daftar opsi yang didukung untuk kotak dialog entri teks, jalankan perintah berikut:
$ zenity --help-entry
Kotak dialog entri teks meminta input untuk pengguna. Bendera --entry
yang akan digunakan untuk membuat kotak dialog entri. Untuk menampilkan beberapa teks dalam kotak dialog, gunakan --text
bendera. Nilai yang dimasukkan dalam kotak teks akan dicetak di terminal setelah Anda menekan ok. Anda harus menyimpan output ke variabel jika Anda ingin memproses lebih lanjut input dari kotak teks seperti yang saya lakukan di bawah ini.
$ USR=$(zenity --entry \ --width 500 \ --title "check user" \ --text "Enter the user name"); echo $USR
Jika Anda tidak ingin teks masukan terlihat saat mengetik, gunakan --hide-text
bendera.
$ USR=$(zenity --entry \ --width 500 \ --title "check user" \ --text "Enter the user name" \ --hide-text); echo $USR
Anda juga dapat mengatur nilai default di dalam kotak input menggunakan --entry-text
bendera. Anda harus menghapus nilai dan memberikan masukan Anda atau nilai yang ada akan diambil sebagai default.
$ USR=$(zenity --entry \ --width 500 \ --title "check user" \ --text "Enter the user name" \ --entry-text $USER); echo $USR
4. Kotak dialog kata sandi
Untuk mengakses daftar opsi yang didukung untuk kotak dialog kata sandi, jalankan perintah berikut:
$ zenity --help-password
Kotak dialog kata sandi akan menerima nama pengguna dan kata sandi menggunakan --username
dan --password
bendera. Output akan ditampilkan sebagai (Nama Pengguna | Kata Sandi). Anda harus menetapkan output dari perintah ke variabel dan mengekstrak nama pengguna dan kata sandi untuk diproses lebih lanjut.
$ zenity --password --username
5. Kotak dialog informasi teks
Untuk mengakses daftar opsi yang didukung untuk kotak dialog informasi teks, jalankan perintah berikut:
$ zenity --help-text-info
Kotak dialog informasi teks akan mencetak teks apa pun dari file atau membuka URL di kotak dialog. Misalnya, untuk membaca file dan menampilkan teks gunakan flag --filename
. Pada contoh di bawah ini, saya membaca /etc/hosts
berkas.
zenity --text-info \
--title "Hostname Information" \
--filename "/etc/hosts"
--checkbox
flag dapat digunakan untuk mendapatkan input dari pengguna. Contoh yang baik adalah "Menerima perjanjian lisensi". Kecuali Anda memilih kotak centang, tombol ok akan dinonaktifkan.
zenity --text-info \
--title "Hostname Information" \
--filename "/etc/hosts" \
--checkbox "This is a checkbox"
6. Kotak dialog kalender
Untuk mengakses daftar opsi yang didukung untuk kotak dialog kalender, jalankan perintah berikut:
$ zenity --help-calendar
Kotak dialog kalender akan menampilkan kalender dan memungkinkan Anda memilih tanggal. Anda harus menyimpan output ke variabel lain tanggal yang dipilih akan dicetak di terminal.
zenity --calendar \ --title="Select a Date" \ --text="Select Date to pull the employee record."
Secara default, tanggal hari ini dipilih tetapi kami juga dapat memilih tanggal khusus dengan menggunakan --day
, --month
, dan --year
bendera.
zenity --calendar \ --title="Select a Date" \ --text="Select Date to pull the employee record." \ --year 2015 \ --month 7 \ --day 15
Format keluaran default adalah DD\MM\YY
. Dimungkinkan juga untuk membuat keluaran tanggal khusus menggunakan --date-format
bendera.
zenity --calendar \ --title="Select a Date" \ --text="Select Date to pull the employee record." \ --date-format %m-%d-%y
7. Kotak dialog pemilihan warna
Untuk mengakses daftar opsi yang didukung untuk kotak dialog pemilihan warna, jalankan perintah berikut:
$ zenity --help-color-selection
Dialog pemilihan warna akan menampilkan palet dan memungkinkan Anda untuk memilih warna dan output akan menjadi nilai RGB. Gunakan --color-selection
tandai bersama dengan --show-palette
bendera.
$ COLOR_RGB=$(zenity --color-selection --show-palette) $ echo $COLOR_RGB
8. Kotak dialog pemilihan file
Untuk mengakses daftar opsi yang didukung untuk kotak dialog pemilihan file, jalankan perintah berikut:
$ zenity --help-file-selection
Dialog pemilihan file akan memungkinkan Anda untuk memilih file atau direktori dan jalur ditampilkan sebagai output. Bendera --file-selection
seharusnya digunakan. Ada beberapa tanda yang dapat digunakan dalam dialog pemilihan file.
--filename
=> Jalur ke file/direktori default--directory
=> Hanya direktori yang akan dipilih--multiple
=> Memungkinkan untuk memilih beberapa nama file--save
=> Setel ke mode simpan
zenity --file-selection \ --title "Select Files" \ --filename "/home/${USER}/" \ --multiple
Dalam kasus beberapa pilihan, jalur file akan dipisahkan menggunakan "|"
simbol.
Dimungkinkan untuk menyetel pemisah khusus menggunakan --separator
bendera. Dalam contoh di bawah ini, saya menggunakan titik dua (:
) sebagai pemisah.
zenity --file-selection \ --title "Select Files" \ --filename "/home/${USER}/" \ --multiple \ --separator :
9. Kotak dialog formulir
Untuk mengakses daftar opsi yang didukung untuk kotak dialog formulir, jalankan perintah berikut:
$ zenity --help-forms
Dialog formulir memungkinkan Anda membuat formulir. Contoh yang baik adalah formulir pendaftaran pengguna baru. Gunakan --forms
tandai untuk membuat kotak dialog formulir. Ada beberapa flag tambahan yang dapat digunakan bersama dengan --forms
bendera.
--add-entry
=> Tambahkan entri baru dalam dialog formulir agar pengguna dapat memasukkan input.--text
=> Teks yang akan ditampilkan di kotak dialog.--add-password
=> Menerima kata sandi tetapi tidak akan menampilkan nilai di layar.--calendar
=> Buka kalender dan pilih tanggalnya.
Di bawah ini adalah contoh sederhana formulir pendaftaran pengguna menggunakan dialog formulir.
zenity --forms \ --text "Welcome to signup wizard" \ --add-entry "Enter the first name" \ --add-entry "Enter the last name" \ --add-entry "Enter login name" \ --add-password "Enter password"
Pemisah default untuk nilai input adalah "|"
simbol. Anda juga dapat membuat pemisah khusus menggunakan --separator
bendera.
10. Kotak dialog kemajuan
Untuk mengakses daftar opsi yang didukung untuk kotak dialog bilah kemajuan, jalankan perintah berikut:
$ zenity --help-progress
Gunakan --progress
tandai untuk membuat bilah kemajuan. Untuk membuat bilah kemajuan, Anda harus memahami cara kerjanya. Dua masukan harus diberikan dari pihak Anda.
- Baris yang hanya berisi angka dengan
echo
perintah akan dianggap sebagai persentase kemajuan. - Baris yang dimulai dengan
#
simbol diecho
perintah akan dicetak sebagai pesan kemajuan.
( echo 10 echo "# Updating repository Index" sleep 5 echo 15 echo "# Reading input files" sleep 5 echo 70 echo "# Installing packages..." sleep 5 echo 100 echo "# Package Installation completed!" ) | zenity --title "Package Installation Progress Bar" --progress --auto-close
Setelah bilah kemajuan selesai, Anda dapat membuat kotak dialog untuk ditutup secara otomatis menggunakan tanda --auto-close.
11. Daftar Kotak dialog
Untuk mengakses daftar opsi yang didukung untuk kotak dialog daftar, jalankan perintah berikut:
$ zenity --help-list
Kotak dialog daftar memungkinkan Anda membuat daftar baris dan kolom. Gunakan --list
tandai untuk membuat kotak dialog daftar dan --column
tandai untuk menambahkan kolom.
$ zenity --list \ --column "Player" \ --column "Club" \ --column "Country" \ Messi PSG Argentina \ Neymar PSG Brazil \ Ronaldo Manu Portugal
Perhatikan contoh di atas. Menggunakan --column
flag, saya telah membuat tiga kolom. Setelah kolom dibuat, Anda dapat memasukkan nilai di baris berikutnya yang akan ditampilkan untuk setiap baris seperti yang saya lakukan pada gambar di atas.
Di kolom pertama, kotak centang atau tombol radio dapat dibuat. Untuk membuat tombol radio, gunakan --radiolist
tandai dan untuk membuat kotak centang, gunakan --checklist
bendera. Saat membuat daftar radio, wajib untuk menambahkan TRUE atau SALAH kata kunci sebagai nilai pertama untuk baris Anda. True akan memilih radiolist atau kotak centang sementara false akan membiarkan kotak tidak dipilih.
zenity --list \ --checklist \ --column "checkbox" \ --column "Player" \ --column "Club" \ --column "Country" \ FALSE Messi PSG Argentina \ FALSE Neymar PSG Brazil \ FALSE Ronaldo Manu Portugal
Ketika Anda memilih baris dan klik ok, nilai akan dicetak ke terminal dengan (|
) sebagai pemisah. Secara default, hanya kolom pertama yang dicetak ke terminal. Untuk mencetak seluruh baris, berikan --print-column ALL
.
Kesimpulan
Kami telah sampai di akhir artikel. Saya telah menjelaskan secara singkat apa itu zenity dan berbagai widget yang tersedia untuk digunakan. Anda mungkin tidak memerlukan utilitas GUI sepanjang waktu. Namun, ketika Anda membutuhkan widget GTK+ grafis dalam skrip bash, Zenity akan berguna di antara alat GUI lainnya.