GNU/Linux >> Belajar Linux >  >> Linux

Cara Membuat Kotak Dialog GUI Dalam Skrip Bash Dengan Zenity Di Linux Dan Unix

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.

  1. Baris yang hanya berisi angka dengan echo perintah akan dianggap sebagai persentase kemajuan.
  2. Baris yang dimulai dengan # simbol di echo 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.


Linux
  1. Cara membuat skrip Bash menggunakan variabel eksternal dan skrip yang disematkan

  2. Cara Menginstal Linux KVM dan Membuat VM Tamu dengan Contoh

  3. Cara Membuat dan Meluncurkan Kontainer Linux LXC dengan Perintah LXC

  1. Cara Membuat Backup dengan Perintah tar di Linux

  2. Menambahkan GUI Sederhana ke skrip shell Linux dengan kdialog

  3. Cara menampilkan dialog GUI dalam skrip bash menggunakan Zenity

  1. Cara Membuat Dan Meluncurkan VM Ubuntu Dengan Multipass Di Linux

  2. Cara Melihat Penggunaan Disk Dengan Duf Di Linux Dan Unix

  3. Cara Menginstal Rclone Di Linux Dan Unix