Ada cara menggunakan zenity
zenity --question --text "Are you sure?"
Anda dapat menguji status keluar dari perintah dengan $?
variabel, sesuatu seperti ini: if [ $? -eq 1 ];then exit 1 ; fi
. 0
adalah OK
, 1
dibatalkan. Konstruk ini akan berfungsi dengan baik jika Anda perlu menguji status keluar dari popup nanti, mungkin menyimpan $?
tepat setelah popup keluar ke suatu variabel. Seperti dibahas dalam komentar, struktur seperti di bawah ini juga akan berfungsi:
if zenity --question --text "Are you sure"
then
runSumeFunction
else
exit 1
fi
atau
zenity --question --text "Are you sure?" || echo "User isn't sure:/"
Sergiy Kolodyazhnyy
sumber
if zenity...
atauzenity... || exit
Anda bisa menggunakan
xmessage
skrip itu sendiri. Letakkan sesuatu seperti ini setelah "shebang":xmessage "Are you sure?"
Ini akan menampilkan pesan grafis yang mengatakan "Anda yakin?" dengan tombol "oke".
Anda dapat mengonfigurasi
xmessage
untuk memiliki lebih dari satu tombol dan mengubah apa yang tertulis di dalamnya. Anda juga dapat mengonfigurasi tindakan yang dilakukan oleh setiap tombol.Sebagai contoh,
Lihat
man xmessage
semua opsi (ada banyak).sumber
Alih-alih memberi tahu Anda cara melakukannya, saya akan memberi tahu Anda bahwa Anda seharusnya tidak melakukan itu.
TL; DR - Jangan ubah skrip Anda. Alih-alih mengkonfigurasi pengelola file Anda atau mencari tahu mengapa pengguna Anda menjalankannya secara tidak sengaja.
EDIT: Tampaknya Anda memperlakukan skrip Anda sebagai sesuatu yang istimewa, seolah-olah pengaturan umum tidak cukup baik dan skrip Anda memerlukan konfirmasi khusus dari pengguna. Mengklik dua kali itu adalah konfirmasi. Jika Anda menemukan bahwa pengguna Anda menjalankannya secara tidak sengaja maka Anda harus mencari tahu mengapa mereka melakukannya dan menyelesaikannya. Maka masalah Anda yang sebenarnya bukanlah bagaimana cara meminta konfirmasi tetapi bagaimana mencegah pengguna Anda menjalankannya secara tidak sengaja.
Dari cara Anda mengekspos masalah Anda, tampaknya Anda mengharapkan program (skrip) Anda dijalankan dengan menavigasi ke tempat file itu, dan kemudian mengkliknya dari manajer file. Pikirkan semua program lain di sistem Anda. Berapa banyak yang Anda mulai seperti itu? Apakah Anda menavigasi ke
/usr/local/bin
saat memulai firefox? Tentu saja tidak. Anda mengkliknya dari menu aplikasi. (Tweak gnome adalah skrip python mungkin itu contoh yang lebih baik)Semoga Anda tidak akan mempertimbangkan mengkliknya dari menu aplikasi kecelakaan. Jadi masalah Anda adalah bagaimana membuat skrip Anda muncul di sana daripada menggunakan file manager. Untuk melakukan ini, Anda melakukan hal-hal berikut:
letakkan skrip Anda dari file lain di mana pengguna dapat mengkliknya secara tidak sengaja (tempat tipikal adalah
/usr/local/bin/
untuk instalasi seluruh sistem atau~/.local/bin/
untuk instalasi pengguna)buat file Entri Desktop (baca spesifikasi standar ). Ini kasus minimal:
dan masukkan
/usr/local/share/applications/your-script.xml
atau~/.local/share/your-script.xml
.Akhirnya lari
update-desktop-database
.Karena Anda mengklik dua kali pada skrip, itu tugas manajer file Anda untuk mengonfirmasi ini. Bukan tugas skrip untuk mengonfirmasi apakah skrip harus dijalankan. Ambil ini secara ekstrim. Bisakah Anda bayangkan betapa konyolnya setiap kali Anda menelepon suatu program yang harus Anda konfirmasikan?
Satu-satunya waktu ketika sebuah program harus meminta konfirmasi adalah ketika itu akan melakukan sesuatu yang mungkin berbahaya dan tidak dapat diubah. Misalnya, menimpa file atau melewati tempat sampah. Dan perhatikan bahwa bahkan contoh-contoh ini adalah tentang membuat program melakukan sesuatu yang spesifik. Mereka bukan tentang memulai program semacam itu. Jika suatu program hanya bertujuan untuk melakukan hal berbahaya seperti itu, maka seharusnya tidak meminta konfirmasi juga.
Memang, Nautilus (pengelola file Gnome) sudah secara default akan meminta Anda untuk mengonfirmasi apakah Anda ingin menjalankan skrip (atau cukup membukanya di editor teks).
Dan tentu saja, perilaku ini dapat dikonfigurasi, memberikan pengguna kemungkinan untuk mematikannya (entri catatan pada File Teks yang Dapat Dieksekusi ).
Jadi, jangan tambahkan dialog konfirmasi yang mengganggu ke skrip Anda. Konfigurasikan manajer file Anda dengan benar. Dan biarkan pengguna Anda melakukan hal yang sama.
sumber
Anda dapat menggunakan yad, yang seperti zenity pada steroid karena jauh lebih mudah dikonfigurasi. Anda dapat menginstalnya dari Pusat Perangkat Lunak di Ubuntu. Dalam bentuk paling dasar, Anda bisa mengetik
yad --title=Question --image=dialog-question --text="Are you sure?"
dan Anda akan melihat ini:
Jika OK ditekan kita mendapat kode balik 0, jika Batal ditekan kita mendapat kode balik 1.
Akan lebih baik untuk meletakkan kotak di tengah dan juga menyesuaikan lebarnya, gunakan tab terkemuka untuk memposisikan teks "Apakah Anda yakin?" lebih ke kanan dan juga selalu ada di atas. Untuk ini kita perlu:
yad --center --on-top --title=Question --image=dialog-question --text="\tAre you sure?" --width 200
Sebagian besar sakelar cukup jelas kecuali untuk "\ t" sebelum "Apakah Anda yakin?" yang hanya menambahkan ruang tab sebelum mencetak teks. Sekarang kita harus melihat ini:
Kotak berada di tengah, selalu di atas dan terlihat lebih baik. Untuk mengatur variabel untuk menguji tombol mana yang ditekan, gunakan:
yad --center --on-top --title=Question --image=dialog-question --text="\tAre you sure?" --width 200;result=$?;echo $result
Dalam contoh ini kita menggunakan variabel $ hasil yang akan ditetapkan ke 0 jika OK ditekan atau ke 1 jika Batal ditekan.
Untuk bantuan dengan yad, Anda dapat menggunakan
man yad
atauyad --help-all
tetapi saya menemukan contoh praktis lebih mudah untuk beradaptasi. Ada beberapa disini . Yad jauh lebih dapat dikonfigurasi dan karena itu lebih bermanfaat daripada zenity menurut saya.sumber