zenity 是一個小程式用來顯示簡單的 GTK+ 對話框,其中也有進度條的選項。
$ zenity --help-progress 用法: zenity [選項…] 進度列選項 --progress 顯示進度指示窗 --text=文字 指定對話方塊中的文字 --percentage=百分比 指定開始時的百份比數值 --pulsate 令進度列內的方塊來回移動 --auto-close 當進度達到 100% 時關閉對話方塊 --auto-kill 若按下取消按鈕則中止父程序 --no-cancel 隱藏取消按鈕 --time-remaining 估計當進度到達 100% 的時間
使用上可將其它程式的標準輸入當成輸入,例如:
$ for i in {0..100..20}; do echo $i; sleep 1; done | \ zenity --progress
如果想讓進度達到百分之百時自動結束可以加上 --auto-close
$ for i in {0..100..20}; do echo $i; sleep 1; done | \ zenity --progress --auto-close或是加上 --no-cancel 讓確定跟取消的按鈕都不見。
$ for i in {0..100..20}; do echo $i; sleep 1; done | \ zenity --progress --auto-close --no-cancel
再加上 --time-remaining 剩餘時間的估計。
$ for i in {0..100..20}; do echo $i; sleep 1; done | \ zenity --progress --auto-close --no-cancel --time-remaining
當然還可以使用其它元件都有的 --title 跟 --text 來客製對話框的訊息。
$ for i in {0..100..20}; do echo $i; sleep 1; done | \ zenity --progress --auto-close --no-cancel --time-remaining --title "新建築正在倒塌中" --text "貓在鋼琴上昏倒了"
另外就是 --text 有支援一些簡單的 HTML 標籤,所以可以有一些變化。
$ for i in {0..100..20}; do echo $i; sleep 1; done | \
zenity --progress --auto-close --no-cancel --time-remaining --title "新建築正在倒塌中" --text "<b>貓</b>在<u>鋼琴</u>上<i>昏倒</i>了\n謠言真可怕"
最後就是要小心其它程式所產生的標準輸出,像是 apt-get upgrade --yes 的輸出有時候會有數字開頭的訊息,這樣的訊息在使用 zenity --progress --auto-close 時都會導致對話框突然結束,任何超過 100 的數字都會結束程式。
沒有留言:
張貼留言