Ravenlock's combined dpms/screensaver patches and new config dialogs.

Nice work :)


SVN revision: 28346
This commit is contained in:
Christopher Michael 2007-02-13 16:33:35 +00:00
parent d0e3a150b5
commit 7a3f2f0ed2
19 changed files with 838 additions and 168 deletions

View File

@ -138,8 +138,12 @@ e_int_config_cfgdialogs.h \
e_int_config_color_classes.h \
e_int_config_mime.h \
e_int_config_mime_edit.h \
e_int_config_screensaver.h \
e_int_config_dpms.h \
e_exebuf.h \
e_desklock.h \
e_screensaver.h \
e_dpms.h \
e_int_config_modules.h \
e_exehist.h \
e_color_class.h \
@ -295,8 +299,12 @@ e_int_config_imc_import.c \
e_int_config_color_classes.c \
e_int_config_mime.c \
e_int_config_mime_edit.c \
e_int_config_screensaver.c \
e_int_config_dpms.c \
e_exebuf.c \
e_desklock.c \
e_screensaver.c \
e_dpms.c \
e_int_config_modules.c \
e_exehist.c \
e_color_class.c \

View File

@ -41,7 +41,6 @@ static E_Config_DD *_e_config_gadcon_client_edd = NULL;
static E_Config_DD *_e_config_shelf_edd = NULL;
static E_Config_DD *_e_config_mime_icon_edd = NULL;
/* externally accessible functions */
EAPI int
e_config_init(void)
@ -168,7 +167,7 @@ e_config_init(void)
E_CONFIG_VAL(D, T, enabled, UCHAR);
_e_config_font_default_edd = E_CONFIG_DD_NEW("E_Font_Default",
E_Font_Default);
E_Font_Default);
#undef T
#undef D
#define T E_Font_Default
@ -185,7 +184,8 @@ e_config_init(void)
#define D _e_config_font_fallback_edd
E_CONFIG_VAL(D, T, name, STR);
_e_config_bindings_mouse_edd = E_CONFIG_DD_NEW("E_Config_Binding_Mouse", E_Config_Binding_Mouse);
_e_config_bindings_mouse_edd = E_CONFIG_DD_NEW("E_Config_Binding_Mouse",
E_Config_Binding_Mouse);
#undef T
#undef D
#define T E_Config_Binding_Mouse
@ -197,7 +197,8 @@ e_config_init(void)
E_CONFIG_VAL(D, T, button, UCHAR);
E_CONFIG_VAL(D, T, any_mod, UCHAR);
_e_config_bindings_key_edd = E_CONFIG_DD_NEW("E_Config_Binding_Key", E_Config_Binding_Key);
_e_config_bindings_key_edd = E_CONFIG_DD_NEW("E_Config_Binding_Key",
E_Config_Binding_Key);
#undef T
#undef D
#define T E_Config_Binding_Key
@ -209,7 +210,8 @@ e_config_init(void)
E_CONFIG_VAL(D, T, params, STR);
E_CONFIG_VAL(D, T, any_mod, UCHAR);
_e_config_bindings_signal_edd = E_CONFIG_DD_NEW("E_Config_Binding_Signal", E_Config_Binding_Signal);
_e_config_bindings_signal_edd = E_CONFIG_DD_NEW("E_Config_Binding_Signal",
E_Config_Binding_Signal);
#undef T
#undef D
#define T E_Config_Binding_Signal
@ -222,7 +224,8 @@ e_config_init(void)
E_CONFIG_VAL(D, T, action, STR);
E_CONFIG_VAL(D, T, params, STR);
_e_config_bindings_wheel_edd = E_CONFIG_DD_NEW("E_Config_Binding_Wheel", E_Config_Binding_Wheel);
_e_config_bindings_wheel_edd = E_CONFIG_DD_NEW("E_Config_Binding_Wheel",
E_Config_Binding_Wheel);
#undef T
#undef D
#define T E_Config_Binding_Wheel
@ -311,7 +314,8 @@ e_config_init(void)
E_CONFIG_VAL(D, T, b3, INT);
E_CONFIG_VAL(D, T, a3, INT);
_e_config_mime_icon_edd = E_CONFIG_DD_NEW("E_Config_Mime_Icon", E_Config_Mime_Icon);
_e_config_mime_icon_edd = E_CONFIG_DD_NEW("E_Config_Mime_Icon",
E_Config_Mime_Icon);
#undef T
#undef D
#define T E_Config_Mime_Icon
@ -474,18 +478,31 @@ 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_autolock, INT);
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, desklock_autolock_screensaver, INT);
E_CONFIG_VAL(D, T, desklock_autolock_idle, INT);
E_CONFIG_VAL(D, T, desklock_autolock_idle_timeout, DOUBLE);
E_CONFIG_VAL(D, T, desklock_use_custom_desklock, INT);
E_CONFIG_VAL(D, T, desklock_custom_desklock_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);
E_CONFIG_VAL(D, T, display_res_hz, INT);
E_CONFIG_VAL(D, T, display_res_rotation, INT);
E_CONFIG_VAL(D, T, screensaver_enable, INT);
E_CONFIG_VAL(D, T, screensaver_timeout, INT);
E_CONFIG_VAL(D, T, screensaver_interval, INT);
E_CONFIG_VAL(D, T, screensaver_blanking, INT);
E_CONFIG_VAL(D, T, screensaver_expose, INT);
E_CONFIG_VAL(D, T, dpms_enable, INT);
E_CONFIG_VAL(D, T, dpms_standby_enable, INT);
E_CONFIG_VAL(D, T, dpms_suspend_enable, INT);
E_CONFIG_VAL(D, T, dpms_off_enable, INT);
E_CONFIG_VAL(D, T, dpms_standby_timeout, INT);
E_CONFIG_VAL(D, T, dpms_suspend_timeout, INT);
E_CONFIG_VAL(D, T, dpms_off_timeout, INT);
E_CONFIG_VAL(D, T, border_raise_on_mouse_action, INT);
E_CONFIG_VAL(D, T, border_raise_on_focus, INT);
E_CONFIG_VAL(D, T, desk_flip_wrap, INT);
@ -678,10 +695,9 @@ e_config_init(void)
e_config->desklock_background = NULL;
e_config->desklock_auth_method = 0;
e_config->desklock_login_box_zone = -1;
e_config->desklock_autolock = 0;
e_config->desklock_use_timeout = 0;
e_config->desklock_timeout = 300.0;
e_config->desklock_disable_screensaver = 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;
@ -759,24 +775,15 @@ e_config_init(void)
//_restore_defaults_cb function
CFG_MOUSEBIND(E_BINDING_CONTEXT_BORDER, 1,
E_BINDING_MODIFIER_ALT, 0,
"window_move", NULL);
E_BINDING_MODIFIER_ALT, 0, "window_move", NULL);
CFG_MOUSEBIND(E_BINDING_CONTEXT_BORDER, 2,
E_BINDING_MODIFIER_ALT, 0,
"window_resize", NULL);
E_BINDING_MODIFIER_ALT, 0, "window_resize", NULL);
CFG_MOUSEBIND(E_BINDING_CONTEXT_BORDER, 3,
E_BINDING_MODIFIER_ALT, 0,
"window_menu", NULL);
CFG_MOUSEBIND(E_BINDING_CONTEXT_ZONE, 1,
0, 0,
"menu_show", "main");
CFG_MOUSEBIND(E_BINDING_CONTEXT_ZONE, 2,
0, 0,
"menu_show", "clients");
E_BINDING_MODIFIER_ALT, 0, "window_menu", NULL);
CFG_MOUSEBIND(E_BINDING_CONTEXT_ZONE, 1, 0, 0, "menu_show", "main");
CFG_MOUSEBIND(E_BINDING_CONTEXT_ZONE, 2, 0, 0, "menu_show", "clients");
#ifdef ENABLE_FAVORITES
CFG_MOUSEBIND(E_BINDING_CONTEXT_ZONE, 3,
0, 0,
"menu_show", "favorites");
CFG_MOUSEBIND(E_BINDING_CONTEXT_ZONE, 3, 0, 0, "menu_show", "favorites");
#endif
}
{
@ -1225,8 +1232,8 @@ e_config_init(void)
IFCFGEND;
IFCFG(0x00106);
e_config->desklock_use_custom_screensaver = 0;
e_config->desklock_custom_screensaver_cmd = NULL;
e_config->desklock_use_custom_desklock = 0;
e_config->desklock_custom_desklock_cmd = NULL;
IFCFGEND;
IFCFG(0x0107); /* the version # where this value(s) was introduced */
@ -1298,6 +1305,21 @@ e_config_init(void)
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 = 0;
e_config->dpms_suspend_timeout = 0;
e_config->dpms_off_timeout = 0;
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;
e_config->config_version = E_CONFIG_FILE_VERSION;
#if 0 /* example of new config */
@ -1382,11 +1404,10 @@ e_config_init(void)
E_CONFIG_LIMIT(e_config->cfgdlg_default_mode, 0, 1);
E_CONFIG_LIMIT(e_config->font_hinting, 0, 2);
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, 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->desklock_autolock_screensaver, 0, 1);
E_CONFIG_LIMIT(e_config->desklock_autolock_idle, 0, 1);
E_CONFIG_LIMIT(e_config->desklock_autolock_idle_timeout, 1.0, 5400.0);
E_CONFIG_LIMIT(e_config->desklock_use_custom_desklock, 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);
@ -1398,6 +1419,19 @@ e_config_init(void)
E_CONFIG_LIMIT(e_config->remember_internal_windows, 0, 1);
E_CONFIG_LIMIT(e_config->desk_auto_switch, 0, 1);
E_CONFIG_LIMIT(e_config->dpms_enable, 0, 1);
E_CONFIG_LIMIT(e_config->dpms_standby_enable, 0, 1);
E_CONFIG_LIMIT(e_config->dpms_suspend_enable, 0, 1);
E_CONFIG_LIMIT(e_config->dpms_off_enable, 0, 1);
E_CONFIG_LIMIT(e_config->dpms_standby_timeout, 0, 5400);
E_CONFIG_LIMIT(e_config->dpms_suspend_timeout, 0, 5400);
E_CONFIG_LIMIT(e_config->dpms_off_timeout, 0, 5400);
E_CONFIG_LIMIT(e_config->screensaver_timeout, 0, 5400);
E_CONFIG_LIMIT(e_config->screensaver_interval, 0, 5400);
E_CONFIG_LIMIT(e_config->screensaver_blanking, 0, 2);
E_CONFIG_LIMIT(e_config->screensaver_expose, 0, 2);
/* FIXME: disabled auto apply because it causes problems */
e_config->cfgdlg_auto_apply = 0;
/* FIXME: desklock personalized password id disabled for security reasons */
@ -1983,7 +2017,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);
if (e_config->desklock_custom_desklock_cmd) evas_stringshare_del(e_config->desklock_custom_desklock_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 0x0108
#define E_CONFIG_FILE_GENERATION 0x0109
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
#define E_EVAS_ENGINE_DEFAULT 0
@ -227,12 +227,25 @@ struct _E_Config
const char *desklock_background; // GUI
int desklock_auth_method; // GUI
int desklock_login_box_zone; // GUI
int desklock_autolock; // GUI
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 desklock_autolock_screensaver; // GUI
int desklock_autolock_idle; // GUI
double desklock_autolock_idle_timeout; // GUI
int desklock_use_custom_desklock; //GUI
const char *desklock_custom_desklock_cmd; // GUI
int screensaver_enable;
int screensaver_timeout;
int screensaver_interval;
int screensaver_blanking;
int screensaver_expose;
int dpms_enable;
int dpms_standby_enable;
int dpms_standby_timeout;
int dpms_suspend_enable;
int dpms_suspend_timeout;
int dpms_off_enable;
int dpms_off_timeout;
int display_res_restore; // GUI
int display_res_width; // GUI

View File

@ -412,6 +412,8 @@ _e_configure_fill_cat_list(void *data)
_e_configure_item_add(cat, _("Virtual Desktops"), "enlightenment/desktops", e_int_config_desks);
_e_configure_item_add(cat, _("Screen Resolution"), "enlightenment/screen_resolution", e_int_config_display);
_e_configure_item_add(cat, _("Screen Lock"), "enlightenment/desklock", e_int_config_desklock);
_e_configure_item_add(cat, _("Screen Saver"), "enlightenment/screensaver", e_int_config_screensaver);
_e_configure_item_add(cat, _("DPMS Settings"), "enlightenment/dpms", e_int_config_dpms);
cat = _e_configure_category_add(eco, _("Keyboard & Mouse"), "enlightenment/behavior");
_e_configure_item_add(cat, _("Key Bindings"), "enlightenment/keys", e_int_config_keybindings);

View File

@ -52,8 +52,10 @@ 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;
static Ecore_Exe *_e_custom_desklock_exe = NULL;
static Ecore_Event_Handler *_e_custom_desklock_exe_handler = NULL;
static Ecore_Timer *_e_desklock_idle_timer = NULL;
static int _e_desklock_user_idle = 0;
/***********************************************************************/
@ -62,7 +64,8 @@ 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 int _e_desklock_cb_custom_desklock_exit(void *data, int type, void *event);
static int _e_desklock_cb_idle_timer(void *data, int type, void *event);
static void _e_desklock_passwd_update();
static void _e_desklock_backspace();
@ -84,20 +87,10 @@ 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);
}
/*
* 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);
/* A timer to tick every second, watching for an idle user */
_e_desklock_idle_timer = ecore_timer_add(1.0,
_e_desklock_cb_idle_timer,
NULL);
if (e_config->desklock_background)
e_filereg_register(e_config->desklock_background);
@ -125,6 +118,18 @@ e_desklock_show(void)
int zone_counter;
int total_zone_num;
if (_e_custom_desklock_exe) return 0;
if (e_config->desklock_use_custom_desklock)
{
_e_custom_desklock_exe_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
_e_desklock_cb_custom_desklock_exit,
NULL);
e_util_library_path_strip();
_e_custom_desklock_exe = ecore_exe_run(e_config->desklock_custom_desklock_cmd, NULL);
e_util_library_path_restore();
return 1;
}
#ifndef HAVE_PAM
e_util_dialog_show(_("Error - no PAM support"),
@ -132,18 +137,6 @@ e_desklock_show(void)
"desk locking is disabled."));
return 0;
#endif
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;
@ -357,16 +350,17 @@ e_desklock_hide(void)
{
E_Desklock_Popup_Data *edp;
if ((!edd) && (!_e_custom_saver_exe)) return;
if ((!edd) && (!_e_custom_desklock_exe)) return;
if (e_config->desklock_use_custom_screensaver)
if (e_config->desklock_use_custom_desklock)
{
_e_custom_saver_exe = NULL;
_e_custom_desklock_exe = NULL;
return;
}
if (edd->elock_grab_break_wnd)
ecore_x_window_show(edd->elock_grab_break_wnd);
while (edd->elock_wnd_list)
{
edp = edd->elock_wnd_list->data;
@ -778,28 +772,65 @@ _desklock_auth_get_current_host(void)
#endif
static int
_e_desklock_cb_custom_saver_exit(void *data, int type, void *event)
_e_desklock_cb_custom_desklock_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->exe != _e_custom_desklock_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;
}
static int
_e_desklock_cb_idle_timer(void *data, int type, void *event)
{
static double time_of_last_event = 0;
static unsigned int xtime_of_last_user_activity = 0;
if ( ecore_x_current_user_activity_time_get() > xtime_of_last_user_activity )
{
xtime_of_last_user_activity = ecore_x_current_user_activity_time_get();
time_of_last_event = ecore_time_get();
}
if (e_config->desklock_autolock_idle)
{
/* If a desklock is already up, bail */
if ((_e_custom_desklock_exe) || (edd)) return 1;
/* If we have exceeded our idle time... */
double t = ecore_time_get();
if (t - time_of_last_event >= e_config->desklock_autolock_idle_timeout)
{
/*
* Unfortunately, not all "desklocks" stay up for as long as
* the user is idle or until it is unlocked.
*
* 'xscreensaver-command -lock' for example sends a command
* to xscreensaver and then terminates. So, we have another
* check (_e_desklock_user_idle) which lets us know that we
* have locked the screen due to idleness.
*/
if (!_e_desklock_user_idle)
{
_e_desklock_user_idle = 1;
e_desklock_show();
}
}
else
{
_e_desklock_user_idle = 0;
}
}
/* Make sure our timer persists. */
return 1;
}

25
src/bin/e_dpms.c Normal file
View File

@ -0,0 +1,25 @@
/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#include "e.h"
EAPI int
e_dpms_init(void)
{
int standby=0, suspend=0, off=0;
ecore_x_dpms_enabled_set(e_config->dpms_enable);
if (e_config->dpms_standby_enable)
standby = e_config->dpms_standby_timeout;
if (e_config->dpms_suspend_enable)
suspend = e_config->dpms_suspend_timeout;
if (e_config->dpms_off_enable)
off = e_config->dpms_off_timeout;
ecore_x_dpms_timeouts_set(standby, suspend, off);
return 1;
}

9
src/bin/e_dpms.h Normal file
View File

@ -0,0 +1,9 @@
#ifdef E_TYPEDEFS
#else
#ifndef E_DPMS_H
#define E_DPMS_H
EAPI int e_dpms_init(void);
#endif
#endif

View File

@ -102,6 +102,8 @@
#include "e_int_config_winlist.h"
#include "e_int_config_display.h"
#include "e_int_config_desklock.h"
#include "e_int_config_screensaver.h"
#include "e_int_config_dpms.h"
#include "e_int_config_exebuf.h"
#include "e_int_config_apps.h"
#include "e_int_config_cfgdialogs.h"
@ -113,6 +115,8 @@
#include "e_int_config_mime_edit.h"
#include "e_exebuf.h"
#include "e_desklock.h"
#include "e_screensaver.h"
#include "e_dpms.h"
#include "e_int_config_modules.h"
#include "e_exehist.h"
#include "e_color_class.h"

View File

@ -51,16 +51,16 @@ struct _E_Config_Dialog_Data
char *desklock_passwd_cp;
int show_password; // local
int autolock_screensaver;
int autolock; // in e_config;
int use_timeout; // in e_config;
double timeout; // in e_config;
int login_box_zone; // in e_config;
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 use_custom_desklock;
char *custom_desklock_cmd;
int zone_count; // local variable;
@ -283,9 +283,9 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata->desklock_passwd_cp = strdup("");
}
cfdata->autolock = e_config->desklock_autolock;
cfdata->use_timeout = e_config->desklock_use_timeout;
cfdata->timeout = e_config->desklock_timeout / 60;
cfdata->autolock_screensaver = e_config->desklock_autolock_screensaver;
cfdata->autolock = e_config->desklock_autolock_idle;
cfdata->timeout = e_config->desklock_autolock_idle_timeout / 60;
/* should be taken from e_config */
//cfdata->login_box_on_zone = -1;
@ -341,9 +341,9 @@ _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);
cfdata->use_custom_desklock = e_config->desklock_use_custom_desklock;
if (e_config->desklock_custom_desklock_cmd)
cfdata->custom_desklock_cmd = strdup(e_config->desklock_custom_desklock_cmd);
//vertical_lb_align = e_config->desklock_login
}
@ -378,17 +378,14 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
evas_stringshare_del(e_config->desklock_personal_passwd);
}
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 * 60;
e_config->desklock_autolock_screensaver = cfdata->autolock_screensaver;
e_config->desklock_autolock_idle = cfdata->autolock;
e_config->desklock_autolock_idle_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_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;
@ -403,15 +400,16 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
of = e_widget_framelist_add(evas, _("Automatic Locking"), 0);
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, _("Lock when X screensaver activates"),
&(cfdata->autolock_screensaver));
e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
e_widget_framelist_object_append(of, ob);
ob = e_widget_check_add(evas, _("Lock when the screensaver starts"), &(cfdata->autolock));
ob = e_widget_check_add(evas, _("Lock when idle time exceeded"), &(cfdata->autolock));
e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
e_widget_framelist_object_append(of, ob);
ob = e_widget_label_add(evas, _("Time until screensaver starts"));
ob = e_widget_label_add(evas, _("Idle time to exceed"));
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 minutes"),
@ -458,26 +456,21 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
else
e_config->desklock_login_box_zone = LOGINBOX_SHOW_ALL_SCREENS;
e_config->desklock_autolock = cfdata->autolock;
e_config->desklock_use_timeout = cfdata->use_timeout;
e_config->desklock_timeout = cfdata->timeout * 60;
e_config->desklock_autolock_screensaver = cfdata->autolock_screensaver;
e_config->desklock_autolock_idle = cfdata->autolock;
e_config->desklock_autolock_idle_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);
e_config->desklock_use_custom_screensaver = cfdata->use_custom_screensaver;
if (cfdata->custom_screensaver_cmd)
e_config->desklock_use_custom_desklock = cfdata->use_custom_desklock;
if (cfdata->custom_desklock_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);
if (e_config->desklock_custom_desklock_cmd)
evas_stringshare_del(e_config->desklock_custom_desklock_cmd);
e_config->desklock_custom_desklock_cmd = evas_stringshare_add(cfdata->custom_desklock_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;
}
@ -709,18 +702,15 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
of = e_widget_framelist_add(evas, _("Automatic Locking"), 0);
e_widget_disabled_set(of, !ecore_x_screensaver_event_available_get());
ob = e_widget_check_add(evas, _("Enable X screensaver"), &(cfdata->use_timeout));
ob = e_widget_check_add(evas, _("Lock when X screensaver activates"),
&(cfdata->autolock_screensaver));
e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
e_widget_framelist_object_append(of, ob);
ob = e_widget_check_add(evas, _("Lock when the screensaver starts"), &(cfdata->autolock));
e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
ob = e_widget_check_add(evas, _("Lock when idle time exceeded"), &(cfdata->autolock));
e_widget_framelist_object_append(of, ob);
ob = e_widget_label_add(evas, _("Time until screensaver starts"));
e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
ob = e_widget_label_add(evas, _("Idle time to exceed"));
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"),
1.0, 90.0,
@ -734,15 +724,16 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
#endif
/*
* Allow Custom Screen Saver
* Allow Custom Desklock
* Useful, for example, for those of us who prefer
* to use things like xscreensaver, kscreesaver, etc...
* and force them to lock with a custom command.
*/
of = e_widget_framelist_add(evas, _("Custom Screensaver"), 0);
ob = e_widget_check_add(evas, _("Use custom screensaver/desklock"),
&(cfdata->use_custom_screensaver));
of = e_widget_framelist_add(evas, _("Custom Desklock"), 0);
ob = e_widget_check_add(evas, _("Use custom desklock"),
&(cfdata->use_custom_desklock));
e_widget_framelist_object_append(of, ob);
ob = e_widget_entry_add(evas, &(cfdata->custom_screensaver_cmd));
ob = e_widget_entry_add(evas, &(cfdata->custom_desklock_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);

305
src/bin/e_int_config_dpms.c Normal file
View File

@ -0,0 +1,305 @@
#include "e.h"
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);
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas,
E_Config_Dialog_Data *cfdata);
static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas,
E_Config_Dialog_Data *cfdata);
static void _cb_standby_slider_change(void *data, Evas_Object *obj);
static void _cb_suspend_slider_change(void *data, Evas_Object *obj);
static void _cb_off_slider_change(void *data, Evas_Object *obj);
struct _E_Config_Dialog_Data
{
E_Config_Dialog *cfd;
Evas_Object *standby_slider;
Evas_Object *suspend_slider;
Evas_Object *off_slider;
int enable_dpms;
int enable_standby;
int enable_suspend;
int enable_off;
/*
* The following timeouts are represented as minutes
* while the underlying e_config variables are in seconds
*/
double standby_timeout;
double suspend_timeout;
double off_timeout;
};
static E_Dialog *dpms_dialog = NULL;
static void
_cb_dpms_dialog_ok(void *data, E_Dialog *dia)
{
e_object_del(E_OBJECT(dpms_dialog));
dpms_dialog = NULL;
}
static int
_e_int_config_dpms_capable()
{
if (ecore_x_dpms_capable()) return 1;
if (dpms_dialog) e_object_del(E_OBJECT(dpms_dialog));
dpms_dialog = e_dialog_new(e_container_current_get(e_manager_current_get()), "E", "_dpms_dialog");
if (!dpms_dialog) return 0;
e_dialog_title_set(dpms_dialog, _("Display Power Management Signaling"));
e_dialog_text_set(dpms_dialog, _("The current display server does not <br>"
"have the DPMS extension."));
e_dialog_icon_set(dpms_dialog, "enlightenment/dpms", 64);
e_dialog_button_add(dpms_dialog, _("Ok"), NULL, _cb_dpms_dialog_ok, NULL);
e_dialog_button_focus_num(dpms_dialog, 1);
e_win_centered_set(dpms_dialog->win, 1);
e_dialog_show(dpms_dialog);
return 0;
}
EAPI E_Config_Dialog *
e_int_config_dpms(E_Container *con)
{
E_Config_Dialog *cfd;
E_Config_Dialog_View *v;
if ((e_config_dialog_find("E", "_config_dpms_dialog")) ||
(!_e_int_config_dpms_capable()))
return NULL;
v = E_NEW(E_Config_Dialog_View, 1);
v->create_cfdata = _create_data;
v->free_cfdata = _free_data;
v->basic.apply_cfdata = _advanced_apply_data;
v->basic.create_widgets = _advanced_create_widgets;
v->override_auto_apply = 1;
cfd = e_config_dialog_new(con, _("DPMS Settings"), "E",
"_config_dpms_dialog", "enlightenment/dpms",
0, v, NULL);
return cfd;
}
static void
_fill_data(E_Config_Dialog_Data *cfdata)
{
cfdata->enable_dpms = e_config->dpms_enable;
cfdata->enable_standby = e_config->dpms_standby_enable;
cfdata->standby_timeout = e_config->dpms_standby_timeout / 60;
cfdata->enable_suspend = e_config->dpms_suspend_enable;
cfdata->suspend_timeout = e_config->dpms_suspend_timeout / 60;
cfdata->enable_off = e_config->dpms_off_enable;
cfdata->off_timeout = e_config->dpms_off_timeout / 60;
}
static void *
_create_data(E_Config_Dialog *cfd)
{
E_Config_Dialog_Data *cfdata;
cfdata = E_NEW(E_Config_Dialog_Data, 1);
cfdata->cfd = cfd;
cfdata->standby_slider = NULL;
cfdata->suspend_slider = NULL;
cfdata->off_slider = NULL;
_fill_data(cfdata);
return cfdata;
}
static void
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
if (!cfdata) return;
cfdata->standby_slider=NULL;
cfdata->suspend_slider=NULL;
cfdata->off_slider=NULL;
E_FREE(cfdata);
}
static int
_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
e_config->dpms_enable = cfdata->enable_dpms;
e_config->dpms_standby_enable = cfdata->enable_standby;
e_config->dpms_suspend_enable = cfdata->enable_suspend;
e_config->dpms_off_enable = cfdata->enable_off;
e_config->dpms_standby_timeout = cfdata->standby_timeout * 60;
e_config->dpms_suspend_timeout = cfdata->suspend_timeout * 60;
e_config->dpms_off_timeout = cfdata->off_timeout * 60;
e_dpms_init();
e_config_save_queue();
}
static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
/*
* NOTE: Since the BASIC interface does not allow you to manipulate
* the suspend and off features, I have decided to have them disabled
* when applying changes from this dialog.
*
* I do this because the timeouts must always satisfy the following:
* standby <= suspend <= off
* and if you use the basic dialog, and increase the standby timeout
* you might very well unknowingly push it right up to the off timout.
* at which point, you monitor will turn off, instead of going into
* standby. Which could be annoying.
*/
cfdata->enable_suspend = 0;
cfdata->enable_off = 0;
_apply_data(cfd, cfdata);
return 1;
}
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *of, *ob;
o = e_widget_list_add(evas, 0, 0);
ob = e_widget_check_add(evas, _("Enable DPMS"), &(cfdata->enable_dpms));
e_widget_list_object_append(o, ob, 1, 1 ,0);
of = e_widget_framelist_add(evas, _("DPMS Timer(s)"), 0);
ob = e_widget_check_add(evas, _("Standby"), &(cfdata->enable_standby));
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"),
1.0, 90.0, 1.0, 0, &(cfdata->standby_timeout),
NULL, 200);
e_widget_on_change_hook_set(ob, _cb_standby_slider_change, cfdata);
cfdata->standby_slider = ob;
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
e_dialog_resizable_set(cfd->dia, 0);
return o;
}
/* advanced window */
static int
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
_apply_data(cfd, cfdata);
return 1;
}
static Evas_Object *
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *of, *ob;
E_Radio_Group *rg;
o = e_widget_list_add(evas, 0, 0);
ob = e_widget_check_add(evas, _("Enable DPMS"), &(cfdata->enable_dpms));
e_widget_list_object_append(o, ob, 1, 1, 0);
of = e_widget_framelist_add(evas, _("DPMS Timer(s)"), 0);
ob = e_widget_check_add(evas, _("Standby"), &(cfdata->enable_standby));
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 1.0, 90.0, 1.0, 0,
&(cfdata->standby_timeout), NULL, 200);
e_widget_on_change_hook_set(ob, _cb_standby_slider_change, cfdata);
cfdata->standby_slider = ob;
e_widget_framelist_object_append(of, ob);
ob = e_widget_check_add(evas, _("Suspend"), &(cfdata->enable_suspend));
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 1.0, 90.0, 1.0, 0,
&(cfdata->suspend_timeout), NULL, 200);
e_widget_on_change_hook_set(ob, _cb_suspend_slider_change, cfdata);
cfdata->suspend_slider = ob;
e_widget_framelist_object_append(of, ob);
ob = e_widget_check_add(evas, _("Off"), &(cfdata->enable_off));
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 1.0, 90.0, 1.0, 0,
&(cfdata->off_timeout), NULL, 200);
e_widget_on_change_hook_set(ob, _cb_off_slider_change, cfdata);
cfdata->off_slider = ob;
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
e_dialog_resizable_set(cfd->dia, 0);
return o;
}
/* general functionality/callbacks */
static void
_cb_standby_slider_change(void *data, Evas_Object *obj)
{
E_Config_Dialog_Data *cfdata = data;
/* standby-slider */
if (cfdata->standby_timeout > cfdata->suspend_timeout)
{
cfdata->suspend_timeout = cfdata->standby_timeout;
if (cfdata->suspend_slider)
e_widget_slider_value_double_set(cfdata->suspend_slider, cfdata->suspend_timeout);
if (cfdata->suspend_timeout > cfdata->off_timeout)
{
cfdata->off_timeout = cfdata->suspend_timeout;
if (cfdata->off_slider)
e_widget_slider_value_double_set(cfdata->off_slider, cfdata->off_timeout);
}
}
}
static void
_cb_suspend_slider_change(void *data, Evas_Object *obj)
{
E_Config_Dialog_Data *cfdata = data;
/* suspend-slider */
if (cfdata->suspend_timeout > cfdata->off_timeout)
{
cfdata->off_timeout = cfdata->suspend_timeout;
if (cfdata->off_slider)
e_widget_slider_value_double_set(cfdata->off_slider, cfdata->off_timeout);
}
if (cfdata->suspend_timeout < cfdata->standby_timeout)
{
cfdata->standby_timeout = cfdata->suspend_timeout;
if (cfdata->standby_slider)
e_widget_slider_value_double_set(cfdata->standby_slider, cfdata->standby_timeout);
}
}
static void
_cb_off_slider_change(void *data, Evas_Object *obj)
{
E_Config_Dialog_Data *cfdata = data;
/* off-slider */
if (cfdata->off_timeout < cfdata->suspend_timeout)
{
cfdata->suspend_timeout = cfdata->off_timeout;
if (cfdata->suspend_slider)
e_widget_slider_value_double_set(cfdata->suspend_slider, cfdata->suspend_timeout);
if (cfdata->suspend_timeout < cfdata->standby_timeout)
{
cfdata->standby_timeout = cfdata->suspend_timeout;
if (cfdata->standby_slider)
e_widget_slider_value_double_set(cfdata->standby_slider, cfdata->standby_timeout);
}
}
}

View File

@ -0,0 +1,9 @@
#ifdef E_TYPEDEFS
#else
#ifndef E_INT_CONFIG_DPMS_H
#define E_INT_CONFIG_DPMS_H
EAPI E_Config_Dialog *e_int_config_dpms(E_Container *con);
#endif
#endif

View File

@ -0,0 +1,186 @@
#include "e.h"
#define E_CONFIG_BLANKING_DEFAULT 2
#define E_CONFIG_BLANKING_PREFERRED 1
#define E_CONFIG_BLANKING_NOT_PREFERRED 0
#define E_CONFIG_EXPOSURES_DEFAULT 2
#define E_CONFIG_EXPOSURES_ALLOWED 1
#define E_CONFIG_EXPOSURES_NOT_ALLOWED 0
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);
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas,
E_Config_Dialog_Data *cfdata);
static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas,
E_Config_Dialog_Data *cfdata);
struct _E_Config_Dialog_Data
{
E_Config_Dialog *cfd;
int enable_screensaver;
double timeout;
double interval;
int blanking;
int exposures;
};
EAPI E_Config_Dialog *
e_int_config_screensaver(E_Container *con)
{
E_Config_Dialog *cfd;
E_Config_Dialog_View *v;
//e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
if (e_config_dialog_find("E", "_config_screensaver_dialog")) return NULL;
v = E_NEW(E_Config_Dialog_View, 1);
v->create_cfdata = _create_data;
v->free_cfdata = _free_data;
v->basic.apply_cfdata = _basic_apply_data;
v->basic.create_widgets = _basic_create_widgets;
v->advanced.apply_cfdata = _advanced_apply_data;
v->advanced.create_widgets = _advanced_create_widgets;
v->override_auto_apply = 1;
cfd = e_config_dialog_new(con,_("Screen Saver Settings"),
"E", "_config_screensaver_dialog",
"enlightenment/screensaver", 0, v, NULL);
return cfd;
}
static void
_fill_data(E_Config_Dialog_Data *cfdata)
{
cfdata->enable_screensaver = e_config->screensaver_enable;
cfdata->timeout = e_config->screensaver_timeout / 60;
cfdata->interval = e_config->screensaver_interval;
cfdata->blanking = e_config->screensaver_blanking;
cfdata->exposures = e_config->screensaver_expose;
}
static void *
_create_data(E_Config_Dialog *cfd)
{
E_Config_Dialog_Data *cfdata;
cfdata = E_NEW(E_Config_Dialog_Data, 1);
cfdata->cfd = cfd;
_fill_data(cfdata);
return cfdata;
}
static void
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
if (!cfdata) return;
E_FREE(cfdata);
}
static int
_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
e_config->screensaver_enable = cfdata->enable_screensaver;
e_config->screensaver_timeout = cfdata->timeout * 60;
e_config->screensaver_interval = cfdata->interval;
e_config->screensaver_blanking = cfdata->blanking;
e_config->screensaver_expose = cfdata->exposures;
/* Apply settings */
e_screensaver_init();
}
static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
_apply_data(cfd, cfdata);
e_config_save_queue();
return 1;
}
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *of, *ob;
o = e_widget_list_add(evas, 0, 0);
ob = e_widget_check_add(evas, _("Enable X screensaver"), &(cfdata->enable_screensaver));
e_widget_list_object_append(o, ob, 1, 1, 0);
of = e_widget_framelist_add(evas, _("Screensaver Timer(s)"), 0);
ob = e_widget_label_add(evas, _("Time until X screensaver starts"));
e_widget_framelist_object_append(of, ob);
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);
e_widget_list_object_append(o, of, 1, 1, 0.5);
e_dialog_resizable_set(cfd->dia, 0);
return o;
}
/* advanced window */
static int
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
if (!cfdata) return 0;
_apply_data(cfd, cfdata);
e_config_save_queue();
return 1;
}
static Evas_Object *
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *of, *ob;
E_Radio_Group *rg;
o = e_widget_list_add(evas, 0, 0);
ob = e_widget_check_add(evas, _("Enable X screensaver"), &(cfdata->enable_screensaver));
e_widget_list_object_append(o, ob, 1, 1, 0);
of = e_widget_framelist_add(evas, _("Screensaver Timer(s)"), 0);
ob = e_widget_label_add(evas, _("Time until X screensaver starts"));
e_widget_framelist_object_append(of, ob);
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);
ob = e_widget_label_add(evas, _("Time until X screensaver alternates"));
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"),
1.0, 300.0, 1.0, 0, &(cfdata->interval), NULL, 200);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("Blanking"), 0);
rg = e_widget_radio_group_new(&(cfdata->blanking));
ob = e_widget_radio_add(evas, _("Default"), E_CONFIG_BLANKING_DEFAULT, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Preferred"), E_CONFIG_BLANKING_PREFERRED, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Not Preferred"), E_CONFIG_BLANKING_NOT_PREFERRED, rg);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("Exposure Events"), 0);
rg = e_widget_radio_group_new(&(cfdata->exposures));
ob = e_widget_radio_add(evas, _("Default"), E_CONFIG_EXPOSURES_DEFAULT, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Allow"), E_CONFIG_EXPOSURES_ALLOWED, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Don't Allow"), E_CONFIG_EXPOSURES_NOT_ALLOWED, rg);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
e_dialog_resizable_set(cfd->dia, 0);
return o;
}

View File

@ -0,0 +1,9 @@
#ifdef E_TYPEDEFS
#else
#ifndef E_INT_CONFIG_SCREENSAVER_H
#define E_INT_CONFIG_SCREENSAVER_H
EAPI E_Config_Dialog *e_int_config_screensaver(E_Container *con);
#endif
#endif

View File

@ -7818,15 +7818,15 @@ break;
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_SET
#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_DESKLOCK_SET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-desklock-use-custom-screensaver-set", 1, "Set whether a custom screensaver will be utilized", 0, HDL)
OP("-desklock-use-custom-desklock-set", 1, "Set whether a custom desklock 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);
e_config->desklock_use_custom_desklock = policy;
E_CONFIG_LIMIT(e_config->desklock_use_custom_desklock, 0, 1);
SAVE;
END_INT;
#elif (TYPE == E_REMOTE_IN)
@ -7834,19 +7834,19 @@ break;
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET
#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_DESKLOCK_GET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-desklock-use-custom-screensaver-get", 0, "Get whether a custom screen saver is being used", 1, HDL)
OP("-desklock-use-custom-desklock-get", 0, "Get whether a custom desklock 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);
SEND_INT(e_config->desklock_use_custom_desklock, E_IPC_OP_DESKLOCK_USE_CUSTOM_DESKLOCK_GET_REPLY, HDL);
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET_REPLY
#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_DESKLOCK_GET_REPLY
#if (TYPE == E_REMOTE_OPTIONS)
#elif (TYPE == E_REMOTE_OUT)
#elif (TYPE == E_WM_IN)
@ -7858,35 +7858,35 @@ break;
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_SET
#define HDL E_IPC_OP_DESKLOCK_CUSTOM_DESKLOCK_CMD_SET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-desklock-custom-screensaver-cmd-set", 1, "Set the current custom screensaver command to OPT1", 0, HDL)
OP("-desklock-custom-desklock-cmd-set", 1, "Set the current custom desklock 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);
if (e_config->desklock_custom_desklock_cmd)
evas_stringshare_del(e_config->desklock_custom_desklock_cmd);
e_config->desklock_custom_desklock_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
#define HDL E_IPC_OP_DESKLOCK_CUSTOM_DESKLOCK_CMD_GET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-desklock-custom-screensaver-cmd-get", 0, "Get the current custom screensaver command", 1, HDL)
OP("-desklock-custom-desklock-cmd-get", 0, "Get the current custom desklock 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);
SEND_STRING(e_config->desklock_custom_desklock_cmd, E_IPC_OP_DESKLOCK_CUSTOM_DESKLOCK_CMD_GET_REPLY, HDL);
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET_REPLY
#define HDL E_IPC_OP_DESKLOCK_CUSTOM_DESKLOCK_CMD_GET_REPLY
#if (TYPE == E_REMOTE_OPTIONS)
#elif (TYPE == E_REMOTE_OUT)
#elif (TYPE == E_WM_IN)

View File

@ -414,10 +414,9 @@
#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
#define E_IPC_OP_DESKLOCK_USE_CUSTOM_DESKLOCK_SET 379
#define E_IPC_OP_DESKLOCK_USE_CUSTOM_DESKLOCK_GET 380
#define E_IPC_OP_DESKLOCK_USE_CUSTOM_DESKLOCK_GET_REPLY 381
#define E_IPC_OP_DESKLOCK_CUSTOM_DESKLOCK_CMD_SET 382
#define E_IPC_OP_DESKLOCK_CUSTOM_DESKLOCK_CMD_GET 383
#define E_IPC_OP_DESKLOCK_CUSTOM_DESKLOCK_CMD_GET_REPLY 384

View File

@ -769,6 +769,22 @@ main(int argc, char **argv)
}
_e_main_shutdown_push(e_exebuf_shutdown);
TS("dpms");
/* setup dpms */
if (!e_dpms_init())
{
e_error_message_show(_("Enlightenment cannot configure the DPMS settings."));
_e_main_shutdown(-1);
}
TS("screensaver");
/* setup screensaver */
if (!e_screensaver_init())
{
e_error_message_show(_("Enlightenment cannot configure the X screensaver."));
_e_main_shutdown(-1);
}
TS("desklock");
/* setup desklock */
if (!e_desklock_init())

View File

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

20
src/bin/e_screensaver.c Normal file
View File

@ -0,0 +1,20 @@
/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#include "e.h"
EAPI int
e_screensaver_init(void)
{
int timeout=0, interval=0, blanking=0, expose=0;
if (e_config->screensaver_enable)
timeout = e_config->screensaver_timeout;
interval = e_config->screensaver_interval;
blanking = e_config->screensaver_blanking;
expose = e_config->screensaver_expose;
ecore_x_screensaver_set(timeout, interval, blanking, expose);
return 1;
}

9
src/bin/e_screensaver.h Normal file
View File

@ -0,0 +1,9 @@
#ifdef E_TYPEDEFS
#else
#ifndef E_SCREENSAVER_H
#define E_SCREENSAVER_H
EAPI int e_screensaver_init(void);
#endif
#endif