Setup basic xcb bindings and loop
This commit is contained in:
+18
-16
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user