forked from enlightenment/terminology
Merge remote-tracking branch 'mjtorn/login_shell'
Conflicts: src/bin/config.c
This commit is contained in:
commit
2706eef099
|
@ -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
|
||||
|
@ -112,6 +112,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
|
||||
|
@ -160,7 +162,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);
|
||||
|
@ -221,6 +223,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;
|
||||
|
@ -465,18 +468,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");
|
||||
|
@ -515,6 +518,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;
|
||||
|
@ -523,7 +527,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;
|
||||
|
@ -547,7 +551,7 @@ config_fork(Config *config)
|
|||
|
||||
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)
|
||||
#define SLSTCPY(fld) \
|
||||
do { Eina_List *__l; const char *__s; \
|
||||
|
@ -556,10 +560,10 @@ config_fork(Config *config)
|
|||
(config2->fld, eina_stringshare_add(__s)); } while (0)
|
||||
|
||||
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);
|
||||
|
@ -588,11 +592,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;
|
||||
|
|
|
@ -53,6 +53,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;
|
||||
|
|
|
@ -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);
|
||||
|
@ -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))
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue