int main(int argc, char *argv[]) { (void)argc, (void)argv; signals_setup_debug(); // XXX: Potentially dangerous under suid handle_arguments(argc, argv); log_open(); if (!wlc_init()) return EXIT_FAILURE; signals_setup(); if (!setup_plugins()) return EXIT_FAILURE; plog(0, PLOG_INFO, "-- Orbment started --"); wlc_run(); plog(0, PLOG_INFO, "-- Orbment is gone, bye bye! --"); log_close(); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { wlc_log_set_handler(cb_log); static struct wlc_interface interface = { .view = { .created = view_created, .focus = view_focus, }, }; if (!wlc_init(&interface, argc, argv)) return EXIT_FAILURE; wlc_run(); return EXIT_SUCCESS; }
static int compositor_main(void) { wlc_set_view_move_to_output_cb(view_move_to_output); wlc_set_view_request_state_cb(view_request_state); wlc_set_compositor_ready_cb(compositor_ready); // This causes nouveau to hang at quit. // Comment out until headless backend is added. // setenv("WLC_OUTPUTS", "2", true); view_moved_to_output = true; compositor_test_create(&compositor, "fullscreen"); wlc_run(); assert(fullscreen_state_requested); assert(view_moved_to_output); return compositor_test_end(&compositor); }
int main(int argc, char **argv) { init_log(L_DEBUG); // TODO: Control this with command line arg init_layout(); /* Signal handling */ signal(SIGCHLD, sigchld_handle); if (!load_config()) { sway_log(L_ERROR, "Errors loading config!"); } setenv("WLC_DIM", "0", 0); if (!wlc_init(&interface, argc, argv)) { return 1; } setenv("DISPLAY", ":1", 1); wlc_run(); return 0; }
int main(int argc, char **argv) { static int verbose = 0, debug = 0, validate = 0; static struct option long_options[] = { {"config", required_argument, NULL, 'c'}, {"validate", no_argument, &validate, 1}, {"debug", no_argument, &debug, 1}, {"version", no_argument, NULL, 'v'}, {"verbose", no_argument, &verbose, 1}, {"get-socketpath", no_argument, NULL, 'p'}, {0, 0, 0, 0} }; /* Signal handling */ signal(SIGCHLD, sigchld_handle); setenv("WLC_DIM", "0", 0); wlc_log_set_handler(wlc_log_handler); /* Changing code earlier than this point requires detailed review */ if (!wlc_init(&interface, argc, argv)) { return 1; } char *config_path = NULL; int c; while (1) { int option_index = 0; c = getopt_long(argc, argv, "CdvVpc:", long_options, &option_index); if (c == -1) { break; } switch (c) { case 0: // Flag break; case 'c': // config config_path = strdup(optarg); break; case 'C': // validate validate = 1; break; case 'd': // debug debug = 1; break; case 'v': // version #if defined SWAY_GIT_VERSION && defined SWAY_GIT_BRANCH && defined SWAY_VERSION_DATE fprintf(stdout, "sway version %s (%s, branch \"%s\")\n", SWAY_GIT_VERSION, SWAY_VERSION_DATE, SWAY_GIT_BRANCH); #else fprintf(stdout, "version not detected\n"); #endif exit(0); break; case 'V': // verbose verbose = 1; break; case 'p': // --get-socketpath // TODO break; } } if (debug) { init_log(L_DEBUG); } else if (verbose || validate) { init_log(L_INFO); } else { init_log(L_ERROR); } if (validate) { bool valid = load_config(config_path); return valid ? 0 : 1; } init_layout(); if (!load_config(config_path)) { sway_log(L_ERROR, "Error(s) loading config!"); } if (config_path) { free(config_path); } ipc_init(); if (!terminate_request) { wlc_run(); } ipc_terminate(); return 0; }
int main(int argc, char **argv) { static int verbose = 0, debug = 0, validate = 0; static struct option long_options[] = { {"help", no_argument, NULL, 'h'}, {"config", required_argument, NULL, 'c'}, {"validate", no_argument, NULL, 'C'}, {"debug", no_argument, NULL, 'd'}, {"version", no_argument, NULL, 'v'}, {"verbose", no_argument, NULL, 'V'}, {"get-socketpath", no_argument, NULL, 'p'}, {0, 0, 0, 0} }; char *config_path = NULL; const char* usage = "Usage: sway [options] [command]\n" "\n" " -h, --help Show help message and quit.\n" " -c, --config <config> Specify a config file.\n" " -C, --validate Check the validity of the config file, then exit.\n" " -d, --debug Enables full logging, including debug information.\n" " -v, --version Show the version number and quit.\n" " -V, --verbose Enables more verbose logging.\n" " --get-socketpath Gets the IPC socket path and prints it, then exits.\n" "\n"; int c; while (1) { int option_index = 0; c = getopt_long(argc, argv, "hCdvVpc:", long_options, &option_index); if (c == -1) { break; } switch (c) { case 'h': // help fprintf(stdout, "%s", usage); exit(EXIT_SUCCESS); break; case 'c': // config config_path = strdup(optarg); break; case 'C': // validate validate = 1; break; case 'd': // debug debug = 1; break; case 'v': // version #if defined SWAY_GIT_VERSION && defined SWAY_GIT_BRANCH && defined SWAY_VERSION_DATE fprintf(stdout, "sway version %s (%s, branch \"%s\")\n", SWAY_GIT_VERSION, SWAY_VERSION_DATE, SWAY_GIT_BRANCH); #else fprintf(stdout, "version not detected\n"); #endif exit(EXIT_SUCCESS); break; case 'V': // verbose verbose = 1; break; case 'p': ; // --get-socketpath if (getenv("SWAYSOCK")) { fprintf(stdout, "%s\n", getenv("SWAYSOCK")); exit(EXIT_SUCCESS); } else { fprintf(stderr, "sway socket not detected.\n"); exit(EXIT_FAILURE); } break; default: fprintf(stderr, "%s", usage); exit(EXIT_FAILURE); } } if (optind < argc) { // Behave as IPC client if (getuid() != geteuid() || getgid() != getegid()) { if (setgid(getgid()) != 0 || setuid(getuid()) != 0) { sway_abort("Unable to drop root"); } } char *socket_path = getenv("SWAYSOCK"); if (!socket_path) { sway_abort("Unable to retrieve socket path"); } char *command = join_args(argv + optind, argc - optind); run_as_ipc_client(command, socket_path); return 0; } // we need to setup logging before wlc_init in case it fails. if (debug) { init_log(L_DEBUG); } else if (verbose || validate) { init_log(L_INFO); } else { init_log(L_ERROR); } setenv("WLC_DIM", "0", 0); wlc_log_set_handler(wlc_log_handler); detect_proprietary(); input_devices = create_list(); /* Changing code earlier than this point requires detailed review */ /* (That code runs as root on systems without logind, and wlc_init drops to * another user.) */ if (!wlc_init(&interface, argc, argv)) { return 1; } register_extensions(); // handle SIGTERM signals signal(SIGTERM, sig_handler); // prevent ipc from crashing sway signal(SIGPIPE, SIG_IGN); #if defined SWAY_GIT_VERSION && defined SWAY_GIT_BRANCH && defined SWAY_VERSION_DATE sway_log(L_INFO, "Starting sway version %s (%s, branch \"%s\")\n", SWAY_GIT_VERSION, SWAY_VERSION_DATE, SWAY_GIT_BRANCH); #endif init_layout(); if (validate) { bool valid = load_config(config_path); return valid ? 0 : 1; } if (!load_config(config_path)) { sway_log(L_ERROR, "Error(s) loading config!"); } if (config_path) { free(config_path); } ipc_init(); if (!terminate_request) { wlc_run(); } if (input_devices) { free(input_devices); } ipc_terminate(); return 0; }