package miaou-runner

  1. Overview
  2. Docs
Miaou runner with backend selection

Install

dune-project
 Dependency

Authors

Maintainers

Sources

v0.5.2.tar.gz
md5=60a3b9f181f24572a06a9492532bfdda
sha512=fcc35a275066be2900e6201782faf47503076fa4640f08cf78067835a6f447b74613009e55b2ac799adb7ca46f1bffa261fc5971753f2cc3c6bef327511c7ef6

doc/src/miaou-runner.tui/runner_tui.ml.html

Source file runner_tui.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
(*****************************************************************************)
(*                                                                           *)
(* SPDX-License-Identifier: MIT                                              *)
(* Copyright (c) 2025 Nomadic Labs <contact@nomadic-labs.com>                *)
(* Copyright (c) 2026 Mathias Bourgoin <mathias.bourgoin@atacama.tech>       *)
(*                                                                           *)
(*****************************************************************************)

let run ?(enable_mouse = true) ?(handle_sigint = true)
    ?(on_frame : (rows:int -> cols:int -> string -> unit) option) page =
  match Sys.getenv_opt "MIAOU_DRIVER" with
  | Some "headless" -> Headless_json_runner.run ?on_frame page
  | _ ->
      let term_backend =
        {
          Miaou_runner_common.Tui_driver_common.available =
            Miaou_driver_term.Lambda_term_driver.available;
          run = Miaou_driver_term.Lambda_term_driver.run;
        }
      in
      let sdl_backend =
        {
          Miaou_runner_common.Tui_driver_common.available = false;
          run = (fun _ -> `Quit);
        }
      in
      let matrix_config =
        let base = Miaou_driver_matrix.Matrix_config.load () in
        let config =
          if enable_mouse then base
          else Miaou_driver_matrix.Matrix_config.with_mouse_disabled base
        in
        Some {config with handle_sigint}
      in
      let matrix_backend =
        {
          Miaou_runner_common.Tui_driver_common.available =
            Miaou_driver_matrix.Matrix_driver.available;
          run = Miaou_driver_matrix.Matrix_driver.run ~config:matrix_config;
        }
      in
      let web_backend =
        {
          Miaou_runner_common.Tui_driver_common.available = false;
          run = (fun _ -> `Quit);
        }
      in
      Miaou_runner_common.Tui_driver_common.run
        ~term_backend
        ~sdl_backend
        ~matrix_backend
        ~web_backend
        page