Zenity

如何應用管道 zenity/yad 進度條?

  • July 14, 2017

我需要在 Arch Linux/Manjaro 中顯示一個帶有 zenity 或 yad 的進度條和 pacaur/pacman 或 yaourt。

問題是我無法用pacaur或其他方法擷取實際過程,只能用pkcon 擷取,但 packagekit 在 Arch Linux 上失敗了。這是我與 pacaur 的實際路線,但不起作用。

pacaur -S clementine >> /tmp/pacaur-url-tmp |
 tail --lines=1 /tmp/pacaur-url-tmp |
 yad --progress \
   --title="MyProgram - Installing ffdiaporama" \
   --width=300 \
   --height=200 \
   --text="A test my friend" \
   --pulsate \
   --auto-close \
   --button="Cancel (Not recommended):0"

其他問題,它曾經詢問何時需要密碼 root,我也無法使用 zenity/yad 擷取它…

這是packagekit 的結果,是的,它是一個簡單的 gui 安裝程序,適用於所有發行版,但 Arch Linux 不適用於 packagekit。

您可以使用 pacaour Here查看輸出。

這應該可以,我已經在您發布的輸出上對其進行了測試。請注意,我已經使用了,zenity因為yad它不在 Debian 儲存庫中。這也是bash唯一的。

(
 exec {fd}>&1
 stdbuf -oL pacaur -S clementine |
   stdbuf -oL tee /dev/fd/$fd |
   stdbuf -oL sed -n '/\.\.\.$/ s/^/# /p' |
   zenity --progress --title="pacaur progress" --pulsate \
     --width=450 --auto-close
)

可能出錯的一件事是可能pacaur會將進度數據列印到stderr而不是stdout,在這種情況下,第二行可能需要:

stdbuf -eL -oL pacaur -S clementine 2>&1 |

我添加了exec {fd}>&1andtee /dev/fd/$fd行,以便輸出也將列印到終端。沒有這個,這個腳本將只是:

 stdbuf -oL pacaur -S clementine |
   stdbuf -oL sed -n '/\.\.\.$/ s/^/# /p' |
   zenity --progress --title="pacaur progress" --pulsate \
     --width=450 --auto-close

順便說一句,在我看來,終端是查找安裝進度的最佳位置,但既然你問了,那zenity就是玩的好東西。

引用自:https://unix.stackexchange.com/questions/120252