diff options
-rw-r--r-- | svte.c | 25 |
1 files changed, 19 insertions, 6 deletions
@@ -82,11 +82,16 @@ static inline term* get_nth_term(window *w, guint page); static GQuark term_data_id = 0; static Settings *config; + static gchar *config_file = NULL; +static gchar *start_program = NULL; static gboolean show_version = FALSE; + static GOptionEntry options[] = { { "config", 'c', 0, G_OPTION_ARG_FILENAME, &config_file, "Path to configuration file to use.", NULL }, + { "execute", 'e', 0, G_OPTION_ARG_STRING, &start_program, + "execute this command.", NULL }, { "version", 0, 0, G_OPTION_ARG_NONE, &show_version, "Print version information and exit", NULL }, { NULL } @@ -347,14 +352,21 @@ static void tab_focus(GtkNotebook *notebook, GtkNotebookPage *page, static void tab_new(struct window *w) { term *t; int tmp; - - char **args = 0; - const gchar *shell = g_getenv("SHELL"); - if (!shell) { - shell = "sh"; + + // if the user declares a program to execute then just do that but otherwise + // but otherwise use our default shell. + if(start_program == NULL) { + start_program = g_getenv("SHELL"); + if (!start_program) { + start_program = "sh"; + } } - g_shell_parse_argv(shell, 0, &args, 0); + + // Execute the program but then reset start_program to null so that the start + // progam will only execute one time. + g_shell_parse_argv(start_program, 0, &args, 0); + start_program = NULL; t = g_new0(term, 1); t->label = gtk_label_new(""); @@ -578,6 +590,7 @@ int main(int argc, char* argv[]) { if (config_file == NULL) { config_file = DEFAULT_CONFIG_FILE; } + parse_config_file(config_file); new_window(); |