int main(int argc, char *argv[]) { display = wl_display_create(); if (!display) return EXIT_FAILURE; if (wl_display_add_socket(display, NULL) != 0) return EXIT_FAILURE; if (!swc_initialize(display, NULL, &manager)) return EXIT_FAILURE; swc_add_binding(SWC_BINDING_KEY, SWC_MOD_LOGO, XKB_KEY_Return, &spawn, terminal_command); swc_add_binding(SWC_BINDING_KEY, SWC_MOD_LOGO, XKB_KEY_r, &spawn, dmenu_command); swc_add_binding(SWC_BINDING_KEY, SWC_MOD_LOGO, XKB_KEY_q, &quit, NULL); event_loop = wl_display_get_event_loop(display); wl_display_run(display); wl_display_destroy(display); return EXIT_SUCCESS; }
WLC_API void wlc_run(void) { if (!wlc.display) return; wlc.compositor.state.ready = false; bool emit_ready = true; const char *xwayland = getenv("WLC_XWAYLAND"); if (!xwayland || !chck_cstreq(xwayland, "0")) emit_ready = !wlc_xwayland_init(); // Emit ready immediately when no Xwayland if (emit_ready) { WLC_INTERFACE_EMIT(compositor.ready); wlc.compositor.state.ready = true; } wlc_set_active(true); if (wlc_compositor_is_good(&wlc.compositor)) wl_display_run(wlc.display); wlc_cleanup(); }
void* noia_wayland_engine_run(void* data) { noia_environment_on_enter_new_thread(0, "noia:wayland"); LOG_INFO1("Threads: Wayland thread started"); NoiaWaylandEngine* engine = (NoiaWaylandEngine*) data; wl_display_run(engine->display); return NULL; }
WLC_API void wlc_run(void) { if (!wlc.display) return; // Called when no xwayland is requested if (wlc.set_ready_on_run) { WLC_INTERFACE_EMIT(compositor.ready); wlc.set_ready_on_run = false; } wl_display_run(wlc.display); wlc_cleanup(); }
int main(int argc, char **argv) { if (mlockall(MCL_CURRENT | MCL_FUTURE) != 0) { fmt::print("Could not lock memory pages.\n"); } else { fmt::print(stderr, "Succesfully locked memory pages.\n"); } sched_param schedParam; memset(&schedParam, 0, sizeof(schedParam)); schedParam.sched_priority = 10; if (sched_setscheduler(0, SCHED_FIFO | SCHED_RESET_ON_FORK, &schedParam) != -1) { fmt::print("Succesfully changed the process scheduler to SCHED_FIFO.\n"); } else { fmt::print(stderr, "Could not change the process scheduler: {}.\n", strerror(errno)); } setenv("QT_MESSAGE_PATTERN", "[%{if-debug}D%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif} %{appname}" " - %{file}:%{line}] == %{message}", 0); QCoreApplication app(argc, argv); app.setApplicationName(QStringLiteral("Orbital")); app.setApplicationVersion(QStringLiteral("0.1")); QCommandLineParser parser; parser.setApplicationDescription(QStringLiteral("Orbital compositor")); parser.addHelpOption(); parser.addVersionOption(); QCommandLineOption socketOption({ QStringLiteral("S"), QStringLiteral("socket") }, QStringLiteral("Socket name")); parser.addOption(socketOption); QCommandLineOption backendOption({ QStringLiteral("B"), QStringLiteral("backend") }, QStringLiteral("Backend plugin"), QStringLiteral("name")); parser.addOption(backendOption); parser.process(app); Orbital::StringView backendKey; QByteArray opt; if (parser.isSet(backendOption)) { opt = parser.value(backendOption).toUtf8(); backendKey = opt; } else if (getenv("WAYLAND_DISPLAY")) { backendKey = "wayland-backend"; } else if (getenv("DISPLAY")) { backendKey = "x11-backend"; } else { backendKey = "drm-backend"; } Orbital::BackendFactory::searchPlugins(); Orbital::Backend *backend = Orbital::BackendFactory::createBackend(backendKey); if (!backend) { return 1; } Orbital::Compositor compositor(backend); if (!compositor.init("")) { return 1; } wl_display_run(compositor.display()); return 0; }