Cara menggunakan widget grafis dalam skrip bash dengan zenity
- 3963
- 556
- John Ratke
Zenity adalah utilitas yang sangat berguna yang memungkinkan kami membuat antarmuka pengguna grafis untuk skrip shell kami. Beberapa widget ada, dan dapat digunakan dengan memohon program dengan opsi masing -masing. Widget didasarkan pada GTK
toolkit, dan mengembalikan hasil interaksi pengguna baik pada output standar atau sebagai kode pengembalian.
Dalam tutorial ini Anda akan belajar:
- Apa saja opsi zenity umum
- Apa saja widget yang paling berguna dan bagaimana menggunakannya
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori | Persyaratan, konvensi atau versi perangkat lunak yang digunakan |
---|---|
Sistem | Distribusi-independen |
Perangkat lunak | Utilitas zenity |
Lainnya | Keakraban dengan shell (bash dalam kasus ini) dan konsep seperti Subshell and Exit Codes |
Konvensi | # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa |
Instalasi
Itu zenity
Paket termasuk dalam repositori dari semua distribusi Linux utama, dan mungkin sudah diinstal jika Anda menggunakan Gnome
lingkungan desktop. Untuk menginstalnya, kami dapat menggunakan manajer paket distribusi favorit kami, IN Fedora
, Misalnya, kita bisa menggunakan dnf
:
$ sudo dnf menginstal zenity
Saat menggunakan distribusi berbasis Debian dan Debian seperti Ubuntu, kita dapat menggunakan perintah apt-get:
$ sudo apt-get install zenity
Zenity sudah termasuk dalam archlinux tambahan
Repositori, oleh karena itu kami dapat menginstalnya melalui Pacman
:
$ sudo Pacman -s zenity
Opsi generik
Sebelum kita mulai melihat beberapa widget paling berguna yang disediakan oleh zenity
, kita harus menyebutkan beberapa opsi generik yang tersedia yang dapat kita gunakan untuk mengubah perilaku program.
Kami menyebutnya generik karena mereka dapat diterapkan secara independen dari widget yang dipilih: --judul
, --janda-icon
, --lebar
, --tinggi
Dan --waktu habis
.
Pertama -tama kami memiliki --judul
Opsi: kita dapat menggunakannya untuk menentukan judul untuk jendela dialog. Demikian pula, --ICON Jendela
opsi mari kita tentukan ikon yang akan digunakan sebagai ikon untuk jendela, dan akan terlihat, misalnya, di bilah tugas. Untuk menampilkan ikon di widget, sebagai gantinya, kita dapat menggunakan --nama ikon
opsi dan berikan salah satu nama ikon yang diizinkan (berikut adalah daftar lengkap) sebagai argumen. Untuk menggunakan ikon stok yang disediakan dalam kesalahan, info, pertanyaan, atau dialog peringatan, misalnya, kami dapat menentukan masing -masing: dialog-kesalahan
, dialog-info
, pertanyaan dialog
atau Peringatan Dialog
.
Itu --lebar
Dan --tinggi
Pilihannya cukup jelas: Mereka membiarkan kami mendefinisikan geometri jendela dialog kami.
Akhirnya, dengan menggunakan --waktu habis
Opsi kita dapat mengatur batas waktu dalam hitungan detik untuk dialog: Setelah jumlah waktu yang ditentukan, itu akan ditutup secara otomatis.
Widget yang tersedia
Ada beberapa widget yang dapat kami gunakan berkat Zenity: masing -masing memiliki tujuan tertentu. Mari kita lihat beberapa dari mereka.
Widget Kalender
Widget Kalender akan menampilkan kalender dan membiarkan pengguna memilih tanggal, dengan memilih bulan, hari dan tahun. Nilai yang dipilih akan dikembalikan pada output standar
. Untuk meluncurkan kalender widget, yang harus kita lakukan hanyalah memohon zenity, dengan --kalender
pilihan:
$ zenity --Calendar
Kita dapat menggunakan serangkaian opsi untuk menyempurnakan perilaku widget, misalnya, dengan menggunakan --hari
, --bulan
, --tahun
dan memberikan Int
Sebagai nilai, kita dapat menetapkan, masing -masing, hari default, bulan dan tahun yang akan ditampilkan di widget. Untuk menentukan format spesifik di mana tanggal yang dipilih harus dikembalikan, kita dapat menggunakan --tanggal
opsi dan tentukan pola di strftime
gaya.
Widget Kalender
Widget entri
Widget entri sangat berguna ketika kita perlu meminta beberapa teks kepada pengguna. Katakanlah misalnya kita perlu meminta pengguna untuk memasukkan namanya; kita dapat menjalankan perintah berikut:
$ zenity --entry - -title "permintaan nama" --text "Harap masukkan nama Anda:"
Di sini kami menggunakan --judul
Dan --entri-teks
Opsi untuk menyesuaikan, masing -masing, judul dan label yang untuk widget. Setelah kami menjalankan perintah di atas, widget akan muncul:
Widget entri
Teks yang dimasukkan oleh pengguna akan dikembalikan pada output standar.
Widget pemilihan file
Widget Pemilihan File memungkinkan kami menampilkan antarmuka grafis yang bagus untuk membiarkan pengguna memilih satu atau lebih file. Sama seperti yang kami lakukan dalam contoh sebelumnya, kami dapat menggunakan serangkaian opsi untuk memodifikasi perilaku dan penampilan dialog. Salah satu yang paling penting adalah --nama file
yang dapat digunakan untuk mengatur file/direktori yang akan dipilih secara default. Berikut ini adalah gambaran cepat dari opsi dan fungsionalitas yang mereka berikan:
Pilihan | Fungsi |
---|---|
-nama file | Atur direktori/file default yang akan dipilih di widget |
-banyak | Aktifkan kemampuan untuk memilih beberapa file sekaligus |
-File-filter | Tentukan filter untuk nama file |
-direktori | Batasi seleksi ke direktori |
-menyimpan | Jalankan widget dalam mode "Simpan". |
-konfirmasi-overwrite | Tanyakan kepada pengguna untuk konfirmasi saat menimpa file yang ada |
-pemisah | Tentukan pemisah yang akan digunakan untuk memisahkan jalur saat beberapa file dipilih |
Mari kita lihat contoh penggunaan widget. Katakanlah kami ingin membiarkan pengguna memilih beberapa file, dan kami ingin konten pengguna $ Rumah
Direktori akan ditampilkan di widget saat dibuka. Yang harus kita lakukan adalah menjalankan perintah berikut:
$ zenity --pileksi-file-multiple --filename "$ home/"
Anda dapat melihat bahwa kami memberikan trailing /
ke jalan: dengan cara ini konten direktori ditampilkan, bukan direktori itu sendiri. Ini widget kami:
Widget pemilihan file
Setelah kami mengklik tombol "OK", jalur absolut dari file yang dipilih akan dikembalikan pada output standar, dipisahkan oleh karakter, yang merupakan default adalah |
:
/home/egdoc/unduhan/a.txt |/home/egdoc/download/b.txt
Kami dapat dengan mudah mengubah pemisah, memberikan karakter yang ingin kami gunakan sebagai argumen opsi -Peparator.
Jika kita membuka dialog di Simpan mode
, Pengguna akan diminta untuk memberikan nama file yang ingin dia simpan. Jika file ada dan kami menyediakan --konfirmasi-overwrite
Opsi, dia akan diminta untuk mengkonfirmasi dia ingin menimpanya:
$ zenity--file-seleksi-save --confirm-overwrite --filename "$ home/"
Jalur yang dipilih akan dikembalikan ke output standar, dan kami akan bebas menggunakannya di skrip kami.
Widget kemajuan
Widget lain yang menarik adalah kemajuan satu: kita dapat meluncurkannya dengan menggunakan zenity dengan --kemajuan
pilihan. Kita dapat menggunakannya, misalnya, untuk menunjukkan kemajuan operasi yang sudah berjalan lama. Berikut adalah beberapa opsi paling berguna yang dapat kami gunakan dengan widget:
Pilihan | Fungsi |
---|---|
-persentase | Menetapkan nilai persentase awal dari bilah kemajuan |
-Tutup otomatis | Secara otomatis menutup dialog saat kemajuan selesai |
-auto-kill | Bunuh proses induk jika dialog ditutup dengan pembatalan tombol |
-No-Cancel | Jangan menampilkan tombol batal |
Berikut adalah contoh bagaimana kita dapat menggunakan widget dalam skrip bash:
#!/bin/bash # # skrip dummy untuk mendemonstrasikan widget zenity progress! (echo 25 echo "# pengaturan ..." sleep 2 echo 30 echo "# membaca file ..." sleep 2 echo 70 echo "# membuat konten ..." sleep 1 echo 100 echo "# selesai!") | zenity--title" progress bilah contoh "--progress-auto-kill
Menyalin Skrip di atas sebenarnya tidak melakukan operasi apa pun, tetapi berguna untuk memahami cara kerja widget. Ada dua hal utama yang harus diperhatikan dalam Kode: Pertama -tama, perintah yang akan dieksekusi dibungkus di antara tanda kurung, oleh karena itu dieksekusi dalam a subsksklell
: Ini diperlukan agar widget bekerja dengan benar; Kedua, ketika kami menggemakan garis yang dimulai dengan angka, ini akan ditafsirkan sebagai persentase dari bilah kemajuan.
Dengan cara yang sama, ketika kita menggemakan garis yang dimulai dengan #
karakter, itu akan digunakan sebagai teks yang akan ditampilkan di widget. Berikut adalah video pendek dari skrip yang sedang beraksi:
Info, peringatan dan widget kesalahan
Untuk menampilkan info, peringatan atau pesan kesalahan, kami dapat menggunakan zenity dengan --info
, --peringatan
Dan --kesalahan
Opsi, masing -masing. Dalam hal ini kami menggunakan --teks
opsi untuk menentukan pesan. Berikut adalah contoh pemberitahuan:
$ zenity --info --sdth = 400 -height = 200 --text "Ini adalah pemberitahuan!"
Widget pemberitahuan
Menggunakan widget peringatan, sama mudahnya:
$ zenity - -warning --didth = 400 -height = 200 --text "Ini adalah peringatan!"
Widget peringatan
Ini, sebaliknya adalah contoh dari pesan kesalahan:
$ zenity --Error --Didth = 400 --Teight = 200 --Text "Ini adalah kesalahan!"
Widget kesalahan
Widget pertanyaan
Untuk mengajukan pertanyaan kepada pengguna dan mendapatkan jawabannya, kami dapat menggunakan pertanyaan
widget, memohon zenity dengan --pertanyaan
pilihan. Kami menentukan pertanyaan menggunakan --teks
opsi, dan tentukan label tombol 'OK' dan 'membatalkan', masing -masing menggunakan --OK-Label
Dan --Batalkan label
pilihan. Inilah contohnya:
$ zenity --question --text "Apakah Anda yakin ingin berhenti?"---no-wrap --ok-label" Ya "--Cancel-label" Tidak "
Widget pertanyaan
Dalam hal ini, kami juga menggunakan --tidak ada bungkus
opsi, untuk menghindari pembungkus teks di widget. Hasil pilihan pengguna tidak akan ditampilkan pada output standar; Sebaliknya, perintah akan mengaturnya Kode Keluar
Dengan demikian, jadi itu akan kembali 0
Jika pengguna mengklik tombol 'OK', dan 1
Jika dia mengklik pada 'Batalkan' satu atau menutup jendela (ini mungkin tampaknya kontra-intuitif, tetapi ingat dari kode keluar 0 berarti bahwa perintah dieksekusi dengan keberhasilan di shell).
Widget kata sandi
Ini adalah widget yang harus kita gunakan ketika kita ingin pengguna memasukkan kata sandi atau informasi sensitif apa pun: teks yang dia masukkan ditutupi oleh peluru:
Widget kata sandi
Sementara teks yang dimasukkan dari pengguna bertopeng, nilai yang dikembalikan oleh widget akan terlihat jelas pada output standar.
Widget pemilihan warna
Ini adalah widget bagus lainnya. Dengan menggunakannya, kita dapat membuat pengguna memilih warna dari palet. Untuk menjalankannya, kami menggunakan zenity dengan --seleksi warna
pilihan. Kita dapat menentukan warna yang awalnya dipilih dengan menggunakan --warna
dan memberikan warnanya sebagai argumen. Inilah contohnya:
Widget pemilihan warna
Secara opsional, kita dapat menampilkan palet warna sebagai gantinya, dengan --Show-Palette
pilihan:
$ zenity-seleksi-warna-warna merah-palette show
Palet widget pemilihan warna
Warna yang dipilih oleh pengguna akan dikembalikan RGB
Notasi tentang output standar. Misalnya saat memilih warna merah, berikut ini akan dikembalikan:
RGB (255,0,0)
Widget daftar
Widget berikutnya yang akan kita lihat, adalah widget daftar. Dengan itu, dimungkinkan untuk membuat dialog multi-kolom, dan secara opsional membiarkan pengguna memilih satu atau beberapa opsi melalui kotak centang atau tombol radio. Untuk membuat zenity menampilkan dialog jenis ini, kami menggunakan --daftar
opsi dan tentukan kolom dan isinya; Jika kita menghilangkannya, perintah akan gagal:
$ zenity -List tidak ada judul kolom yang ditentukan untuk dialog daftar.
Menyalin Untuk mendefinisikan header kolom kami menggunakan --kolom
opsi dan berikan string sebagai argumen. Kami mengulangi perintah untuk setiap kolom yang ingin kami buat:
$ zenity --ist -Pilihan kolom -distribusi kolom
Dengan perintah di atas kami membuat dua kolom, dengan header "seleksi" dan "distribusi". Sekarang kami akan memberi pengguna serangkaian baris, masing -masing mewakili distribusi Linux. Di kolom pertama setiap baris kami akan menempatkan kotak centang untuk membiarkan pengguna memilih entri yang sesuai:
$ zenity --ist -seleksi kolom -distribusi kolom palsu debian true fedora -radiolist
Setiap string yang kami berikan setelah definisi kolom dikaitkan dengan kolom, tergantung pada urutan penampilannya. Seperti yang Anda lihat, kami membuat dua baris. Di kolom pertama setiap baris kami memberikan nilai: kami menggunakan PALSU
sehingga kotak centang atau tombol radio yang sesuai tidak dipilih saat widget ditampilkan, dan BENAR
untuk mengatur input sebagai ditandai secara default. Ini widget yang dihasilkan:
Widget daftar
Saat kami mengklik tombol "OK", dan melakukan pilihan kami, nilai yang terkait dengan baris akan dilaporkan pada output standar. Jika kami ingin membiarkan pengguna memilih beberapa baris, kami dapat menggunakan --daftar periksa
Opsi: | karakter akan digunakan untuk memisahkan nilai yang dipilih.
Kesimpulan
Dalam tutorial ini kami belajar untuk mengetahui zenity
, utilitas yang memungkinkan kami menggunakan dialog grafis dalam skrip shell kami. Kami melihat apa saja opsi umum yang dapat kami gunakan dengan semua widget, seperti --lebar
Dan --tinggi
, Dan kami belajar menggunakan beberapa widget paling berguna yang dapat kami hasilkan dengan program ini. Untuk mempelajari lebih lanjut tentang zenity
Anda dapat berkonsultasi!
Tutorial Linux Terkait:
- Pengantar Otomatisasi Linux, Alat dan Teknik
- Menguasai loop skrip bash
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Loop bersarang dalam skrip bash
- Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
- Menangani input pengguna dalam skrip bash
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- Tutorial debugging GDB untuk pemula
- File Konfigurasi Linux: 30 Teratas Paling Penting
- Sistem Linux Hung? Cara melarikan diri ke baris perintah dan…
- « Cara memperluas manajer file nautilus gnome dengan skrip khusus
- Pengantar Tampilan SQL Database MySQL/MariADB »