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 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 symlink info on files somehow
* fm2 needs to display more than 1 file being dragged (if more than 1 is being * fm2 needs to display more than 1 file being dragged (if more than 1 is being
dragged) 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 use custom icons per dir/file
* fm2 needs a way to bypass thumb gen anim on just a unrealize/realize as well * 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 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 * 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. tree you can't delete - fix to make this a dialog with a log etc.
* dnd needs to do xdnd properly. * dnd needs to do xdnd properly.
* fm2 needs icon views (auto-arrange, snap to grid and free placement), for * fm2 needs icon views (auto-arrange, snap to grid and free placement), for
fwin windows and the desktop 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 * 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 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 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 audit, namespace and expand text and color classes
* need to specify what is NEEDED from a theme, what is optional (in terms of * need to specify what is NEEDED from a theme, what is optional (in terms of
parts, groups and signals). etc. 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 * winlist could divide windows up into blocks - sub-lists within a container
per desktop (with stick windows considered to live on the "current" desk per desktop (with stick windows considered to live on the "current" desk
when winlist starts) 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 * desktop flip animations need to allow control over accel/decel and
have a better ui - add wobble and controls etc. etc. have a better ui - add wobble and controls etc. etc.
* internal windows (config dialogs, etc) should re-open after a restart * 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) if (params)
{ {
Ecore_Exe *exe; Ecore_Exe *exe;
e_util_library_path_strip();
exe = ecore_exe_run(params, NULL); exe = ecore_exe_run(params, NULL);
e_util_library_path_restore();
e_exehist_add("action/exec", params); e_exehist_add("action/exec", params);
if (exe) ecore_exe_free(exe); 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_use_timeout, INT);
E_CONFIG_VAL(D, T, desklock_timeout, DOUBLE); E_CONFIG_VAL(D, T, desklock_timeout, DOUBLE);
E_CONFIG_VAL(D, T, desklock_disable_screensaver, INT); 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_restore, INT);
E_CONFIG_VAL(D, T, display_res_width, INT); E_CONFIG_VAL(D, T, display_res_width, INT);
E_CONFIG_VAL(D, T, display_res_height, INT); E_CONFIG_VAL(D, T, display_res_height, INT);
@ -1282,6 +1284,12 @@ e_config_init(void)
e_config->remember_internal_windows = 1; e_config->remember_internal_windows = 1;
IFCFGEND; IFCFGEND;
IFCFG(0x00106);
e_config->desklock_use_custom_screensaver = 0;
e_config->desklock_custom_screensaver_cmd = NULL;
IFCFGEND;
#if 0 /* example of new config */ #if 0 /* example of new config */
IFCFG(0x0090); /* the version # where this value(s) was introduced */ IFCFG(0x0090); /* the version # where this value(s) was introduced */
e_config->new_value = 10; /* set the value(s) */ 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_login_box_zone, -2, 1000);
E_CONFIG_LIMIT(e_config->desklock_autolock, 0, 1); 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_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_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_restore, 0, 1);
E_CONFIG_LIMIT(e_config->display_res_width, 1, 8192); E_CONFIG_LIMIT(e_config->display_res_width, 1, 8192);
E_CONFIG_LIMIT(e_config->display_res_height, 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_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->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->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); 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 /* 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 * 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_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
#define E_EVAS_ENGINE_DEFAULT 0 #define E_EVAS_ENGINE_DEFAULT 0
@ -231,7 +231,9 @@ struct _E_Config
int desklock_use_timeout; // GUI int desklock_use_timeout; // GUI
double desklock_timeout; // GUI double desklock_timeout; // GUI
int desklock_disable_screensaver; // 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_restore; // GUI
int display_res_width; // GUI int display_res_width; // GUI
int display_res_height; // 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 Ecore_Event_Handler *_e_desklock_exit_handler = NULL;
static pid_t _e_desklock_child_pid = -1; static pid_t _e_desklock_child_pid = -1;
#endif #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_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_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_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_passwd_update();
static void _e_desklock_backspace(); static void _e_desklock_backspace();
@ -77,17 +80,25 @@ static char *_desklock_auth_get_current_host(void);
EAPI int EAPI int
e_desklock_init(void) e_desklock_init(void)
{ {
if (e_config->desklock_disable_screensaver) if (e_config->desklock_disable_screensaver)
ecore_x_screensaver_timeout_set(0); ecore_x_screensaver_timeout_set(0);
else else
{ {
if (e_config->desklock_use_timeout) 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) if (e_config->desklock_background)
e_filereg_register(e_config->desklock_background); e_filereg_register(e_config->desklock_background);
return 1; return 1;
} }
@ -110,9 +121,23 @@ e_desklock_show(void)
E_Zone *current_zone; E_Zone *current_zone;
int zone_counter; int zone_counter;
int total_zone_num; 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 #ifdef HAVE_PAM
if (e_config->desklock_auth_method == 1) if (e_config->desklock_auth_method == 1)
{ {
@ -323,8 +348,14 @@ e_desklock_hide(void)
{ {
E_Desklock_Popup_Data *edp; 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) if (edd->elock_grab_break_wnd)
ecore_x_window_show(edd->elock_grab_break_wnd); ecore_x_window_show(edd->elock_grab_break_wnd);
while (edd->elock_wnd_list) while (edd->elock_wnd_list)
@ -735,3 +766,30 @@ _desklock_auth_get_current_host(void)
return strdup("localhost"); return strdup("localhost");
} }
#endif #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_DESKLOCK_BACKGROUND "theme_desklock_background"
#define DEF_THEME_BACKGROUND "theme_background" #define DEF_THEME_BACKGROUND "theme_background"
static void *_create_data(E_Config_Dialog *cfd); static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); 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); 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; // local variable
int specific_lb_zone_backup; // used to have smart iface int specific_lb_zone_backup; // used to have smart iface
int use_custom_screensaver;
char *custom_screensaver_cmd;
int zone_count; // local variable; int zone_count; // local variable;
int bg_mode; // config int bg_mode; // config
@ -290,7 +292,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata->autolock = e_config->desklock_autolock; cfdata->autolock = e_config->desklock_autolock;
cfdata->use_timeout = e_config->desklock_use_timeout; 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 */ /* should be taken from e_config */
//cfdata->login_box_on_zone = -1; //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; cfdata->auth_method = e_config->desklock_auth_method;
#endif #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 //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_personal_passwd = evas_stringshare_add(cfdata->desklock_passwd_cp);
e_config->desklock_autolock = cfdata->autolock; e_config->desklock_autolock = cfdata->autolock;
e_config->desklock_use_timeout = cfdata->use_timeout; e_config->desklock_use_timeout = cfdata->use_timeout;
e_config->desklock_timeout = cfdata->timeout; e_config->desklock_timeout = cfdata->timeout * 60;
#ifdef HAVE_PAM #ifdef HAVE_PAM
e_config->desklock_auth_method = cfdata->auth_method; e_config->desklock_auth_method = cfdata->auth_method;
#endif #endif
if (e_config->desklock_use_timeout) 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(); e_config_save_queue();
return 1; 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")); ob = e_widget_label_add(evas, _("Time until screensaver starts"));
e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get()); e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
e_widget_framelist_object_append(of, ob); e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"), ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"),
1.0, 600.0, 1.0, 90.0,
1.0, 0, &(cfdata->timeout), NULL, 1.0, 0, &(cfdata->timeout), NULL,
200); 200);
e_widget_framelist_object_append(of, ob); 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_autolock = cfdata->autolock;
e_config->desklock_use_timeout = cfdata->use_timeout; e_config->desklock_use_timeout = cfdata->use_timeout;
e_config->desklock_timeout = cfdata->timeout; e_config->desklock_timeout = cfdata->timeout * 60;
#ifdef HAVE_PAM #ifdef HAVE_PAM
e_config->desklock_auth_method = cfdata->auth_method; e_config->desklock_auth_method = cfdata->auth_method;
#endif #endif
if (e_config->desklock_use_timeout) 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(); e_config_save_queue();
return 1; 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()); 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_disabled_set(ob, !ecore_x_screensaver_event_available_get());
e_widget_framelist_object_append(of, ob); 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")); ob = e_widget_label_add(evas, _("Time until screensaver starts"));
e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get()); e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
e_widget_framelist_object_append(of, ob); e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"), ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"),
1.0, 600.0, 1.0, 90.0,
1.0, 0, &(cfdata->timeout), NULL, 1.0, 0, &(cfdata->timeout), NULL,
100); 100);
e_widget_framelist_object_append(of, ob); 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 #else
e_widget_table_object_append(ot, of, 1, 2, 1, 1 ,1 ,1 ,1 ,1); e_widget_table_object_append(ot, of, 1, 2, 1, 1 ,1 ,1 ,1 ,1);
#endif #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); e_dialog_resizable_set(cfd->dia, 0);
return ot; 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)) 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_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"); ecore_exe_tag_set(_e_intl_input_method_exec,"E/im_exec");
if ( !_e_intl_input_method_exec || if ( !_e_intl_input_method_exec ||

View File

@ -7816,3 +7816,83 @@ break;
#elif (TYPE == E_REMOTE_IN) #elif (TYPE == E_REMOTE_IN)
#endif #endif
#undef HDL #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_HIBERNATE 376
#define E_IPC_OP_REBOOT 377 #define E_IPC_OP_REBOOT 377
#define E_IPC_OP_SUSPEND 378 #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->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; return 1;
} }

View File

@ -229,7 +229,9 @@ e_util_head_exec(int head, const char *cmd)
strcpy(buf, penv_display); strcpy(buf, penv_display);
ok = 1; ok = 1;
e_util_library_path_strip();
exe = ecore_exe_run(cmd, NULL); exe = ecore_exe_run(cmd, NULL);
e_util_library_path_restore();
if (!exe) if (!exe)
{ {
e_util_dialog_show(_("Run Error"), e_util_dialog_show(_("Run Error"),
@ -780,6 +782,32 @@ e_util_file_time_get(time_t ftime)
return s; 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 */ /* local subsystem functions */
static void static void
_e_util_container_fake_mouse_up_cb(void *data) _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_shell_env_path_eval(char *path);
EAPI char *e_util_size_string_get(off_t size); EAPI char *e_util_size_string_get(off_t size);
EAPI char *e_util_file_time_get(time_t ftime); 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
#endif #endif