···20202121(* Main command *)
2222let () =
2323+ Random.self_init ();
2324 let info = Cmd.info "sortal"
2425 ~version:"0.1.0"
2526 ~doc:"Contact metadata management"
···3233 ]
3334 in
34353535- let graphics_term = Kgp_cmdliner.graphics_term in
3636+ let graphics_term = Kgp_cli.graphics_term in
36373738 let list_cmd_term = Term.(const Sortal.Cmd.list_cmd $ graphics_term) in
3839 let list_cmd = run ~info:Sortal.Cmd.list_info list_cmd_term in
+2-17
lib/sortal_cmd.ml
···66let use_graphics mode =
77 Kgp.Terminal.supports_graphics mode
8899-(* Generate image IDs suitable for unicode placeholders.
1010- The ID must have non-zero bytes in positions for:
1111- - High byte (bits 24-31) - encoded as third diacritic
1212- - Middle bytes (bits 8-23) - encoded in foreground RGB color
1313- See kitty icat transmit.go for reference. *)
1414-let next_unicode_image_id () =
1515- (* Use Random to generate IDs with non-zero bytes in required positions *)
1616- let rec gen () =
1717- let id = Random.int32 Int32.max_int |> Int32.to_int in
1818- (* Ensure high byte and middle bytes are non-zero *)
1919- if id land 0xFF000000 = 0 || id land 0x00FFFF00 = 0 then gen ()
2020- else id
2121- in
2222- gen ()
2323-249let display_png_thumbnail path =
2525- let image_id = next_unicode_image_id () in
1010+ let image_id = Kgp.Unicode_placeholder.next_image_id () in
2611 let png_data = Eio.Path.load path in
2712 let rows = 4 in
2813 let cols = 8 in
···53385439(* 1-row thumbnail for listings *)
5540let display_small_thumbnail path =
5656- let image_id = next_unicode_image_id () in
4141+ let image_id = Kgp.Unicode_placeholder.next_image_id () in
5742 let png_data = Eio.Path.load path in
5843 let rows = 1 in
5944 let cols = 2 in