XFCE で Bash の進行状況ダイアログを作成するにはどうすればよいですか?

XFCE で Bash の進行状況ダイアログを作成するにはどうすればよいですか?

以前の KDE では、これは簡単でした。ステップ数を指定して KDialog を呼び出し、DCOP ハンドルを返して、その参照とステップを指定して dcop を呼び出すと、進行状況ダイアログが更新されました。

しかし、現在 DCOP は廃止されており、KDE ​​3.5.10 から XFCE に移行したので、スクリプトを KDialog+DCOP から KDialog+DBUS に変換する代わりに、XF​​CE 進行状況ダイアログに移行するのが良い考えだと思いました。

では、XFCE で Bash 用の進行状況ダイアログを構築するにはどうすればよいでしょうか?Bash の目的 = Bash でいくつかの計算を実行しますが、進行状況はデスクトップ上のわかりやすいダイアログとして GUI 形式で表示されます。

答え1

使用できますダイアログユーティリティ。内外端末。

Xサーバーで入手するには、xダイアログまたはgdialog/zenityバリアントです。GTK+ を使用するため、XFCE には zenity が推奨されることに注意してください。実際、Kdialog は Xdialog の KDE バリアントだと思います。

以下は、X サーバー上で yes/no ボックスを使用して実行される簡単な Zenity スクリプトです。

DIALOG=zenity
$DIALOG --title " My first dialog" --clear \
--yesno "Hi, this is my first dialog" 10 30

簡単なチュートリアルさまざまなダイアログの例も用意されています。また、素晴らしいチュートリアルzenityについて。

グラフィカルな進行状況ダイアログについては、この目的のために専用に作られたものドキュメントのサンプル スクリプトは次のとおりです。

#!/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

関連情報