¿Cómo obtener la entrada del usuario en el diálogo --tailboxbg --gauge?

¿Cómo obtener la entrada del usuario en el diálogo --tailboxbg --gauge?

Tengo un script que ejecuto en una máquina macOS, donde deseo mostrar una barra de calibre y seguir la salida del script al mismo tiempo.

Actualmente uso este comando y funciona bien:

#!/bin/bash

TERMINAL_COLS=$(tput cols)
TERMINAL_ROWS=$(tput lines)

(while true ; do
     df /Volumes/Backup/ | tail -1 | awk '{print int($3/($3+$4)*100)}'
     sleep 1
 done | dialog --no-shadow --begin 7 0 \
               --tailboxbg /tmp/backup.log $(( $TERMINAL_ROWS - 7 )) $TERMINAL_COLS \
               --and-widget --begin 0 0 \
               --gauge 'Backup volume usage' 7 $TERMINAL_COLS) &

exec >> /tmp/backup.log
exec 2>&1

...rest of script...

Esto se ejecuta dialogcon un tailboxbgwidget, que sigue un archivo de registro. Y muestra la salida del dfbucle en un gaugewidget.

Luego, STDOUT y STDERR del script se redirigen al archivo de registro.

Nuevamente, esto funciona perfectamente: el script se ejecuta como de costumbre, su salida se muestra en el tailboxbgwidget y gaugemuestra la capacidad utilizada del volumen emitida por df.

El único problema es que dialogahora ya no tiene acceso al STDIN real (es decir, pulsaciones de teclas/terminal). Esto significa que no puedo usar las teclas del cursor para desplazarme por el tailboxbgwidget ni interactuar dialogde ninguna otra manera.

Al leer la manpágina, no veo gaugeninguna otra manera de enviar los valores porcentuales al widget. Específicamente, dice para la --input-fdopción:

   --input-fd fd
          Read keyboard input from the given file descriptor.  Most dialog
          scripts read from the standard input, but the gauge widget reads
          a pipe (which is always standard input).  [...]

Otra idea sería asignar un alias al STDIN real y dárselo a tailboxbgvia --input-fd. Sin embargo, lo siguiente no funcionó (nada cambió en comparación con el comportamiento anterior):

...

exec 5<&0

(while true ; do
     df /Volumes/Backup/ | tail -1 | awk '{print int($3/($3+$4)*100)}'
     sleep 1
 done | dialog --input-fd 5 --no-shadow --begin 7 0 --tailboxbg /tmp/backup.log $(( $TERMINAL_ROWS - 7 )) $TERMINAL_COLS --and-widget --begin 0 0 --gauge 'Backup volume usage' 7 $TERMINAL_COLS) &

...

Lo óptimo sería si se --gaugele permitiera especificar un archivo de entrada en lugar de leer siempre STDIN como se especifica en la manpágina, pero esa no es la forma en que funciona.

Entonces... ¿hay alguna manera de reenviar el STDIN "real" (es decir, la entrada del usuario) al tailboxbgwidget, pero aun así canalizar la salida del fdbucle al gaugewidget al mismo tiempo?

información relacionada