以前,在 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