1. remove ld_lib_path from all things e17 executes EXCEPT its own specific

tools.
2. custom screensaver patches


SVN revision: 27628
This commit is contained in:
Carsten Haitzler 2006-12-29 02:56:26 +00:00
parent 8a3717b412
commit 29b6afd096
12 changed files with 256 additions and 30 deletions

9
TODO
View File

@ -20,7 +20,6 @@ Some of the things (in very short form) that need to be done to E17...
-------------------------------------------------------------------------------
* fm2 needs a right-click file properties dialog
* fm2 needs a way to set custom backgrounds and handle scrolling
* fm2 needs to display symlink info on files somehow
* fm2 needs to display more than 1 file being dragged (if more than 1 is being
dragged)
@ -29,13 +28,14 @@ Some of the things (in very short form) that need to be done to E17...
* fm2 needs a way to use custom icons per dir/file
* fm2 needs a way to bypass thumb gen anim on just a unrealize/realize as well
as change state instantly if it already was selected
* fm2 needs a mime filter
* fm2 needs to not unrealize then re-realize on resort/arraneg - keep objects
around.
* fm2 needs a mime/extension/glob filter
* fm2 will pop up tonnes of error dialogs if u try delete a lot of files in a
tree you can't delete - fix to make this a dialog with a log etc.
* dnd needs to do xdnd properly.
* fm2 needs icon views (auto-arrange, snap to grid and free placement), for
fwin windows and the desktop
* middle mouse on gadgets as a quick move/resize thing?
* language packs: need to have a tool to load/setup a language pack (which
means .mo compiled files from a .po, an optional font and a config file that
specifies the locale and font) and then install the font(s) either as a user
@ -77,8 +77,6 @@ Some of the things (in very short form) that need to be done to E17...
* need to audit, namespace and expand text and color classes
* need to specify what is NEEDED from a theme, what is optional (in terms of
parts, groups and signals). etc.
* winlist should support place for window "screenshot" in list as well as
app icon
* winlist could divide windows up into blocks - sub-lists within a container
per desktop (with stick windows considered to live on the "current" desk
when winlist starts)
@ -91,7 +89,6 @@ Some of the things (in very short form) that need to be done to E17...
* desktop flip animations need to allow control over accel/decel and
have a better ui - add wobble and controls etc. etc.
* internal windows (config dialogs, etc) should re-open after a restart
* .order file handling needs some going over, there is at least one bug.
]]]
[[[

View File

@ -1225,8 +1225,10 @@ ACT_FN_GO(exec)
if (params)
{
Ecore_Exe *exe;
e_util_library_path_strip();
exe = ecore_exe_run(params, NULL);
e_util_library_path_restore();
e_exehist_add("action/exec", params);
if (exe) ecore_exe_free(exe);
}

View File

@ -478,6 +478,8 @@ e_config_init(void)
E_CONFIG_VAL(D, T, desklock_use_timeout, INT);
E_CONFIG_VAL(D, T, desklock_timeout, DOUBLE);
E_CONFIG_VAL(D, T, desklock_disable_screensaver, INT);
E_CONFIG_VAL(D, T, desklock_use_custom_screensaver, INT);
E_CONFIG_VAL(D, T, desklock_custom_screensaver_cmd, STR);
E_CONFIG_VAL(D, T, display_res_restore, INT);
E_CONFIG_VAL(D, T, display_res_width, INT);
E_CONFIG_VAL(D, T, display_res_height, INT);
@ -1282,6 +1284,12 @@ e_config_init(void)
e_config->remember_internal_windows = 1;
IFCFGEND;
IFCFG(0x00106);
e_config->desklock_use_custom_screensaver = 0;
e_config->desklock_custom_screensaver_cmd = NULL;
IFCFGEND;
#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) */
@ -1366,8 +1374,9 @@ e_config_init(void)
E_CONFIG_LIMIT(e_config->desklock_login_box_zone, -2, 1000);
E_CONFIG_LIMIT(e_config->desklock_autolock, 0, 1);
E_CONFIG_LIMIT(e_config->desklock_use_timeout, 0, 1);
E_CONFIG_LIMIT(e_config->desklock_timeout, 1.0, 600.0);
E_CONFIG_LIMIT(e_config->desklock_timeout, 1.0, 5400.0);
E_CONFIG_LIMIT(e_config->desklock_disable_screensaver, 0, 1);
E_CONFIG_LIMIT(e_config->desklock_use_custom_screensaver, 0, 1);
E_CONFIG_LIMIT(e_config->display_res_restore, 0, 1);
E_CONFIG_LIMIT(e_config->display_res_width, 1, 8192);
E_CONFIG_LIMIT(e_config->display_res_height, 1, 8192);
@ -1966,6 +1975,7 @@ _e_config_free(void)
if (e_config->wallpaper_import_last_dev) evas_stringshare_del(e_config->wallpaper_import_last_dev);
if (e_config->wallpaper_import_last_path) evas_stringshare_del(e_config->wallpaper_import_last_path);
if (e_config->theme_default_border_style) evas_stringshare_del(e_config->theme_default_border_style);
if (e_config->desklock_custom_screensaver_cmd) evas_stringshare_del(e_config->desklock_custom_screensaver_cmd);
E_FREE(e_config);
}
}

View File

@ -52,7 +52,7 @@ typedef Eet_Data_Descriptor E_Config_DD;
/* 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 0x0105
#define E_CONFIG_FILE_GENERATION 0x0106
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
#define E_EVAS_ENGINE_DEFAULT 0
@ -231,7 +231,9 @@ struct _E_Config
int desklock_use_timeout; // GUI
double desklock_timeout; // GUI
int desklock_disable_screensaver; // GUI
int desklock_use_custom_screensaver; //GUI
const char *desklock_custom_screensaver_cmd; // GUI
int display_res_restore; // GUI
int display_res_width; // GUI
int display_res_height; // GUI

View File

@ -49,6 +49,8 @@ static E_Zone *last_active_zone = NULL;
static Ecore_Event_Handler *_e_desklock_exit_handler = NULL;
static pid_t _e_desklock_child_pid = -1;
#endif
static Ecore_Exe *_e_custom_saver_exe = NULL;
static Ecore_Event_Handler *_e_custom_saver_exe_handler = NULL;
/***********************************************************************/
@ -57,6 +59,7 @@ static int _e_desklock_cb_mouse_down(void *data, int type, void *event);
static int _e_desklock_cb_mouse_up(void *data, int type, void *event);
static int _e_desklock_cb_mouse_wheel(void *data, int type, void *event);
static int _e_desklock_cb_mouse_move(void *data, int type, void *event);
static int _e_desklock_cb_custom_saver_exit(void *data, int type, void *event);
static void _e_desklock_passwd_update();
static void _e_desklock_backspace();
@ -77,17 +80,25 @@ static char *_desklock_auth_get_current_host(void);
EAPI int
e_desklock_init(void)
{
if (e_config->desklock_disable_screensaver)
ecore_x_screensaver_timeout_set(0);
else
{
if (e_config->desklock_use_timeout)
ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
}
/*
* Effectively hide the X screensaver yet allow
* it to generate the timer events for us.
*/
ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver);
ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver);
if (e_config->desklock_background)
e_filereg_register(e_config->desklock_background);
return 1;
}
@ -110,9 +121,23 @@ e_desklock_show(void)
E_Zone *current_zone;
int zone_counter;
int total_zone_num;
if (edd) return 0;
if (_e_custom_saver_exe) return 0;
if (e_config->desklock_use_custom_screensaver)
{
_e_custom_saver_exe_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
_e_desklock_cb_custom_saver_exit,
NULL);
e_util_library_path_strip();
_e_custom_saver_exe = ecore_exe_run(e_config->desklock_custom_screensaver_cmd, NULL);
e_util_library_path_restore();
return 1;
}
if (edd) return 0;
#ifdef HAVE_PAM
if (e_config->desklock_auth_method == 1)
{
@ -323,8 +348,14 @@ e_desklock_hide(void)
{
E_Desklock_Popup_Data *edp;
if (!edd) return;
if ((!edd) && (!_e_custom_saver_exe)) return;
if (e_config->desklock_use_custom_screensaver)
{
_e_custom_saver_exe = NULL;
return;
}
if (edd->elock_grab_break_wnd)
ecore_x_window_show(edd->elock_grab_break_wnd);
while (edd->elock_wnd_list)
@ -735,3 +766,30 @@ _desklock_auth_get_current_host(void)
return strdup("localhost");
}
#endif
static int
_e_desklock_cb_custom_saver_exit(void *data, int type, void *event)
{
Ecore_Exe_Event_Del *ev;
ev = event;
if (ev->exe != _e_custom_saver_exe) return 1;
if (ev->exit_code != 0)
{
/* do something profound here... like notify someone */
}
/*
* Miserable HACK alert!!!
* Seems I must reset this. Some reason yet unknown, my
* intended values are getting reset!?!
*/
ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver);
ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver);
e_desklock_hide();
return 0;
}

View File

@ -14,7 +14,6 @@
#define DEF_DESKLOCK_BACKGROUND "theme_desklock_background"
#define DEF_THEME_BACKGROUND "theme_background"
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
@ -61,6 +60,9 @@ struct _E_Config_Dialog_Data
int specific_lb_zone; // local variable
int specific_lb_zone_backup; // used to have smart iface
int use_custom_screensaver;
char *custom_screensaver_cmd;
int zone_count; // local variable;
int bg_mode; // config
@ -290,7 +292,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata->autolock = e_config->desklock_autolock;
cfdata->use_timeout = e_config->desklock_use_timeout;
cfdata->timeout = e_config->desklock_timeout;
cfdata->timeout = e_config->desklock_timeout / 60;
/* should be taken from e_config */
//cfdata->login_box_on_zone = -1;
@ -347,6 +349,10 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata->auth_method = e_config->desklock_auth_method;
#endif
cfdata->use_custom_screensaver = e_config->desklock_use_custom_screensaver;
if (e_config->desklock_custom_screensaver_cmd)
cfdata->custom_screensaver_cmd = strdup(e_config->desklock_custom_screensaver_cmd);
//vertical_lb_align = e_config->desklock_login
}
@ -385,14 +391,16 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
e_config->desklock_personal_passwd = evas_stringshare_add(cfdata->desklock_passwd_cp);
e_config->desklock_autolock = cfdata->autolock;
e_config->desklock_use_timeout = cfdata->use_timeout;
e_config->desklock_timeout = cfdata->timeout;
e_config->desklock_timeout = cfdata->timeout * 60;
#ifdef HAVE_PAM
e_config->desklock_auth_method = cfdata->auth_method;
#endif
if (e_config->desklock_use_timeout)
{
ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
}
ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver);
ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver);
e_config_save_queue();
return 1;
}
@ -417,8 +425,8 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
ob = e_widget_label_add(evas, _("Time until screensaver starts"));
e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"),
1.0, 600.0,
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"),
1.0, 90.0,
1.0, 0, &(cfdata->timeout), NULL,
200);
e_widget_framelist_object_append(of, ob);
@ -467,14 +475,25 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
e_config->desklock_autolock = cfdata->autolock;
e_config->desklock_use_timeout = cfdata->use_timeout;
e_config->desklock_timeout = cfdata->timeout;
e_config->desklock_timeout = cfdata->timeout * 60;
#ifdef HAVE_PAM
e_config->desklock_auth_method = cfdata->auth_method;
#endif
if (e_config->desklock_use_timeout)
ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
e_config->desklock_use_custom_screensaver = cfdata->use_custom_screensaver;
if (cfdata->custom_screensaver_cmd)
{
if (e_config->desklock_custom_screensaver_cmd)
evas_stringshare_del(e_config->desklock_custom_screensaver_cmd);
e_config->desklock_custom_screensaver_cmd = evas_stringshare_add(cfdata->custom_screensaver_cmd);
}
ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver);
ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver);
e_config_save_queue();
return 1;
}
@ -713,7 +732,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
e_widget_disabled_set(of, !ecore_x_screensaver_event_available_get());
ob = e_widget_check_add(evas, _("Enable screensaver"), &(cfdata->use_timeout));
ob = e_widget_check_add(evas, _("Enable X screensaver"), &(cfdata->use_timeout));
e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
e_widget_framelist_object_append(of, ob);
@ -724,8 +743,8 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
ob = e_widget_label_add(evas, _("Time until screensaver starts"));
e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"),
1.0, 600.0,
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"),
1.0, 90.0,
1.0, 0, &(cfdata->timeout), NULL,
100);
e_widget_framelist_object_append(of, ob);
@ -734,6 +753,23 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
#else
e_widget_table_object_append(ot, of, 1, 2, 1, 1 ,1 ,1 ,1 ,1);
#endif
/*
* Allow Custom Screen Saver
* Useful, for example, for those of us who prefer
* to use things like xscreensaver, kscreesaver, etc...
*/
of = e_widget_framelist_add(evas, _("Custom Screensaver"), 0);
ob = e_widget_check_add(evas, _("Use custom screensaver/desklock"),
&(cfdata->use_custom_screensaver));
e_widget_framelist_object_append(of, ob);
ob = e_widget_entry_add(evas, &(cfdata->custom_screensaver_cmd));
e_widget_framelist_object_append(of, ob);
#ifdef HAVE_PAM
e_widget_table_object_append(ot, of, 0, 4, 2, 1, 1, 1, 1, 1);
#else
e_widget_table_object_append(ot, of, 0, 4, 2, 1, 1, 1, 1, 1);
#endif
e_dialog_resizable_set(cfd->dia, 0);
return ot;

View File

@ -352,7 +352,9 @@ e_intl_input_method_set(const char *imc_path)
if (E_EXE_IS_VALID(imc->e_im_exec))
{
e_util_library_path_strip();
_e_intl_input_method_exec = ecore_exe_run(imc->e_im_exec, NULL);
e_util_library_path_restore();
ecore_exe_tag_set(_e_intl_input_method_exec,"E/im_exec");
if ( !_e_intl_input_method_exec ||

View File

@ -7816,3 +7816,83 @@ break;
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_SET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-desklock-use-custom-screensaver-set", 1, "Set whether a custom screensaver will be utilized", 0, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_INT(atoi(params[0]), HDL);
#elif (TYPE == E_WM_IN)
START_INT(policy, HDL);
e_config->desklock_use_custom_screensaver = policy;
E_CONFIG_LIMIT(e_config->desklock_use_custom_screensaver, 0, 1);
SAVE;
END_INT;
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-desklock-use-custom-screensaver-get", 0, "Get whether a custom screen saver is being used", 1, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_NULL(HDL);
#elif (TYPE == E_WM_IN)
SEND_INT(e_config->desklock_use_custom_screensaver, E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET_REPLY, HDL);
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET_REPLY
#if (TYPE == E_REMOTE_OPTIONS)
#elif (TYPE == E_REMOTE_OUT)
#elif (TYPE == E_WM_IN)
#elif (TYPE == E_REMOTE_IN)
START_INT(val, HDL);
printf("REPLY: POLICY=%d\n", val);
END_INT;
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_SET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-desklock-custom-screensaver-cmd-set", 1, "Set the current custom screensaver command to OPT1", 0, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_STRING(params[0], HDL);
#elif (TYPE == E_WM_IN)
STRING(s, HDL);
if (e_config->desklock_custom_screensaver_cmd)
evas_stringshare_del(e_config->desklock_custom_screensaver_cmd);
e_config->desklock_custom_screensaver_cmd = evas_stringshare_add(s);
END_STRING(s);
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-desklock-custom-screensaver-cmd-get", 0, "Get the current custom screensaver command", 1, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_NULL(HDL);
#elif (TYPE == E_WM_IN)
SEND_STRING(e_config->desklock_custom_screensaver_cmd, E_IPC_OP_PROFILE_GET_REPLY, HDL);
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET_REPLY
#if (TYPE == E_REMOTE_OPTIONS)
#elif (TYPE == E_REMOTE_OUT)
#elif (TYPE == E_WM_IN)
#elif (TYPE == E_REMOTE_IN)
STRING(s, HDL);
printf("REPLY: \"%s\"\n", s);
END_STRING(s);
#endif
#undef HDL

View File

@ -413,3 +413,11 @@
#define E_IPC_OP_HIBERNATE 376
#define E_IPC_OP_REBOOT 377
#define E_IPC_OP_SUSPEND 378
#define E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_SET 379
#define E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET 380
#define E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET_REPLY 381
#define E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_SET 382
#define E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET 383
#define E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET_REPLY 384

View File

@ -754,7 +754,8 @@ _e_manager_cb_screensaver_notify(void *data, int ev_type __UNUSED__, void *ev)
if (e->on)
{
if (e_config->desklock_autolock) e_desklock_show();
if ((e_config->desklock_autolock) || (e_config->desklock_use_custom_screensaver))
e_desklock_show();
}
return 1;
}

View File

@ -229,7 +229,9 @@ e_util_head_exec(int head, const char *cmd)
strcpy(buf, penv_display);
ok = 1;
e_util_library_path_strip();
exe = ecore_exe_run(cmd, NULL);
e_util_library_path_restore();
if (!exe)
{
e_util_dialog_show(_("Run Error"),
@ -780,6 +782,32 @@ e_util_file_time_get(time_t ftime)
return s;
}
static char *prev_ld_library_path = NULL;
EAPI void
e_util_library_path_strip(void)
{
char *p, *p2;
p = getenv("LD_LIBRARY_PATH");
E_FREE(prev_ld_library_path);
if (p)
{
prev_ld_library_path = strdup(p);
p2 = strchr(p, ':');
if (p2) p2++;
e_util_env_set("LD_LIBRARY_PATH", p2);
}
}
EAPI void
e_util_library_path_restore(void)
{
if (!prev_ld_library_path) return;
e_util_env_set("LD_LIBRARY_PATH", prev_ld_library_path);
E_FREE(prev_ld_library_path);
}
/* local subsystem functions */
static void
_e_util_container_fake_mouse_up_cb(void *data)

View File

@ -47,6 +47,8 @@ EAPI int e_util_icon_save(Ecore_X_Icon *icon, const char *filename);
EAPI char *e_util_shell_env_path_eval(char *path);
EAPI char *e_util_size_string_get(off_t size);
EAPI char *e_util_file_time_get(time_t ftime);
EAPI void e_util_library_path_strip(void);
EAPI void e_util_library_path_restore(void);
#endif
#endif