
以前,在 KDE 中,這很簡單——我用步驟數調用 KDialog,作為回報我得到 DCOP 句柄,然後用該引用和步驟調用 dcop,進度對話框得到更新。
然而,現在 DCOP 已經過時了,而且自從我從 KDE 3.5.10 遷移到 XFCE 後,我認為最好將我的腳本從 KDialog+DCOP 轉換為 KDialog+DBUS,然後遷移到 XFCE 進度對話框。
那麼如何在 XFCE 中建置用於 Bash 的進度對話框呢?Bash 目的 = 我在 Bash 中執行一些計算,但進度以 GUI 方式顯示,就像桌面上漂亮的對話框一樣。
答案1
您可以使用對話公用事業。它可以同時工作內在和外在一個終端。
要在 X 伺服器上取得它,您可以使用它的對話框或者gdialog/zenity變體。請注意,XFCE 建議使用 zenity,因為它使用 GTK+。事實上,我認為 Kdialog 是 Xdialog 的 KDE 變體。
這是一個簡單的 Zenity 腳本,在 X 伺服器上運行,帶有是/否框:
DIALOG=zenity
$DIALOG --title " My first dialog" --clear \
--yesno "Hi, this is my first dialog" 10 30
這是一個簡單的教學有關可用的不同對話框的各種範例。而且還有一個很好的教程關於禪宗。
關於您的圖形進度對話框,有專門用於此目的的一個。這是文件的範例腳本:
#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Update System Logs" \
--text="Scanning mail logs..." \
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Update canceled."
fi