int main(int argc, char *argv[]) { #ifdef DEBUG gtk_init(&argc, &argv); gtk_gl_init(&argc, &argv); #else gtk_init(NULL, NULL); gtk_gl_init(NULL, NULL); #endif setup_splash(); splash("Starting up..."); // Init logfile FILE* f = fopen("slade.log", "wt"); fclose(f); load_main_config(); init_console(); setup_icons(); log_message("Init textures...\n"); init_textures(); log_message("Loading colour configurations...\n"); load_colour_configs(); string ccfg = col_config; set_colour_config(ccfg); log_message("Setup editor window...\n"); setup_editor_window(); log_message("Setup wad manager window...\n"); splash_hide(); setup_main_window(); log_message("Init OK.\n"); open_main_window(); // Setup gl font //font_list = glGenLists(256); //PangoFontDescription *font_desc = pango_font_description_from_string("Monospace 10"); //gdk_gl_font_use_pango_font(font_desc, 0, 255, font_list); gtk_main(); save_main_config(); return 0; }
struct cmd_results *cmd_reload(int argc, char **argv) { struct cmd_results *error = NULL; if (config->reading) return cmd_results_new(CMD_FAILURE, "reload", "Can't be used in config file."); if ((error = checkarg(argc, "reload", EXPECTED_EQUAL_TO, 0))) { return error; } if (!load_main_config(config->current_config, true)) { return cmd_results_new(CMD_FAILURE, "reload", "Error(s) reloading config."); } load_swaybars(); arrange_windows(&root_container, -1, -1); return cmd_results_new(CMD_SUCCESS, NULL, NULL); }
int main(int argc, char *argv[]) { gtk_init(&argc, &argv); setup_splash(); splash("Starting up..."); //gtk_gl_init(&argc, &argv); // Init logfile FILE* f = fopen("slade.log", "wt"); fclose(f); load_main_config(); init_console(); setup_icons(); init_textures(); load_colour_configs(); string ccfg = col_config; set_colour_config(ccfg); setup_editor_window(); setup_main_window(); open_main_window(); // Setup gl font //font_list = glGenLists(256); //PangoFontDescription *font_desc = pango_font_description_from_string("Monospace 10"); //gdk_gl_font_use_pango_font(font_desc, 0, 255, font_list); splash_hide(); gtk_main(); save_main_config(); return 0; }
int main(int argc, char **argv) { static int verbose = 0, debug = 0, validate = 0, allow_unsupported_gpu = 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'}, {"unsupported-gpu", no_argument, NULL, 'u'}, {"my-next-gpu-wont-be-nvidia", no_argument, NULL, 'u'}, {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, "hCdD:vVc:", 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 'D': // extended debug options enable_debug_flag(optarg); break; case 'u': allow_unsupported_gpu = 1; break; case 'v': // version fprintf(stdout, "sway version " SWAY_VERSION "\n"); 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); } } // Since wayland requires XDG_RUNTIME_DIR to be set, abort with just the // clear error message (when not running as an IPC client). if (!getenv("XDG_RUNTIME_DIR") && optind == argc) { fprintf(stderr, "XDG_RUNTIME_DIR is not set in the environment. Aborting.\n"); exit(EXIT_FAILURE); } // As the 'callback' function for wlr_log is equivalent to that for // sway, we do not need to override it. if (debug) { sway_log_init(SWAY_DEBUG, sway_terminate); wlr_log_init(WLR_DEBUG, NULL); } else if (verbose || validate) { sway_log_init(SWAY_INFO, sway_terminate); wlr_log_init(WLR_INFO, NULL); } else { sway_log_init(SWAY_ERROR, sway_terminate); wlr_log_init(WLR_ERROR, NULL); } log_kernel(); log_distro(); log_env(); detect_proprietary(allow_unsupported_gpu); detect_raspi(); if (optind < argc) { // Behave as IPC client if (optind != 1) { sway_log(SWAY_ERROR, "Detected both options and positional arguments. If you " "are trying to use the IPC client, options are not " "supported. Otherwise, check the provided arguments for " "issues. See `man 1 sway` or `sway -h` for usage. If you " "are trying to generate a debug log, use " "`sway -d 2>sway.log`."); exit(EXIT_FAILURE); } if (!drop_permissions()) { exit(EXIT_FAILURE); } char *socket_path = getenv("SWAYSOCK"); if (!socket_path) { sway_log(SWAY_ERROR, "Unable to retrieve socket path"); exit(EXIT_FAILURE); } char *command = join_args(argv + optind, argc - optind); run_as_ipc_client(command, socket_path); free(command); return 0; } if (!server_privileged_prepare(&server)) { return 1; } if (!drop_permissions()) { server_fini(&server); exit(EXIT_FAILURE); } // handle SIGTERM signals signal(SIGTERM, sig_handler); // prevent ipc from crashing sway signal(SIGPIPE, SIG_IGN); sway_log(SWAY_INFO, "Starting sway version " SWAY_VERSION); root = root_create(); if (!server_init(&server)) { return 1; } if (validate) { bool valid = load_main_config(config_path, false, true); free(config_path); return valid ? 0 : 1; } ipc_init(&server); setenv("WAYLAND_DISPLAY", server.socket, true); if (!load_main_config(config_path, false, false)) { sway_terminate(EXIT_FAILURE); goto shutdown; } if (!server_start(&server)) { sway_terminate(EXIT_FAILURE); goto shutdown; } config->active = true; load_swaybars(); run_deferred_commands(); if (config->swaynag_config_errors.pid > 0) { swaynag_show(&config->swaynag_config_errors); } server_run(&server); shutdown: sway_log(SWAY_INFO, "Shutting down sway"); server_fini(&server); root_destroy(root); root = NULL; free(config_path); free_config(config); pango_cairo_font_map_set_default(NULL); return exit_value; }
int main(int argc, char **argv) { int ret, opt, load_main = 0, silent = 0, out_help = 0; char *myself = argv[0]; struct swcli_context ctx; while ((opt = getopt(argc, argv, "msh")) != -1) { switch (opt) { case 'm': load_main = 1; break; case 's': silent = 1; break; case 'h': default: out_help = 1; } } argc -= optind; argv += optind; do { if (out_help || load_main) break; if (argc >= 2 && argc <= 3) break; out_help = 1; } while(0); if (out_help) { fprintf(stderr, "Usage:\n" " %s -m \n" " Load main configuration from %s.\n" " %s [-s] <if_name> <tag_name> [<description>]\n" " Load configuration in %s/<tag_name> into interface\n" " <if_name> and optionally assign description <description>\n" " to the interface <if_name>.\n", myself, SW_CONFIG_FILE, myself, SW_TAGS_FILE); return 1; } CLI_CTX(&ctx)->node_filter = PRIV_FILTER(15); CLI_CTX(&ctx)->root = &config_main; CLI_CTX(&ctx)->out_open = cli_out_open; ctx.sock_fd = -1; ctx.cdp = NULL; if (switch_init() < 0) { perror("switch_init"); return -1; } ctx.sock_fd = socket(AF_INET, SOCK_DGRAM, 0); if (ctx.sock_fd == -1) { perror("socket"); return 1; } ret = load_main ? load_main_config(&ctx) : load_tag_config(&ctx, argc, argv, silent); close(ctx.sock_fd); return ret; }