From d802bf6324d89eaff8c9540dda2682b0d1331abf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sun, 12 Jan 2014 20:08:38 +0200 Subject: [PATCH 1/4] Make the login_shell option behave as all others Cheers cippp! --- src/bin/main.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/bin/main.c b/src/bin/main.c index 72de4c4d..2ec099bf 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -2924,9 +2924,13 @@ elm_main(int argc, char **argv) size_h = 24; } } - - // for now if not set - dont do login shell - later from config - if (login_shell == 0xff) login_shell = EINA_FALSE; + + if (login_shell != 0xff) + { + config->login_shell = login_shell; + config->temporary = EINA_TRUE; + } + login_shell = config->login_shell; remote: if ((!single) && (config->multi_instance)) From 2e064a2fe248bc67f0d0a794b13aac0be9072641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sat, 11 Jan 2014 16:21:59 +0200 Subject: [PATCH 2/4] Add configuration for login_shell --- src/bin/config.c | 29 +++++++++++++++++------------ src/bin/config.h | 1 + 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/bin/config.c b/src/bin/config.c index bd936880..ea4fddc3 100644 --- a/src/bin/config.c +++ b/src/bin/config.c @@ -26,7 +26,7 @@ config_init(void) elm_need_efreet(); efreet_init(); - + eet_eina_stream_data_descriptor_class_set (&eddc, sizeof(eddc), "Config", sizeof(Config)); edd_base = eet_data_descriptor_stream_new(&eddc); @@ -43,7 +43,7 @@ config_init(void) (edd_color, Config_Color, "b", b, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC (edd_color, Config_Color, "a", a, EET_T_UCHAR); - + EET_DATA_DESCRIPTOR_ADD_BASIC (edd_base, Config, "version", version, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC @@ -110,6 +110,8 @@ config_init(void) (edd_base, Config, "cg_height", cg_height, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC (edd_base, Config, "drag_links", drag_links, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_base, Config, "login_shell", login_shell, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC (edd_base, Config, "application_server", application_server, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC @@ -158,7 +160,7 @@ config_save(Config *config, const char *key) config->font.orig_name = NULL; if (config->font.name) config->font.orig_name = eina_stringshare_add(config->font.name); config->font.orig_bitmap = config->font.bitmap; - + cfgdir = _config_home_get(); snprintf(buf, sizeof(buf), "%s/terminology/config/standard", cfgdir); ecore_file_mkpath(buf); @@ -208,6 +210,7 @@ config_sync(const Config *config_src, Config *config) config->erase_is_del = config_src->erase_is_del; config->temporary = config_src->temporary; config->custom_geometry = config_src->custom_geometry; + config->login_shell = config_src->login_shell; config->cg_width = config_src->cg_width; config->cg_height = config_src->cg_height; config->colors_use = config_src->colors_use; @@ -422,18 +425,18 @@ config_load(const char *key) 0x1367, 0xa60f, 0x2cfa, - + '`', 0 }; char *s; int slen = 0; - + config = calloc(1, sizeof(Config)); if (config) { int i, j; - + config->version = CONF_VER; config->font.bitmap = EINA_TRUE; config->font.name = eina_stringshare_add("nexus.pcf"); @@ -471,6 +474,7 @@ config_load(const char *key) config->xterm_256color = EINA_FALSE; config->erase_is_del = EINA_FALSE; config->custom_geometry = EINA_FALSE; + config->login_shell = EINA_FALSE; config->cg_width = 80; config->cg_height = 24; config->colors_use = EINA_FALSE; @@ -479,7 +483,7 @@ config_load(const char *key) for (i = 0; i < 12; i++) { unsigned char rr = 0, gg = 0, bb = 0, aa = 0; - + colors_standard_get(j, i, &rr, &gg, &bb, &aa); config->colors[(j * 12) + i].r = rr; config->colors[(j * 12) + i].g = gg; @@ -500,17 +504,17 @@ Config * config_fork(Config *config) { Config *config2; - + config2 = calloc(1, sizeof(Config)); if (!config2) return NULL; -#define CPY(fld) config2->fld = config->fld; +#define CPY(fld) config2->fld = config->fld; #define SCPY(fld) if (config->fld) config2->fld = eina_stringshare_add(config->fld) CPY(version); - SCPY(font.name); + SCPY(font.name); CPY(font.size); CPY(font.bitmap); - SCPY(helper.email); + SCPY(helper.email); SCPY(helper.url.general); SCPY(helper.url.video); SCPY(helper.url.image); @@ -538,11 +542,12 @@ config_fork(Config *config) CPY(xterm_256color); CPY(erase_is_del); CPY(custom_geometry); + CPY(login_shell); CPY(cg_width); CPY(cg_height); CPY(colors_use); memcpy(config2->colors, config->colors, sizeof(config->colors)); - + CPY(temporary); SCPY(config_key); return config2; diff --git a/src/bin/config.h b/src/bin/config.h index ecf6cf57..089af163 100644 --- a/src/bin/config.h +++ b/src/bin/config.h @@ -52,6 +52,7 @@ struct _Config Eina_Bool erase_is_del; Eina_Bool custom_geometry; Eina_Bool drag_links; + Eina_Bool login_shell; int cg_width; int cg_height; Eina_Bool colors_use; From 7c4a98927966d8abaef3fdef407f065bac7721b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sat, 11 Jan 2014 16:22:18 +0200 Subject: [PATCH 3/4] Settings option for login_shell --- src/bin/options_behavior.c | 39 ++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/src/bin/options_behavior.c b/src/bin/options_behavior.c index 3cd06b34..1e671fad 100644 --- a/src/bin/options_behavior.c +++ b/src/bin/options_behavior.c @@ -252,6 +252,15 @@ _cb_op_behavior_cg_height(void *data, Evas_Object *obj, void *event EINA_UNUSED) } } +static void +_cb_op_behavior_login_shell_chg(void *data, Evas_Object *obj, void *event EINA_UNUSED) +{ + Evas_Object *term = data; + Config *config = termio_config_get(term); + config->login_shell = elm_check_state_get(obj); + config_save(config, NULL); +} + void options_behavior(Evas_Object *opbox, Evas_Object *term) { @@ -268,20 +277,20 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) elm_object_text_set(o, "Behavior"); elm_box_pack_end(opbox, o); evas_object_show(o); - + sc = o = elm_scroller_add(opbox); elm_scroller_content_min_limit(sc, EINA_TRUE, EINA_FALSE); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_object_content_set(fr, o); evas_object_show(o); - + bx = o = elm_box_add(opbox); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.0); elm_object_content_set(sc, o); evas_object_show(o); - + o = elm_check_add(bx); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5); @@ -321,7 +330,7 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) evas_object_show(o); evas_object_smart_callback_add(o, "changed", _cb_op_behavior_cursor_blink_chg, term); - + o = elm_check_add(bx); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5); @@ -331,7 +340,7 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) evas_object_show(o); evas_object_smart_callback_add(o, "changed", _cb_op_behavior_visual_bell_chg, term); - + o = elm_check_add(bx); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5); @@ -341,7 +350,7 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) evas_object_show(o); evas_object_smart_callback_add(o, "changed", _cb_op_behavior_urg_bell_chg, term); - + o = elm_check_add(bx); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5); @@ -396,6 +405,16 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) evas_object_smart_callback_add(o, "changed", _cb_op_behavior_drag_links_chg, term); + o = elm_check_add(bx); + evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5); + elm_object_text_set(o, "Start as login shell"); + elm_check_state_set(o, config->login_shell); + elm_box_pack_end(bx, o); + evas_object_show(o); + evas_object_smart_callback_add(o, "changed", + _cb_op_behavior_login_shell_chg, term); + o = elm_check_add(bx); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5); @@ -450,7 +469,7 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) elm_separator_horizontal_set(o, EINA_TRUE); elm_box_pack_end(bx, o); evas_object_show(o); - + o = elm_label_add(bx); evas_object_size_hint_weight_set(o, 0.0, 0.0); evas_object_size_hint_align_set(o, 0.0, 0.5); @@ -481,14 +500,14 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) elm_separator_horizontal_set(o, EINA_TRUE); elm_box_pack_end(bx, o); evas_object_show(o); - + o = elm_label_add(bx); evas_object_size_hint_weight_set(o, 0.0, 0.0); evas_object_size_hint_align_set(o, 0.0, 0.5); elm_object_text_set(o, "Scrollback:"); elm_box_pack_end(bx, o); evas_object_show(o); - + o = elm_slider_add(bx); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.0); @@ -521,7 +540,7 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) evas_object_show(o); evas_object_smart_callback_add(o, "delay,changed", _cb_op_behavior_tab_zoom_slider_chg, term); - + evas_object_size_hint_weight_set(opbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(opbox, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(o); From 044a7f98b99611aa55baeaf3b9111e5b809e0a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sun, 12 Jan 2014 20:00:38 +0200 Subject: [PATCH 4/4] Use config->login_shell Thanks cippp for finding this! --- src/bin/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/main.c b/src/bin/main.c index 2ec099bf..5b166ae6 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -293,7 +293,7 @@ _split_split(Split *sp, Eina_Bool horizontal) config = config_fork(sp->term->config); if (termio_cwd_get(sp->term->term, buf, sizeof(buf))) wdir = buf; sp2->term = main_term_new(sp->wn, config, - NULL, EINA_FALSE, wdir, + NULL, config->login_shell, wdir, 80, 24, EINA_FALSE); sp2->terms = eina_list_append(sp2->terms, sp2->term); _term_resize_track_start(sp2); @@ -367,7 +367,7 @@ main_new_with_dir(Evas_Object *win, Evas_Object *term, const char *wdir) config = config_fork(sp->term->config); termio_size_get(sp->term->term, &w, &h); sp->term = main_term_new(sp->wn, config, - NULL, EINA_FALSE, wdir, + NULL, config->login_shell, wdir, w, h, EINA_FALSE); sp->terms = eina_list_append(sp->terms, sp->term); _term_resize_track_start(sp);