diff --git a/config/illume/e.src b/config/illume/e.src index 937f14984..2a38280d6 100644 --- a/config/illume/e.src +++ b/config/illume/e.src @@ -21,7 +21,7 @@ group "E_Config" struct { value "edge_flip_dragging" int: 0; value "edge_flip_moving" int: 0; value "edge_flip_timeout" double: 0.2500000000000000000000000; - value "evas_engine_default" int: 4; + value "evas_engine_default" int: 1; value "evas_engine_container" int: 0; value "evas_engine_init" int: 0; value "evas_engine_menus" int: 0; diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 7a33238f2..d79fa28ed 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -13,7 +13,7 @@ EAPI E_Config *e_config = NULL; /* local subsystem functions */ static void _e_config_save_cb(void *data); -static void _e_config_free(void); +static void _e_config_free(E_Config *cfg); static int _e_config_cb_timer(void *data); static int _e_config_eet_close_handle(Eet_File *ef, char *file); @@ -673,13 +673,20 @@ e_config_shutdown(void) EAPI void e_config_load(void) { + E_Config *tcfg = NULL; + e_config = e_config_domain_load("e", _e_config_edd); if (e_config) { + int reload = 0; + + /* major version change - that means wipe and restart */ if ((e_config->config_version >> 16) < E_CONFIG_FILE_EPOCH) { /* your config is too old - need new defaults */ - _e_config_free(); + _e_config_free(e_config); + e_config = NULL; + reload = 1; ecore_timer_add(1.0, _e_config_cb_timer, _("Configuration data needed upgrading. Your old configuration
" "has been wiped and a new set of defaults initialized. This
" @@ -690,10 +697,13 @@ e_config_load(void) "that by adding it in. You can re-configure things now to your
" "liking. Sorry for the hiccup in your configuration.
")); } + /* config is too new? odd! suspect corruption? */ else if (e_config->config_version > E_CONFIG_FILE_VERSION) { /* your config is too new - what the fuck??? */ - _e_config_free(); + _e_config_free(e_config); + e_config = NULL; + reload = 1; ecore_timer_add(1.0, _e_config_cb_timer, _("Your configuration is NEWER than Enlightenment. This is very
" "strange. This should not happen unless you downgraded
" @@ -702,521 +712,117 @@ e_config_load(void) "as a precaution your configuration has been now restored to
" "defaults. Sorry for the inconvenience.
")); } + /* oldest minor version supported */ + else if ((e_config->config_version & 0xffff) < 0x0124) + { + /* your config is so old - we don't even bother supporting an + * upgrade path - brand new config for you! */ + _e_config_free(e_config); + e_config = NULL; + reload = 1; + ecore_timer_add(1.0, _e_config_cb_timer, + _("Configuration data needed upgrading. Your old configuration
" + "has been wiped and a new set of defaults initialized. This
" + "will happen regularly during development, so don't report a
" + "bug. This simply means Enlightenment needs new configuration
" + "data by default for usable functionality that your old
" + "configuration simply lacks. This new set of defaults will fix
" + "that by adding it in. You can re-configure things now to your
" + "liking. Sorry for the hiccup in your configuration.
")); + } + if (reload) + { + e_config_profile_del(e_config_profile_get()); + e_config = e_config_domain_load("e", _e_config_edd); + } } - if (!e_config) { - /* DEFAULT CONFIG */ - e_config = E_NEW(E_Config, 1); - e_config->config_version = (E_CONFIG_FILE_EPOCH << 16); + printf("EEEK! no config of any sort! abort abort abort!\n"); + fprintf(stderr, "EEEK! no config of any sort! abort abort abort!\n"); + abort(); } -#define IFCFG(v) \ - if ((e_config->config_version & 0xffff) < (v)) { + if (e_config->config_version < E_CONFIG_FILE_VERSION) + { + /* we need an upgrade of some sort */ + tcfg = e_config_domain_system_load("e", _e_config_edd); + if (!tcfg) + { + const char *pprofile; + + pprofile = e_config_profile_get(); + if (pprofile) pprofile = eina_stringshare_add(pprofile); + e_config_profile_set("standard"); + tcfg = e_config_domain_system_load("e", _e_config_edd); + e_config_profile_set(pprofile); + if (pprofile) eina_stringshare_del(pprofile); + } + /* can't find your profile or standard or default - try default after + * a wipe */ + if (!tcfg) + { + E_Action *a; + + e_config_profile_set("default"); + e_config_profile_del(e_config_profile_get()); + e_config_save_block_set(1); + a = e_action_find("restart"); + if ((a) && (a->func.go)) a->func.go(NULL, NULL); + } + } +#define IFCFG(v) if ((e_config->config_version & 0xffff) < (v)) { #define IFCFGEND } - IFCFG(0x008d); - e_config->show_splash = 1; - e_config->init_default_theme = eina_stringshare_add("default.edj"); - e_config->desktop_default_background = NULL; - e_config->desktop_default_name = eina_stringshare_add(_("Desktop %i, %i")); - e_config->menus_scroll_speed = 1000.0; - e_config->menus_fast_mouse_move_threshhold = 300.0; - e_config->menus_click_drag_timeout = DEF_MENUCLICK; - e_config->border_shade_animate = 1; - e_config->border_shade_transition = E_TRANSITION_DECELERATE; - e_config->border_shade_speed = 3000.0; - e_config->framerate = 30.0; - e_config->image_cache = 4096; - e_config->font_cache = 512; - e_config->edje_cache = 32; - e_config->edje_collection_cache = 64; - e_config->zone_desks_x_count = 1; - e_config->zone_desks_y_count = 1; - e_config->use_virtual_roots = 0; - e_config->edge_flip_dragging = 0; - e_config->edge_flip_moving = 0; - e_config->edge_flip_timeout = 0.25; - e_config->evas_engine_default = E_EVAS_ENGINE_SOFTWARE_X11; - e_config->evas_engine_container = E_EVAS_ENGINE_DEFAULT; - e_config->evas_engine_init = E_EVAS_ENGINE_DEFAULT; - e_config->evas_engine_menus = E_EVAS_ENGINE_DEFAULT; - e_config->evas_engine_borders = E_EVAS_ENGINE_DEFAULT; - e_config->evas_engine_errors = E_EVAS_ENGINE_DEFAULT; - e_config->evas_engine_popups = E_EVAS_ENGINE_DEFAULT; - e_config->evas_engine_drag = E_EVAS_ENGINE_DEFAULT; - e_config->evas_engine_win = E_EVAS_ENGINE_DEFAULT; - e_config->evas_engine_zone = E_EVAS_ENGINE_DEFAULT; - e_config->use_composite = 0; - e_config->language = NULL; - e_config->window_placement_policy = E_WINDOW_PLACEMENT_SMART; - e_config->focus_policy = E_FOCUS_SLOPPY; - e_config->focus_setting = E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED; - e_config->pass_click_on = 1; - e_config->always_click_to_raise = 0; - e_config->always_click_to_focus = 0; - e_config->use_auto_raise = 0; - e_config->auto_raise_delay = 0.5; - e_config->use_resist = 1; - e_config->drag_resist = 16; - e_config->desk_resist = 32; - e_config->window_resist = 12; - e_config->gadget_resist = 32; - e_config->winlist_warp_while_selecting = 1; - e_config->winlist_warp_at_end = 1; - e_config->winlist_warp_speed = 0.1; - e_config->winlist_scroll_animate = 1; - e_config->winlist_scroll_speed = 0.1; - e_config->winlist_list_show_iconified = 1; - e_config->winlist_list_show_other_desk_windows = 0; - e_config->winlist_list_show_other_screen_windows = 0; - e_config->winlist_list_uncover_while_selecting = 0; - e_config->winlist_list_jump_desk_while_selecting = 0; - e_config->winlist_list_focus_while_selecting = 1; - e_config->winlist_list_raise_while_selecting = 1; - e_config->winlist_pos_align_x = 0.5; - e_config->winlist_pos_align_y = 0.5; - e_config->winlist_pos_size_w = 0.5; - e_config->winlist_pos_size_h = 0.5; - e_config->winlist_pos_min_w = 0; - e_config->winlist_pos_min_h = 0; - e_config->winlist_pos_max_w = 320; - e_config->winlist_pos_max_h = 320; - e_config->maximize_policy = E_MAXIMIZE_SMART | E_MAXIMIZE_BOTH; - e_config->allow_manip = 0; - e_config->kill_if_close_not_possible = 1; - e_config->kill_process = 1; - e_config->kill_timer_wait = 10.0; - e_config->ping_clients = 1; - e_config->transition_start = NULL; - e_config->transition_desk = eina_stringshare_add("vswipe"); - e_config->transition_change = eina_stringshare_add("crossfade"); - e_config->move_info_follows = 1; - e_config->resize_info_follows = 1; - e_config->move_info_visible = 1; - e_config->resize_info_visible = 1; - e_config->focus_last_focused_per_desktop = 1; - e_config->focus_revert_on_hide_or_close = 1; - e_config->pointer_slide = 1; - e_config->show_cursor = 1; - e_config->use_e_cursor = 1; - e_config->cursor_size = 32; - e_config->menu_autoscroll_margin = 0; - e_config->menu_autoscroll_cursor_margin = 1; - e_config->transient.move = 1; - e_config->transient.resize = 0; - e_config->transient.raise = 1; - e_config->transient.lower = 1; - e_config->transient.layer = 1; - e_config->transient.desktop = 1; - e_config->transient.iconify = 1; - e_config->modal_windows = 1; - e_config->menu_eap_name_show = 1; - e_config->menu_eap_generic_show = 1; - e_config->menu_eap_comment_show = 0; - e_config->fullscreen_policy = E_FULLSCREEN_RESIZE; - e_config->input_method = NULL; - e_config->exebuf_max_exe_list = 20; - e_config->exebuf_max_eap_list = 20; - e_config->exebuf_max_hist_list = 20; - e_config->exebuf_scroll_animate = 1; - e_config->exebuf_scroll_speed = 0.1; - e_config->exebuf_pos_align_x = 0.5; - e_config->exebuf_pos_align_y = 0.5; - e_config->exebuf_pos_size_w = 0.75; - e_config->exebuf_pos_size_h = 0.25; - e_config->exebuf_pos_min_w = 200; - e_config->exebuf_pos_min_h = 160; - e_config->exebuf_pos_max_w = 400; - e_config->exebuf_pos_max_h = 320; - e_config->exebuf_term_cmd = eina_stringshare_add("xterm -hold -e"); - e_config->color_classes = NULL; - e_config->use_app_icon = 0; - e_config->cnfmdlg_disabled = 0; - e_config->cfgdlg_auto_apply = 0; - e_config->cfgdlg_default_mode = 0; - e_config->gadcons = NULL; - e_config->font_hinting = 0; - - e_config->desklock_personal_passwd = NULL; - e_config->desklock_background = NULL; - e_config->desklock_auth_method = 0; - e_config->desklock_login_box_zone = -1; - e_config->desklock_start_locked = 0; - e_config->desklock_autolock_screensaver = 0; - e_config->desklock_autolock_idle = 0; - e_config->desklock_autolock_idle_timeout = 300.0; - - e_config->display_res_restore = 0; - e_config->display_res_width = 0; - e_config->display_res_height = 0; - e_config->display_res_hz = 0; - e_config->display_res_rotation = 0; - - e_config->hal_desktop = 1; - - e_config->border_keyboard.timeout = 5.0; - e_config->border_keyboard.move.dx = 5; - e_config->border_keyboard.move.dy = 5; - e_config->border_keyboard.resize.dx = 5; - e_config->border_keyboard.resize.dy = 5; - +#define COPYVAL(x) do {e_config->x = tcfg->x;} while (0) +#define COPYSTR(x) do {e_config->x = tcfg->x; tcfg->x = NULL;} while (0) + if (tcfg) { - E_Config_Module *em; - -#define CFG_MODULE(_name, _enabled, _delayed, _priority) \ - em = E_NEW(E_Config_Module, 1); \ - em->name = eina_stringshare_add(_name); \ - em->enabled = _enabled; \ - em->delayed = _delayed; \ - em->priority = _priority; \ - e_config->modules = eina_list_append(e_config->modules, em) - - CFG_MODULE("wizard", 1, 0, 0); + /* some sort of upgrade is needed */ + IFCFG(0x0124); + COPYVAL(thumbscroll_enable); + COPYVAL(thumbscroll_threshhold); + COPYVAL(thumbscroll_momentum_threshhold); + COPYVAL(thumbscroll_friction); + IFCFGEND; + + IFCFG(0x0125); + COPYVAL(mouse_hand); + IFCFGEND; + + IFCFG(0x0126); + COPYVAL(border_keyboard.timeout); + COPYVAL(border_keyboard.move.dx); + COPYVAL(border_keyboard.move.dy); + COPYVAL(border_keyboard.resize.dx); + COPYVAL(border_keyboard.resize.dy); + IFCFGEND; + + IFCFG(0x0127); + COPYVAL(scale.min); + COPYVAL(scale.max); + COPYVAL(scale.factor); + COPYVAL(scale.base_dpi); + COPYVAL(scale.use_dpi); + COPYVAL(scale.use_custom); + IFCFGEND; + + IFCFG(0x0128); + COPYVAL(show_cursor); + COPYVAL(idle_cursor); + IFCFGEND; + + IFCFG(0x0129); + COPYSTR(default_system_menu); + IFCFGEND; + + IFCFG(0x012a); + COPYVAL(desklock_start_locked); + IFCFGEND; + + e_config->config_version = E_CONFIG_FILE_VERSION; + _e_config_free(tcfg); } - { - E_Config_Binding_Key *eb; -#define CFG_KEYBIND(_context, _key, _modifiers, _anymod, _action, _params) \ - eb = E_NEW(E_Config_Binding_Key, 1); \ - eb->context = _context; \ - eb->key = eina_stringshare_add(_key); \ - eb->modifiers = _modifiers; \ - eb->any_mod = _anymod; \ - eb->action = _action == NULL ? NULL : eina_stringshare_add(_action); \ - eb->params = _params == NULL ? NULL : eina_stringshare_add(_params); \ - e_config->key_bindings = eina_list_append(e_config->key_bindings, eb) - - /* - * FIXME: - * If new key binding are added/changed/modified, then do not - * forget to reflect those changes in e_int_config_keybinding.c in - * _restore_key_binding_defaults_cb function - */ - - CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "m", - E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0, - "menu_show", "main"); - CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "End", - E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0, - "restart", NULL); - CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "Delete", - E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0, - "logout", NULL); - } - { - E_Config_Binding_Signal *eb; - -#define CFG_SIGNALBIND(_context, _signal, _source, _modifiers, _anymod, _action, _params) \ - eb = E_NEW(E_Config_Binding_Signal, 1); \ - eb->context = _context; \ - eb->signal = _signal == NULL ? NULL : eina_stringshare_add(_signal); \ - eb->source = _source == NULL ? NULL : eina_stringshare_add(_source); \ - eb->modifiers = _modifiers; \ - eb->any_mod = _anymod; \ - eb->action = _action == NULL ? NULL : eina_stringshare_add(_action); \ - eb->params = _params == NULL ? NULL : eina_stringshare_add(_params); \ - e_config->signal_bindings = eina_list_append(e_config->signal_bindings, eb) - - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1,double", - "e.event.titlebar", - E_BINDING_MODIFIER_NONE, 1, - "window_shaded_toggle", "up"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,2", - "e.event.titlebar", - E_BINDING_MODIFIER_NONE, 1, - "window_shaded_toggle", "up"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,wheel,?,1", - "e.event.titlebar", - E_BINDING_MODIFIER_NONE, 1, - "window_shaded", "0 up"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,wheel,?,-1", - "e.event.titlebar", - E_BINDING_MODIFIER_NONE, 1, - "window_shaded", "1 up"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,3", - "e.event.titlebar", - E_BINDING_MODIFIER_NONE, 1, - "window_menu", NULL); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,?", - "e.event.icon", - E_BINDING_MODIFIER_NONE, 1, - "window_menu", NULL); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,[12]", - "e.event.close", - E_BINDING_MODIFIER_NONE, 1, - "window_close", NULL); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,3", - "e.event.close", - E_BINDING_MODIFIER_NONE, 1, - "window_kill", NULL); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,1", - "e.event.maximize", - E_BINDING_MODIFIER_NONE, 1, - "window_maximized_toggle", NULL); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,2", - "e.event.maximize", - E_BINDING_MODIFIER_NONE, 1, - "window_maximized_toggle", "smart"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,3", - "e.event.maximize", - E_BINDING_MODIFIER_NONE, 1, - "window_maximized_toggle", "expand"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,?", - "e.event.minimize", - E_BINDING_MODIFIER_NONE, 1, - "window_iconic_toggle", NULL); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,?", - "e.event.shade", - E_BINDING_MODIFIER_NONE, 1, - "window_shaded_toggle", "up"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,clicked,?", - "e.event.lower", - E_BINDING_MODIFIER_NONE, 1, - "window_lower", NULL); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1", - "e.event.icon", - E_BINDING_MODIFIER_NONE, 1, - "window_drag_icon", NULL); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1", - "e.event.titlebar", - E_BINDING_MODIFIER_NONE, 1, - "window_move", NULL); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,up,1", - "e.event.titlebar", - E_BINDING_MODIFIER_NONE, 1, - "window_move", "end"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1", - "e.event.resize.tl", - E_BINDING_MODIFIER_NONE, 1, - "window_resize", "tl"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1", - "e.event.resize.t", - E_BINDING_MODIFIER_NONE, 1, - "window_resize", "t"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1", - "e.event.resize.tr", - E_BINDING_MODIFIER_NONE, 1, - "window_resize", "tr"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1", - "e.event.resize.r", - E_BINDING_MODIFIER_NONE, 1, - "window_resize", "r"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1", - "e.event.resize.br", - E_BINDING_MODIFIER_NONE, 1, - "window_resize", "br"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1", - "e.event.resize.b", - E_BINDING_MODIFIER_NONE, 1, - "window_resize", "b"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1", - "e.event.resize.bl", - E_BINDING_MODIFIER_NONE, 1, - "window_resize", "bl"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,1", - "e.event.resize.l", - E_BINDING_MODIFIER_NONE, 1, - "window_resize", "l"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,up,1", - "e.event.resize.*", - E_BINDING_MODIFIER_NONE, 1, - "window_resize", "end"); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,down,3", - "e.event.resize.*", - E_BINDING_MODIFIER_NONE, 1, - "window_move", NULL); - CFG_SIGNALBIND(E_BINDING_CONTEXT_BORDER, "mouse,up,3", - "e.event.resize.*", - E_BINDING_MODIFIER_NONE, 1, - "window_move", "end"); - } - IFCFGEND; - - IFCFG(0x0093); /* the version # where this value(s) was introduced */ - /* FIXME: wipe previous shelves and gadcons - remove this eventually */ - e_config->shelves = NULL; - e_config->gadcons = NULL; - IFCFGEND; - - IFCFG(0x0094); /* the version # where this value(s) was introduced */ - e_config->border_raise_on_mouse_action = 1; - e_config->border_raise_on_focus = 1; - e_config->desk_flip_wrap = 0; - e_config->wallpaper_import_last_dev = NULL; - e_config->wallpaper_import_last_path = NULL; - IFCFGEND; - - IFCFG(0x0096); /* the version # where this value(s) was introduced */ - e_config->wallpaper_import_last_dev = eina_stringshare_add("~/"); - e_config->wallpaper_import_last_path = eina_stringshare_add("/"); - IFCFGEND; - - IFCFG(0x0098); - e_config->wallpaper_grad_c1_r = 0; - e_config->wallpaper_grad_c1_g = 0; - e_config->wallpaper_grad_c1_b = 0; - e_config->wallpaper_grad_c2_r = 255; - e_config->wallpaper_grad_c2_g = 255; - e_config->wallpaper_grad_c2_b = 255; - IFCFGEND; - - IFCFG(0x0101); - e_config->desk_flip_animate_mode = 1; - e_config->desk_flip_animate_interpolation = 0; - e_config->desk_flip_animate_time = 0.2; - IFCFGEND; - - IFCFG(0x0102); - e_config->mime_icons = NULL; - IFCFGEND; - - IFCFG(0x00103); - e_config->theme_default_border_style = eina_stringshare_add("default"); - IFCFGEND; - - IFCFG(0x00104); - e_config->winlist_list_show_other_desk_iconified = 1; - e_config->winlist_list_show_other_screen_iconified = 0; - IFCFGEND; - - IFCFG(0x00105); - e_config->remember_internal_windows = 0; - IFCFGEND; - - IFCFG(0x00106); - e_config->desklock_use_custom_desklock = 0; - e_config->desklock_custom_desklock_cmd = NULL; - IFCFGEND; - - IFCFG(0x0121); - e_config->gadcons = NULL; - IFCFGEND; - - IFCFG(0x0108); - e_config->desk_auto_switch = 0; - IFCFGEND; - - IFCFG(0x0109); - e_config->dpms_enable = 0; - e_config->dpms_standby_enable = 0; - e_config->dpms_suspend_enable = 0; - e_config->dpms_off_enable = 0; - e_config->dpms_standby_timeout = 1; - e_config->dpms_suspend_timeout = 1; - e_config->dpms_off_timeout = 1; - e_config->screensaver_enable = 0; - e_config->screensaver_timeout = 0; - e_config->screensaver_interval = 5; - e_config->screensaver_blanking = 2; - e_config->screensaver_expose = 2; - IFCFGEND; - - IFCFG(0x0110); - e_config->clientlist_group_by = 0; - e_config->clientlist_separate_with = 0; - e_config->clientlist_sort_by = 0; - e_config->clientlist_separate_iconified_apps = 0; - e_config->clientlist_warp_to_iconified_desktop = 0; - IFCFGEND; - - IFCFG(0x0111); - e_config->clientlist_include_all_zones = 0; - IFCFGEND; - - IFCFG(0x0112); - e_config->mouse_accel_numerator = 2; - e_config->mouse_accel_denominator = 1; - e_config->mouse_accel_threshold = 4; - IFCFGEND; - - if (!e_config->icon_theme) e_config->icon_theme = eina_stringshare_add("hicolor"); - - IFCFG(0x113) - e_config->clientlist_max_caption_len = 0; - IFCFGEND; - - IFCFG(0x114) - e_config->thumb_nice = 0; - IFCFGEND; - - IFCFG(0x0115); - e_config->clientlist_limit_caption_len = 0; - IFCFGEND; - - IFCFG(0x0116); - e_config->border_fix_on_shelf_toggle = 0; - IFCFGEND; - - IFCFG(0x0117); - e_config->cnfmdlg_disabled = 0; - IFCFGEND; - - IFCFG(0x0118); - e_config->menu_favorites_show = 1; - e_config->menu_apps_show = 1; - IFCFGEND; - - IFCFG(0x0119); - e_config->allow_above_fullscreen = 0; - IFCFGEND; - - IFCFG(0x0120); - e_config->show_desktop_icons = 1; - IFCFGEND; - - IFCFG(0x0123); - e_config->ping_clients_interval = 128; - e_config->cache_flush_poll_interval = 512; - IFCFGEND; - - IFCFG(0x0124); - e_config->thumbscroll_enable = 1; - e_config->thumbscroll_threshhold = 24; - e_config->thumbscroll_momentum_threshhold = 100.0; - e_config->thumbscroll_friction = 1.0; - IFCFGEND; - - IFCFG(0x0125); - e_config->mouse_hand = E_MOUSE_HAND_RIGHT; - IFCFGEND; - - IFCFG(0x0126); - e_config->border_keyboard.timeout = 5.0; - e_config->border_keyboard.move.dx = 5; - e_config->border_keyboard.move.dy = 5; - e_config->border_keyboard.resize.dx = 5; - e_config->border_keyboard.resize.dy = 5; - IFCFGEND; - - IFCFG(0x0127); - e_config->scale.min = 1.0; - e_config->scale.max = 3.0; - e_config->scale.factor = 1.0; - e_config->scale.base_dpi = 142; - e_config->scale.use_dpi = 0; - e_config->scale.use_custom = 1; - IFCFGEND; - - IFCFG(0x0128); - e_config->show_cursor = 1; - e_config->idle_cursor = 0; - IFCFGEND; - - IFCFG(0x0129); - e_config->default_system_menu = NULL; - IFCFGEND; - - IFCFG(0x012a); - e_config->desklock_start_locked = 0; - IFCFGEND; - - e_config->config_version = E_CONFIG_FILE_VERSION; - -#if 0 /* example of new config */ - IFCFG(0x0090); /* the version # where this value(s) was introduced */ - e_config->new_value = 10; /* set the value(s) */ - IFCFGEND; -#endif - + /* limit values so they are sane */ E_CONFIG_LIMIT(e_config->menus_scroll_speed, 1.0, 20000.0); E_CONFIG_LIMIT(e_config->show_splash, 0, 1); E_CONFIG_LIMIT(e_config->menus_fast_mouse_move_threshhold, 1.0, 2000.0); @@ -1567,10 +1173,16 @@ e_config_domain_load(const char *domain, E_Config_DD *edd) eet_close(ef); return data; } + return e_config_domain_system_load(domain, edd); +} + +EAPI void * +e_config_domain_system_load(const char *domain, E_Config_DD *edd) +{ + Eet_File *ef; + char buf[4096]; + void *data = NULL; - /* fallback to a system directory - * FIXME proper $PATH like handling might be wanted - */ snprintf(buf, sizeof(buf), "%s/data/config/%s/%s.cfg", e_prefix_data_get(), _e_config_profile, domain); ef = eet_open(buf, EET_FILE_MODE_READ); @@ -1759,205 +1371,203 @@ _e_config_save_cb(void *data) } static void -_e_config_free(void) +_e_config_free(E_Config *ecf) { - if (e_config) + if (!ecf) return; + while (ecf->modules) { - while (e_config->modules) - { - E_Config_Module *em; - - em = e_config->modules->data; - e_config->modules = eina_list_remove_list(e_config->modules, e_config->modules); - if (em->name) eina_stringshare_del(em->name); - E_FREE(em); - } - while (e_config->font_fallbacks) - { - E_Font_Fallback *eff; - - eff = e_config->font_fallbacks->data; - e_config->font_fallbacks = eina_list_remove_list(e_config->font_fallbacks, e_config->font_fallbacks); - if (eff->name) eina_stringshare_del(eff->name); - E_FREE(eff); - } - while (e_config->font_defaults) - { - E_Font_Default *efd; - - efd = e_config->font_defaults->data; - e_config->font_defaults = eina_list_remove_list(e_config->font_defaults, e_config->font_defaults); - if (efd->text_class) eina_stringshare_del(efd->text_class); - if (efd->font) eina_stringshare_del(efd->font); - E_FREE(efd); - } - while (e_config->themes) - { - E_Config_Theme *et; - - et = e_config->themes->data; - e_config->themes = eina_list_remove_list(e_config->themes, e_config->themes); - if (et->category) eina_stringshare_del(et->category); - if (et->file) eina_stringshare_del(et->file); - E_FREE(et); - } - while (e_config->mouse_bindings) - { - E_Config_Binding_Mouse *eb; - - eb = e_config->mouse_bindings->data; - e_config->mouse_bindings = eina_list_remove_list(e_config->mouse_bindings, e_config->mouse_bindings); - if (eb->action) eina_stringshare_del(eb->action); - if (eb->params) eina_stringshare_del(eb->params); - E_FREE(eb); - } - while (e_config->key_bindings) - { - E_Config_Binding_Key *eb; - - eb = e_config->key_bindings->data; - e_config->key_bindings = eina_list_remove_list(e_config->key_bindings, e_config->key_bindings); - if (eb->key) eina_stringshare_del(eb->key); - if (eb->action) eina_stringshare_del(eb->action); - if (eb->params) eina_stringshare_del(eb->params); - E_FREE(eb); - } - while (e_config->signal_bindings) - { - E_Config_Binding_Signal *eb; - - eb = e_config->signal_bindings->data; - e_config->signal_bindings = eina_list_remove_list(e_config->signal_bindings, e_config->signal_bindings); - if (eb->signal) eina_stringshare_del(eb->signal); - if (eb->source) eina_stringshare_del(eb->source); - if (eb->action) eina_stringshare_del(eb->action); - if (eb->params) eina_stringshare_del(eb->params); - E_FREE(eb); - } - while (e_config->wheel_bindings) - { - E_Config_Binding_Wheel *eb; - - eb = e_config->wheel_bindings->data; - e_config->wheel_bindings = eina_list_remove_list(e_config->wheel_bindings, e_config->wheel_bindings); - if (eb->action) eina_stringshare_del(eb->action); - if (eb->params) eina_stringshare_del(eb->params); - E_FREE(eb); - } - while (e_config->path_append_data) - { - E_Path_Dir *epd; - epd = e_config->path_append_data->data; - e_config->path_append_data = eina_list_remove_list(e_config->path_append_data, e_config->path_append_data); - if (epd->dir) eina_stringshare_del(epd->dir); - E_FREE(epd); - } - while (e_config->path_append_images) - { - E_Path_Dir *epd; - epd = e_config->path_append_images->data; - e_config->path_append_images = eina_list_remove_list(e_config->path_append_images, e_config->path_append_images); - if (epd->dir) eina_stringshare_del(epd->dir); - E_FREE(epd); - } - while (e_config->path_append_fonts) - { - E_Path_Dir *epd; - epd = e_config->path_append_fonts->data; - e_config->path_append_fonts = eina_list_remove_list(e_config->path_append_fonts, e_config->path_append_fonts); - if (epd->dir) eina_stringshare_del(epd->dir); - E_FREE(epd); - } - while (e_config->path_append_themes) - { - E_Path_Dir *epd; - epd = e_config->path_append_themes->data; - e_config->path_append_themes = eina_list_remove_list(e_config->path_append_themes, e_config->path_append_themes); - if (epd->dir) eina_stringshare_del(epd->dir); - E_FREE(epd); - } - while (e_config->path_append_init) - { - E_Path_Dir *epd; - epd = e_config->path_append_init->data; - e_config->path_append_init = eina_list_remove_list(e_config->path_append_init, e_config->path_append_init); - if (epd->dir) eina_stringshare_del(epd->dir); - E_FREE(epd); - } - while (e_config->path_append_icons) - { - E_Path_Dir *epd; - epd = e_config->path_append_icons->data; - e_config->path_append_icons = eina_list_remove_list(e_config->path_append_icons, e_config->path_append_icons); - if (epd->dir) eina_stringshare_del(epd->dir); - E_FREE(epd); - } - while (e_config->path_append_modules) - { - E_Path_Dir *epd; - epd = e_config->path_append_modules->data; - e_config->path_append_modules = eina_list_remove_list(e_config->path_append_modules, e_config->path_append_modules); - if (epd->dir) eina_stringshare_del(epd->dir); - E_FREE(epd); - } - while (e_config->path_append_backgrounds) - { - E_Path_Dir *epd; - epd = e_config->path_append_backgrounds->data; - e_config->path_append_backgrounds = eina_list_remove_list(e_config->path_append_backgrounds, e_config->path_append_backgrounds); - if (epd->dir) eina_stringshare_del(epd->dir); - E_FREE(epd); - } - while (e_config->path_append_messages) - { - E_Path_Dir *epd; - epd = e_config->path_append_messages->data; - e_config->path_append_messages = eina_list_remove_list(e_config->path_append_messages, e_config->path_append_messages); - if (epd->dir) eina_stringshare_del(epd->dir); - E_FREE(epd); - } - while (e_config->remembers) - { - E_Remember *rem; - rem = e_config->remembers->data; - e_config->remembers = eina_list_remove_list(e_config->remembers, e_config->remembers); - - if (rem->name) eina_stringshare_del(rem->name); - if (rem->class) eina_stringshare_del(rem->class); - if (rem->title) eina_stringshare_del(rem->title); - if (rem->role) eina_stringshare_del(rem->role); - if (rem->prop.border) eina_stringshare_del(rem->prop.border); - if (rem->prop.command) eina_stringshare_del(rem->prop.command); - - E_FREE(rem); - } - while (e_config->color_classes) - { - E_Color_Class *cc; - cc = e_config->color_classes->data; - e_config->color_classes = eina_list_remove_list(e_config->color_classes, e_config->color_classes); - - if (cc->name) eina_stringshare_del(cc->name); - E_FREE(cc); - } - if (e_config->init_default_theme) eina_stringshare_del(e_config->init_default_theme); - if (e_config->desktop_default_background) eina_stringshare_del(e_config->desktop_default_background); - if (e_config->desktop_default_name) eina_stringshare_del(e_config->desktop_default_name); - if (e_config->language) eina_stringshare_del(e_config->language); - if (e_config->transition_start) eina_stringshare_del(e_config->transition_start); - if (e_config->transition_desk) eina_stringshare_del(e_config->transition_desk); - if (e_config->transition_change) eina_stringshare_del(e_config->transition_change); - if (e_config->input_method) eina_stringshare_del(e_config->input_method); - if (e_config->exebuf_term_cmd) eina_stringshare_del(e_config->exebuf_term_cmd); - if (e_config->desklock_personal_passwd) eina_stringshare_del(e_config->desklock_personal_passwd); - if (e_config->desklock_background) eina_stringshare_del(e_config->desklock_background); - if (e_config->icon_theme) eina_stringshare_del(e_config->icon_theme); - if (e_config->wallpaper_import_last_dev) eina_stringshare_del(e_config->wallpaper_import_last_dev); - if (e_config->wallpaper_import_last_path) eina_stringshare_del(e_config->wallpaper_import_last_path); - if (e_config->theme_default_border_style) eina_stringshare_del(e_config->theme_default_border_style); - if (e_config->desklock_custom_desklock_cmd) eina_stringshare_del(e_config->desklock_custom_desklock_cmd); - E_FREE(e_config); + E_Config_Module *em; + + em = ecf->modules->data; + ecf->modules = eina_list_remove_list(ecf->modules, ecf->modules); + if (em->name) eina_stringshare_del(em->name); + E_FREE(em); } + while (ecf->font_fallbacks) + { + E_Font_Fallback *eff; + + eff = ecf->font_fallbacks->data; + ecf->font_fallbacks = eina_list_remove_list(ecf->font_fallbacks, ecf->font_fallbacks); + if (eff->name) eina_stringshare_del(eff->name); + E_FREE(eff); + } + while (ecf->font_defaults) + { + E_Font_Default *efd; + + efd = ecf->font_defaults->data; + ecf->font_defaults = eina_list_remove_list(ecf->font_defaults, ecf->font_defaults); + if (efd->text_class) eina_stringshare_del(efd->text_class); + if (efd->font) eina_stringshare_del(efd->font); + E_FREE(efd); + } + while (ecf->themes) + { + E_Config_Theme *et; + + et = ecf->themes->data; + ecf->themes = eina_list_remove_list(ecf->themes, ecf->themes); + if (et->category) eina_stringshare_del(et->category); + if (et->file) eina_stringshare_del(et->file); + E_FREE(et); + } + while (ecf->mouse_bindings) + { + E_Config_Binding_Mouse *eb; + + eb = ecf->mouse_bindings->data; + ecf->mouse_bindings = eina_list_remove_list(ecf->mouse_bindings, ecf->mouse_bindings); + if (eb->action) eina_stringshare_del(eb->action); + if (eb->params) eina_stringshare_del(eb->params); + E_FREE(eb); + } + while (ecf->key_bindings) + { + E_Config_Binding_Key *eb; + + eb = ecf->key_bindings->data; + ecf->key_bindings = eina_list_remove_list(ecf->key_bindings, ecf->key_bindings); + if (eb->key) eina_stringshare_del(eb->key); + if (eb->action) eina_stringshare_del(eb->action); + if (eb->params) eina_stringshare_del(eb->params); + E_FREE(eb); + } + while (ecf->signal_bindings) + { + E_Config_Binding_Signal *eb; + + eb = ecf->signal_bindings->data; + ecf->signal_bindings = eina_list_remove_list(ecf->signal_bindings, ecf->signal_bindings); + if (eb->signal) eina_stringshare_del(eb->signal); + if (eb->source) eina_stringshare_del(eb->source); + if (eb->action) eina_stringshare_del(eb->action); + if (eb->params) eina_stringshare_del(eb->params); + E_FREE(eb); + } + while (ecf->wheel_bindings) + { + E_Config_Binding_Wheel *eb; + + eb = ecf->wheel_bindings->data; + ecf->wheel_bindings = eina_list_remove_list(ecf->wheel_bindings, ecf->wheel_bindings); + if (eb->action) eina_stringshare_del(eb->action); + if (eb->params) eina_stringshare_del(eb->params); + E_FREE(eb); + } + while (ecf->path_append_data) + { + E_Path_Dir *epd; + epd = ecf->path_append_data->data; + ecf->path_append_data = eina_list_remove_list(ecf->path_append_data, ecf->path_append_data); + if (epd->dir) eina_stringshare_del(epd->dir); + E_FREE(epd); + } + while (ecf->path_append_images) + { + E_Path_Dir *epd; + epd = ecf->path_append_images->data; + ecf->path_append_images = eina_list_remove_list(ecf->path_append_images, ecf->path_append_images); + if (epd->dir) eina_stringshare_del(epd->dir); + E_FREE(epd); + } + while (ecf->path_append_fonts) + { + E_Path_Dir *epd; + epd = ecf->path_append_fonts->data; + ecf->path_append_fonts = eina_list_remove_list(ecf->path_append_fonts, ecf->path_append_fonts); + if (epd->dir) eina_stringshare_del(epd->dir); + E_FREE(epd); + } + while (ecf->path_append_themes) + { + E_Path_Dir *epd; + epd = ecf->path_append_themes->data; + ecf->path_append_themes = eina_list_remove_list(ecf->path_append_themes, ecf->path_append_themes); + if (epd->dir) eina_stringshare_del(epd->dir); + E_FREE(epd); + } + while (ecf->path_append_init) + { + E_Path_Dir *epd; + epd = ecf->path_append_init->data; + ecf->path_append_init = eina_list_remove_list(ecf->path_append_init, ecf->path_append_init); + if (epd->dir) eina_stringshare_del(epd->dir); + E_FREE(epd); + } + while (ecf->path_append_icons) + { + E_Path_Dir *epd; + epd = ecf->path_append_icons->data; + ecf->path_append_icons = eina_list_remove_list(ecf->path_append_icons, ecf->path_append_icons); + if (epd->dir) eina_stringshare_del(epd->dir); + E_FREE(epd); + } + while (ecf->path_append_modules) + { + E_Path_Dir *epd; + epd = ecf->path_append_modules->data; + ecf->path_append_modules = eina_list_remove_list(ecf->path_append_modules, ecf->path_append_modules); + if (epd->dir) eina_stringshare_del(epd->dir); + E_FREE(epd); + } + while (ecf->path_append_backgrounds) + { + E_Path_Dir *epd; + epd = ecf->path_append_backgrounds->data; + ecf->path_append_backgrounds = eina_list_remove_list(ecf->path_append_backgrounds, ecf->path_append_backgrounds); + if (epd->dir) eina_stringshare_del(epd->dir); + E_FREE(epd); + } + while (ecf->path_append_messages) + { + E_Path_Dir *epd; + epd = ecf->path_append_messages->data; + ecf->path_append_messages = eina_list_remove_list(ecf->path_append_messages, ecf->path_append_messages); + if (epd->dir) eina_stringshare_del(epd->dir); + E_FREE(epd); + } + while (ecf->remembers) + { + E_Remember *rem; + rem = ecf->remembers->data; + ecf->remembers = eina_list_remove_list(ecf->remembers, ecf->remembers); + + if (rem->name) eina_stringshare_del(rem->name); + if (rem->class) eina_stringshare_del(rem->class); + if (rem->title) eina_stringshare_del(rem->title); + if (rem->role) eina_stringshare_del(rem->role); + if (rem->prop.border) eina_stringshare_del(rem->prop.border); + if (rem->prop.command) eina_stringshare_del(rem->prop.command); + + E_FREE(rem); + } + while (ecf->color_classes) + { + E_Color_Class *cc; + cc = ecf->color_classes->data; + ecf->color_classes = eina_list_remove_list(ecf->color_classes, ecf->color_classes); + + if (cc->name) eina_stringshare_del(cc->name); + E_FREE(cc); + } + if (ecf->init_default_theme) eina_stringshare_del(ecf->init_default_theme); + if (ecf->desktop_default_background) eina_stringshare_del(ecf->desktop_default_background); + if (ecf->desktop_default_name) eina_stringshare_del(ecf->desktop_default_name); + if (ecf->language) eina_stringshare_del(ecf->language); + if (ecf->transition_start) eina_stringshare_del(ecf->transition_start); + if (ecf->transition_desk) eina_stringshare_del(ecf->transition_desk); + if (ecf->transition_change) eina_stringshare_del(ecf->transition_change); + if (ecf->input_method) eina_stringshare_del(ecf->input_method); + if (ecf->exebuf_term_cmd) eina_stringshare_del(ecf->exebuf_term_cmd); + if (ecf->desklock_personal_passwd) eina_stringshare_del(ecf->desklock_personal_passwd); + if (ecf->desklock_background) eina_stringshare_del(ecf->desklock_background); + if (ecf->icon_theme) eina_stringshare_del(ecf->icon_theme); + if (ecf->wallpaper_import_last_dev) eina_stringshare_del(ecf->wallpaper_import_last_dev); + if (ecf->wallpaper_import_last_path) eina_stringshare_del(ecf->wallpaper_import_last_path); + if (ecf->theme_default_border_style) eina_stringshare_del(ecf->theme_default_border_style); + if (ecf->desklock_custom_desklock_cmd) eina_stringshare_del(ecf->desklock_custom_desklock_cmd); + E_FREE(ecf); } static int diff --git a/src/bin/e_config.h b/src/bin/e_config.h index b34a70080..965aa730c 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -475,6 +475,7 @@ EAPI void e_config_save_block_set(int block); EAPI int e_config_save_block_get(void); EAPI void *e_config_domain_load(const char *domain, E_Config_DD *edd); +EAPI void *e_config_domain_system_load(const char *domain, E_Config_DD *edd); EAPI int e_config_profile_save(void); EAPI int e_config_domain_save(const char *domain, E_Config_DD *edd, const void *data); diff --git a/src/modules/illume/e_cfg.c b/src/modules/illume/e_cfg.c index 74864a7b5..c960ec8d7 100644 --- a/src/modules/illume/e_cfg.c +++ b/src/modules/illume/e_cfg.c @@ -4,6 +4,12 @@ #include "e_slipshelf.h" #include "e_mod_win.h" +/* + * FSO offers: + * + * org.freesmartphone.Device.IdleNotifier.SetStateTimeout("suspend", 60); + */ + /* internal calls */ static void _e_cfg_dbus_if_init(void); static void _e_cfg_dbus_if_shutdown(void); diff --git a/x-ui.sh b/x-ui.sh index 268185aa9..fc14d1334 100755 --- a/x-ui.sh +++ b/x-ui.sh @@ -14,4 +14,5 @@ Xephyr :1 -noreset -ac -br -dpi 284 -screen 480x640 & sleep 1 export DISPLAY=:1 unset E_RESTART E_START E_IPC_SOCKET E_START_TIME +#E_CONF_PROFILE=default enlightenment_start enlightenment_start -profile illume