Setup basic xcb bindings and loop

This commit is contained in:
2026-07-26 05:50:48 +01:00
parent 86a60110c2
commit 75e3b334bf
3 changed files with 124 additions and 16 deletions
+18 -16
View File
@@ -1,20 +1,22 @@
open Ctypes
open Foreign
type mrb = unit ptr
let mrb : mrb typ = ptr void
let mrb_open = foreign "mrb_open" (void @-> returning mrb)
let mrb_close = foreign "mrb_close" (mrb @-> returning void)
let mrb_load_string =
foreign "mrb_load_string" (mrb @-> string @-> returning void)
let spawn cmd =
match Unix.fork () with 0 -> Unix.execvp cmd.(0) cmd | _pid -> ()
let () =
let mrb_instance = mrb_open () in
let conn = Xcb.connect () in
print_endline "Executing Ruby code from OCaml:";
let _ = mrb_load_string mrb_instance "puts 'hello1234'.match?(/hello\\d+/)" in
print_endline "connected";
mrb_close mrb_instance;
print_endline "mruby instance closed successfully."
let _ = Xcb.window_attribute_setup conn in
Xcb.flush conn;
spawn [| "kitty" |];
while true do
Xcb.flush conn;
Unix.sleepf 0.01
done;
Xcb.disconnect conn;
print_endline "done"