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
This commit is contained in:
Gustavo Sverzut Barbieri 2008-11-13 20:39:13 +00:00
parent ae2d26fcb2
commit 2fa4afd3a1
10 changed files with 147 additions and 106 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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();

View File

@ -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;