-module(ephraim_gui). -compile([debug_info, export_all]). -spec init() -> ok. init() -> {jid,JID} = ephraim_config:get(jid), Port = open_port({spawn_executable, "ephraim-gtk"}, [binary, nouse_stdio, {packet, 4}]), ephraim ! {register_ui, self()}, loop(Port), ephraim ! {unregister_ui, self()}. -spec loop(port()) -> ok. loop(Port) -> receive stop -> ok; {Port, {data, Data}} -> Msg = binary_to_term(Data), case Msg of stop -> ok; _ -> ephraim ! Msg, loop(Port) end; Msg -> Port ! {self(), {command, term_to_binary(Msg)}}, loop(Port) end.