#include #include #include #include #include Result handle_ipc_client_event(os::LocalClient&, u8) { todo(); } Result create_window(os::LocalClient& client, ui::Rect rect, StringView name, ui::Color color) { ui::CreateWindowRequest request; request.rect = rect; SET_IPC_STRING(request.name, name.chars()); request.color = color; auto response = TRY(os::IPC::send_sync(client, request)); return response.window; } Result luna_main(int argc, char** argv) { StringView socket_path = "/tmp/wind.sock"; os::ArgumentParser parser; parser.add_description("A graphical user interface client."_sv); parser.add_system_program_info("gclient"_sv); parser.add_value_argument(socket_path, 's', "socket"_sv, "the path for the local IPC socket"_sv); parser.parse(argc, argv); auto client = TRY(os::LocalClient::connect(socket_path, false)); int id = TRY(create_window(*client, ui::Rect { 200, 200, 400, 300 }, "My Window", ui::CYAN)); os::println("Created new window with id %d!", id); sleep(3); id = TRY(create_window(*client, ui::Rect { 100, 100, 200, 150 }, "Super Long Name that is Way Too Long ", ui::BLUE)); os::println("Created new window with id %d!", id); sleep(6); return 0; }