From 2fa4afd3a12939a246e141215441faff024303cb Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Thu, 13 Nov 2008 20:39:13 +0000 Subject: [PATCH] desklock start locked. Command line and configuration option to have Enlightenment to start with desklock, so we can avoid a login manager and still be safe, but everything will be loaded and you get a better user experience. SVN revision: 37605 --- config/default/e.src | 1 + config/illume/e.src | 1 + config/minimalist/e.src | 1 + config/netbook/e.src | 1 + config/scaleable/e.src | 1 + config/standard/e.src | 1 + src/bin/e_config.c | 6 + src/bin/e_config.h | 3 +- src/bin/e_main.c | 228 ++++++++++-------- .../conf_desklock/e_int_config_desklock.c | 10 +- 10 files changed, 147 insertions(+), 106 deletions(-) diff --git a/config/default/e.src b/config/default/e.src index 7d4efddd0..8d375a651 100644 --- a/config/default/e.src +++ b/config/default/e.src @@ -445,6 +445,7 @@ group "E_Config" struct { value "desklock_background" string: "theme_desklock_background"; value "desklock_auth_method" int: 0; value "desklock_login_box_zone" int: -1; + value "desklock_start_locked" int: 0; value "desklock_autolock_screensaver" int: 0; value "desklock_autolock_idle" int: 0; value "desklock_autolock_idle_timeout" double: 300.0000000000000000000000000; diff --git a/config/illume/e.src b/config/illume/e.src index 09a8b8a86..937f14984 100644 --- a/config/illume/e.src +++ b/config/illume/e.src @@ -664,6 +664,7 @@ group "E_Config" struct { value "font_hinting" int: 0; value "desklock_auth_method" int: 0; value "desklock_login_box_zone" int: -1; + value "desklock_start_locked" int: 0; value "desklock_autolock_screensaver" int: 0; value "desklock_autolock_idle" int: 0; value "desklock_autolock_idle_timeout" double: 300.0000000000000000000000000; diff --git a/config/minimalist/e.src b/config/minimalist/e.src index 3e185aeff..f9cae0fe3 100644 --- a/config/minimalist/e.src +++ b/config/minimalist/e.src @@ -1810,6 +1810,7 @@ group "E_Config" struct { value "font_hinting" int: 0; value "desklock_auth_method" int: 0; value "desklock_login_box_zone" int: -1; + value "desklock_start_locked" int: 0; value "desklock_autolock_screensaver" int: 0; value "desklock_autolock_idle" int: 0; value "desklock_autolock_idle_timeout" double: 300.0000000000000000000000000; diff --git a/config/netbook/e.src b/config/netbook/e.src index 70758c7a5..98dbfa1d2 100644 --- a/config/netbook/e.src +++ b/config/netbook/e.src @@ -1874,6 +1874,7 @@ group "E_Config" struct { value "font_hinting" int: 0; value "desklock_auth_method" int: 0; value "desklock_login_box_zone" int: -1; + value "desklock_start_locked" int: 0; value "desklock_autolock_screensaver" int: 0; value "desklock_autolock_idle" int: 0; value "desklock_autolock_idle_timeout" double: 300.0000000000000000000000000; diff --git a/config/scaleable/e.src b/config/scaleable/e.src index 01b660e7f..a2dd176b1 100644 --- a/config/scaleable/e.src +++ b/config/scaleable/e.src @@ -1897,6 +1897,7 @@ group "E_Config" struct { value "font_hinting" int: 0; value "desklock_auth_method" int: 0; value "desklock_login_box_zone" int: -1; + value "desklock_start_locked" int: 0; value "desklock_autolock_screensaver" int: 0; value "desklock_autolock_idle" int: 0; value "desklock_autolock_idle_timeout" double: 300.0000000000000000000000000; diff --git a/config/standard/e.src b/config/standard/e.src index 856b8dd2e..fa2f84b6b 100644 --- a/config/standard/e.src +++ b/config/standard/e.src @@ -1897,6 +1897,7 @@ group "E_Config" struct { value "font_hinting" int: 0; value "desklock_auth_method" int: 0; value "desklock_login_box_zone" int: -1; + value "desklock_start_locked" int: 0; value "desklock_autolock_screensaver" int: 0; value "desklock_autolock_idle" int: 0; value "desklock_autolock_idle_timeout" double: 300.0000000000000000000000000; diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 017e63c89..5c6c6fae5 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -538,6 +538,7 @@ e_config_init(void) E_CONFIG_VAL(D, T, desklock_background, STR); E_CONFIG_VAL(D, T, desklock_auth_method, INT); E_CONFIG_VAL(D, T, desklock_login_box_zone, INT); + E_CONFIG_VAL(D, T, desklock_start_locked, INT); E_CONFIG_VAL(D, T, desklock_autolock_screensaver, INT); E_CONFIG_VAL(D, T, desklock_autolock_idle, INT); E_CONFIG_VAL(D, T, desklock_autolock_idle_timeout, DOUBLE); @@ -838,6 +839,7 @@ e_config_load(void) 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; @@ -1201,6 +1203,10 @@ e_config_load(void) 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; diff --git a/src/bin/e_config.h b/src/bin/e_config.h index c3748d96c..b34a70080 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -33,7 +33,7 @@ typedef struct _E_Event_Config_Icon_Theme E_Event_Config_Icon_Theme; /* increment this whenever a new set of config values are added but the users * config doesn't need to be wiped - simply new values need to be put in */ -#define E_CONFIG_FILE_GENERATION 0x0129 +#define E_CONFIG_FILE_GENERATION 0x012a #define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION) #define E_EVAS_ENGINE_DEFAULT 0 @@ -214,6 +214,7 @@ struct _E_Config const char *desklock_background; // GUI int desklock_auth_method; // GUI int desklock_login_box_zone; // GUI + int desklock_start_locked; // GUI int desklock_autolock_screensaver; // GUI int desklock_autolock_idle; // GUI double desklock_autolock_idle_timeout; // GUI diff --git a/src/bin/e_main.c b/src/bin/e_main.c index 0f0432bea..e3e9a29d9 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -86,6 +86,7 @@ static void _e_main_desk_restore(E_Manager *man, E_Container *con); static int (*_e_main_shutdown_func[MAX_LEVEL]) (void); static int _e_main_level = 0; static int _e_cacheburst = 0; +static Evas_Bool locked = 0; static Eina_List *_e_main_idler_before_list = NULL; @@ -321,10 +322,17 @@ main(int argc, char **argv) "\t\tBe evil.\n" "\t-psychotic\n" "\t\tBe psychotic.\n" + "\t-locked\n" + "\t\tstart with desklock on, so password will be asked.\n" ) ); exit(0); } + else if (!strcmp(argv[i], "-locked")) + { + locked = 1; + puts("enlightenment will start with desklock on."); + } } /* fix up DISPLAY to be :N.0 if no .screen is in it */ @@ -562,6 +570,8 @@ main(int argc, char **argv) } _e_main_shutdown_push(e_config_shutdown); + locked |= e_config->desklock_start_locked; + /* set all execced stuff to pri 1 - nice. make this config later? */ ecore_exe_run_priority_set(1); @@ -619,6 +629,16 @@ main(int argc, char **argv) _e_main_shutdown(-1); } _e_main_shutdown_push(e_theme_shutdown); + + e_init_status_set(_("Starting International Support")); + TS("intl post"); + /* init intl system */ + if (!e_intl_post_init()) + { + e_error_message_show(_("Enlightenment cannot set up its intl system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_intl_post_shutdown); TS("splash"); if (!((!e_config->show_splash) || (after_restart))) @@ -683,21 +703,44 @@ main(int argc, char **argv) ecore_evas_free(ee); } + e_init_status_set(_("Setup Screens")); + TS("screens"); + /* manage the root window */ + if (!_e_main_screens_init()) + { + e_error_message_show(_("Enlightenment set up window management for all the screens on your system\n" + "failed. Perhaps another window manager is running?\n")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(_e_main_screens_shutdown); + + e_init_status_set(_("Setup Screensaver")); + TS("screensaver"); + /* setup screensaver */ + if (!e_screensaver_init()) + { + e_error_message_show(_("Enlightenment cannot configure the X screensaver.")); + _e_main_shutdown(-1); + } + + e_init_status_set(_("Setup Desklock")); + TS("desklock"); + /* setup desklock */ + if (!e_desklock_init()) + { + e_error_message_show(_("Enlightenment cannot set up its desk locking system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_desklock_shutdown); + + if (locked && ((!e_config->show_splash) && (!after_restart))) + e_desklock_show(); + TS("msgbus"); /* setup e msgbus (DBUS) service */ if (e_msgbus_init()) _e_main_shutdown_push(e_msgbus_shutdown); - e_init_status_set(_("Starting International Support")); - TS("intl post"); - /* init intl system */ - if (!e_intl_post_init()) - { - e_error_message_show(_("Enlightenment cannot set up its intl system.")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_intl_post_shutdown); - e_init_status_set(_("Setting up Paths")); TS("efreet paths"); { @@ -715,16 +758,6 @@ main(int argc, char **argv) efreet_icon_extension_add(".edj"); TS("efreet paths done"); - e_init_status_set(_("Setup Thumbnailer")); - TS("thumb init"); - /* init the enlightenment thumbnailing system */ - if (!e_thumb_init()) - { - e_error_message_show(_("Enlightenment cannot initialize the Thumbnailing system.\n")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_thumb_shutdown); - e_init_status_set(_("Setup System Controls")); TS("sys init"); /* init the enlightenment sys command system */ @@ -743,45 +776,7 @@ main(int argc, char **argv) e_error_message_show(_("Enlightenment cannot set up its actions system.")); _e_main_shutdown(-1); } - _e_main_shutdown_push(e_actions_shutdown); - e_init_status_set(_("Setup Bindings")); - TS("bindings"); - /* init bindings system */ - if (!e_bindings_init()) - { - e_error_message_show(_("Enlightenment cannot set up its bindings system.")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_bindings_shutdown); - e_init_status_set(_("Setup Popups")); - TS("popup"); - /* init popup system */ - if (!e_popup_init()) - { - e_error_message_show(_("Enlightenment cannot set up its popup system.")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_popup_shutdown); - - e_init_status_set(_("Setup Wallpaper")); - TS("bg"); - /* init desktop background system */ - if (!e_bg_init()) - { - e_error_message_show(_("Enlightenment cannot set up its desktop background system.")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_bg_init); - e_init_status_set(_("Setup Screens")); - TS("screens"); - /* manage the root window */ - if (!_e_main_screens_init()) - { - e_error_message_show(_("Enlightenment set up window management for all the screens on your system\n" - "failed. Perhaps another window manager is running?\n")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(_e_main_screens_shutdown); + e_init_status_set(_("Setup Execution System")); TS("exec"); /* init app system */ @@ -840,7 +835,7 @@ main(int argc, char **argv) _e_main_shutdown(-1); } _e_main_shutdown_push(e_dnd_shutdown); - e_init_status_set(_("Setup Grab Input HAnding")); + e_init_status_set(_("Setup Grab Input Handing")); TS("grabinput"); /* setup input grabbing co-operation system */ if (!e_grabinput_init()) @@ -876,6 +871,64 @@ main(int argc, char **argv) _e_main_shutdown(-1); } _e_main_shutdown_push(e_gadcon_shutdown); + + e_init_status_set(_("Setup DPMS")); + TS("dpms"); + /* setup dpms */ + if (!e_dpms_init()) + { + e_error_message_show(_("Enlightenment cannot configure the DPMS settings.")); + _e_main_shutdown(-1); + } + + e_init_status_set(_("Set Up Powersave modes")); + TS("powersave"); + if (!e_powersave_init()) + { + e_error_message_show(_("Enlightenment cannot set up its powersave modes.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_powersave_shutdown); + + e_init_status_set(_("Setup Wallpaper")); + TS("bg"); + /* init desktop background system */ + if (!e_bg_init()) + { + e_error_message_show(_("Enlightenment cannot set up its desktop background system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_bg_shutdown); + + e_init_status_set(_("Setup Mouse")); + TS("mouse"); + /* setup mouse accel */ + if (!e_mouse_init()) + { + e_error_message_show(_("Enlightenment cannot configure the mouse settings.")); + _e_main_shutdown(-1); + } + + _e_main_shutdown_push(e_actions_shutdown); + e_init_status_set(_("Setup Bindings")); + TS("bindings"); + /* init bindings system */ + if (!e_bindings_init()) + { + e_error_message_show(_("Enlightenment cannot set up its bindings system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_bindings_shutdown); + e_init_status_set(_("Setup Popups")); + TS("popup"); + /* init popup system */ + if (!e_popup_init()) + { + e_error_message_show(_("Enlightenment cannot set up its popup system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_popup_shutdown); + e_init_status_set(_("Setup Shelves")); TS("shelves"); /* setup shelves */ @@ -886,42 +939,15 @@ main(int argc, char **argv) } _e_main_shutdown_push(e_shelf_shutdown); - e_init_status_set(_("Setup DPMS")); - TS("dpms"); - /* setup dpms */ - if (!e_dpms_init()) - { - e_error_message_show(_("Enlightenment cannot configure the DPMS settings.")); + e_init_status_set(_("Setup Thumbnailer")); + TS("thumb init"); + /* init the enlightenment thumbnailing system */ + if (!e_thumb_init()) + { + e_error_message_show(_("Enlightenment cannot initialize the Thumbnailing system.\n")); _e_main_shutdown(-1); - } - - e_init_status_set(_("Setup Screensaver")); - TS("screensaver"); - /* setup screensaver */ - if (!e_screensaver_init()) - { - e_error_message_show(_("Enlightenment cannot configure the X screensaver.")); - _e_main_shutdown(-1); - } - - e_init_status_set(_("Setup Mouse")); - TS("mouse"); - /* setup mouse accel */ - if (!e_mouse_init()) - { - e_error_message_show(_("Enlightenment cannot configure the mouse settings.")); - _e_main_shutdown(-1); - } - - e_init_status_set(_("Setup Desklock")); - TS("desklock"); - /* setup desklock */ - if (!e_desklock_init()) - { - e_error_message_show(_("Enlightenment cannot set up its desk locking system.")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_desklock_shutdown); + } + _e_main_shutdown_push(e_thumb_shutdown); e_init_status_set(_("Set Up File Ordering")); TS("order"); @@ -932,15 +958,6 @@ main(int argc, char **argv) } _e_main_shutdown_push(e_order_shutdown); - e_init_status_set(_("Set Up Powersave modes")); - TS("powersave"); - if (!e_powersave_init()) - { - e_error_message_show(_("Enlightenment cannot set up its powersave modes.")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_powersave_shutdown); - TS("add idle enterers"); /* add in a handler that just before we go idle we flush x - will happen after ecore_evas's idle rendering as it's after ecore_evas_init() */ _e_main_idle_enterer_flusher = ecore_idle_enterer_add(_e_main_cb_x_flusher, NULL); @@ -959,6 +976,9 @@ main(int argc, char **argv) if (!((!e_config->show_splash) || (after_restart))) { ecore_timer_add(16.0, _e_main_cb_startup_fake_end, NULL); + + if (locked) + e_desklock_show(); } e_container_all_thaw(); diff --git a/src/modules/conf_desklock/e_int_config_desklock.c b/src/modules/conf_desklock/e_int_config_desklock.c index 888dd97e1..ed0a4b2ab 100644 --- a/src/modules/conf_desklock/e_int_config_desklock.c +++ b/src/modules/conf_desklock/e_int_config_desklock.c @@ -34,8 +34,9 @@ struct _E_Config_Dialog_Data int use_xscreensaver; int fmdir; int zone_count; - + /* Basic props */ + int start_locked; int auto_lock; int screensaver_lock; double idle_time; @@ -101,6 +102,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) if (e_config->desklock_custom_desklock_cmd) cfdata->custom_lock_cmd = strdup(e_config->desklock_custom_desklock_cmd); + cfdata->start_locked = e_config->desklock_start_locked; cfdata->auto_lock = e_config->desklock_autolock_idle; cfdata->screensaver_lock = e_config->desklock_autolock_screensaver; cfdata->idle_time = e_config->desklock_autolock_idle_timeout / 60; @@ -142,6 +144,10 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) o = e_widget_list_add(evas, 0, 0); of = e_widget_framelist_add(evas, _("Automatic Locking"), 0); e_widget_disabled_set(of, !cfdata->use_xscreensaver); + ow = e_widget_check_add(evas, _("Lock when Enlightenment starts"), + &cfdata->start_locked); + e_widget_disabled_set(ow, !cfdata->use_xscreensaver); + e_widget_framelist_object_append(of, ow); ow = e_widget_check_add(evas, _("Lock when X screensaver activates"), &cfdata->screensaver_lock); e_widget_disabled_set(ow, !cfdata->use_xscreensaver); @@ -163,6 +169,7 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { + e_config->desklock_start_locked = cfdata->start_locked; e_config->desklock_autolock_idle = cfdata->auto_lock; e_config->desklock_autolock_screensaver = cfdata->screensaver_lock; e_config->desklock_autolock_idle_timeout = cfdata->idle_time * 60; @@ -333,6 +340,7 @@ _adv_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) static int _adv_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { + e_config->desklock_start_locked = cfdata->start_locked; e_config->desklock_autolock_idle = cfdata->auto_lock; e_config->desklock_autolock_screensaver = cfdata->screensaver_lock; e_config->desklock_autolock_idle_timeout = cfdata->idle_time * 60;