Use `LTerm.Widget` and `LTerm.read_line` together

I wonder how I can use LTerm.Widget and LTerm.read_line together.
I would like to have two boxes: the top scrollable box to show some running results and the bottom box to read my commands.

I checked the current lambda-term/examples but haven’t found a case.

In the examples, the entry of the main loop is either

  1. term vbox waiter
  2. loop term (LTerm_history.create []) state) (which contains let rl = new read_line ~term ~history:(LTerm_history.contents history) ~state in rl#run ...

Either and seem to control the term exclusively. I also don’t find a way to add widget/read_line to the term out of the run functions.

For curiosity, Lwt.pick [ term vbox waiter; rl_loop term history state () ] raises "LTerm.read_event: cannot read events from two threads at the same time". I can guess both are top-level components to hold the event loop.

It’s also OK if I can confirm they cannot be used together. LTerm.read_line would be enough for me.