Zenity
如何應用管道 zenity/yad 進度條?
我需要在 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}>&1
andtee /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
就是玩的好東西。