Add a task to copy configuration files to user's HOME dir from data dir for multi...
[platform/core/uifw/e17.git] / src / bin / e_config.h
1 #ifdef E_TYPEDEFS
2
3 #define E_CONFIG_LIMIT(v, min, max) {if (v >= max) v = max; else if (v <= min) v = min; }
4
5 typedef struct _E_Config                    E_Config;
6 typedef struct _E_Config_Module             E_Config_Module;
7 typedef struct _E_Config_Theme              E_Config_Theme;
8 typedef struct _E_Config_Binding_Mouse      E_Config_Binding_Mouse;
9 typedef struct _E_Config_Binding_Key        E_Config_Binding_Key;
10 typedef struct _E_Config_Binding_Edge       E_Config_Binding_Edge;
11 typedef struct _E_Config_Binding_Signal     E_Config_Binding_Signal;
12 typedef struct _E_Config_Binding_Wheel      E_Config_Binding_Wheel;
13 typedef struct _E_Config_Binding_Acpi       E_Config_Binding_Acpi;
14 typedef struct _E_Config_Desktop_Background E_Config_Desktop_Background;
15 typedef struct _E_Config_Desklock_Background E_Config_Desklock_Background;
16 typedef struct _E_Config_Desktop_Name       E_Config_Desktop_Name;
17 #ifdef _F_USE_DESK_WINDOW_PROFILE_
18 typedef struct _E_Config_Desktop_Window_Profile E_Config_Desktop_Window_Profile;
19 #endif
20 typedef struct _E_Config_Gadcon             E_Config_Gadcon;
21 typedef struct _E_Config_Gadcon_Client      E_Config_Gadcon_Client;
22 typedef struct _E_Config_Shelf              E_Config_Shelf;
23 typedef struct _E_Config_Shelf_Desk         E_Config_Shelf_Desk;
24 typedef struct _E_Config_Mime_Icon          E_Config_Mime_Icon;
25 typedef struct _E_Config_Syscon_Action      E_Config_Syscon_Action;
26 typedef struct _E_Config_Env_Var            E_Config_Env_Var;
27 typedef struct _E_Config_XKB_Layout         E_Config_XKB_Layout;
28 typedef struct _E_Config_XKB_Option         E_Config_XKB_Option;
29
30 typedef struct _E_Event_Config_Icon_Theme   E_Event_Config_Icon_Theme;
31
32 #else
33 #ifndef E_CONFIG_H
34 #define E_CONFIG_H
35
36 /* increment this whenever we change config enough that you need new
37  * defaults for e to work.
38  */
39 #define E_CONFIG_FILE_EPOCH      0x0001
40 /* increment this whenever a new set of config values are added but the users
41  * config doesn't need to be wiped - simply new values need to be put in
42  */
43 #define E_CONFIG_FILE_GENERATION 0x0154
44 #define E_CONFIG_FILE_VERSION    ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
45
46 struct _E_Config
47 {
48    int         config_version; // INTERNAL
49    int         show_splash; // GUI
50    const char *init_default_theme; // GUI
51    const char *desktop_default_background; // GUI
52    Eina_List  *desktop_backgrounds; // GUI
53    const char *desktop_default_name;
54 #ifdef _F_USE_DESK_WINDOW_PROFILE_
55    const char *desktop_default_window_profile;
56 #endif
57    Eina_List  *desktop_names; // GUI
58 #ifdef _F_USE_DESK_WINDOW_PROFILE_
59    Eina_List  *desktop_window_profiles; // GUI
60 #endif
61    double      menus_scroll_speed; // GUI
62    double      menus_fast_mouse_move_threshhold; // GUI
63    double      menus_click_drag_timeout; // GUI
64    int         border_shade_animate; // GUI
65    int         border_shade_transition; // GUI
66    double      border_shade_speed; // GUI
67    double      framerate; // GUI
68    int         priority; // GUI
69    int         image_cache; // GUI
70    int         font_cache; // GUI
71    int         edje_cache; // GUI
72    int         edje_collection_cache; // GUI
73    int         zone_desks_x_count; // GUI
74    int         zone_desks_y_count; // GUI
75    int         show_desktop_icons; // GUI
76    int         edge_flip_dragging; // GUI
77    int         use_composite; // GUI
78    const char *language; // GUI
79    Eina_List  *modules; // GUI
80    Eina_List  *font_fallbacks; // GUI
81    Eina_List  *font_defaults; // GUI
82    Eina_List  *themes; // GUI
83    Eina_List  *mouse_bindings; // GUI
84    Eina_List  *key_bindings; // GUI
85    Eina_List  *edge_bindings; // GUI
86    Eina_List  *signal_bindings;
87    Eina_List  *wheel_bindings; // GUI
88    Eina_List  *acpi_bindings; // GUI
89    Eina_List  *path_append_data; // GUI
90    Eina_List  *path_append_images; // GUI
91    Eina_List  *path_append_fonts; // GUI
92    Eina_List  *path_append_themes; // GUI
93    Eina_List  *path_append_init; // GUI
94    Eina_List  *path_append_icons; // GUI
95    Eina_List  *path_append_modules; // GUI
96    Eina_List  *path_append_backgrounds; // GUI
97    Eina_List  *path_append_messages; // GUI
98    int         window_placement_policy; // GUI
99    int         window_grouping; // GUI
100    int         focus_policy; // GUI
101    int         focus_setting; // GUI
102    int         pass_click_on; // GUI
103    int         always_click_to_raise; // GUI
104    int         always_click_to_focus; // GUI
105    int         use_auto_raise; // GUI
106    double      auto_raise_delay; // GUI
107    int         use_resist; // GUI
108    int         drag_resist;
109    int         desk_resist; // GUI
110    int         window_resist; // GUI
111    int         gadget_resist; // GUI
112    int         geometry_auto_move; // GUI
113    int         geometry_auto_resize_limit; // GUI
114    int         winlist_warp_while_selecting; // GUI
115    int         winlist_warp_at_end; // GUI
116    double      winlist_warp_speed; // GUI
117    int         winlist_scroll_animate; // GUI
118    double      winlist_scroll_speed; // GUI
119    int         winlist_list_show_iconified; // GUI
120    int         winlist_list_show_other_desk_iconified; // GUI
121    int         winlist_list_show_other_screen_iconified; // GUI
122    int         winlist_list_show_other_desk_windows; // GUI
123    int         winlist_list_show_other_screen_windows; // GUI
124    int         winlist_list_uncover_while_selecting; // GUI
125    int         winlist_list_jump_desk_while_selecting; // GUI
126    int         winlist_list_focus_while_selecting; // GUI
127    int         winlist_list_raise_while_selecting; // GUI
128    double      winlist_pos_align_x; // GUI
129    double      winlist_pos_align_y; // GUI
130    double      winlist_pos_size_w; // GUI
131    double      winlist_pos_size_h; // GUI
132    int         winlist_pos_min_w; // GUI
133    int         winlist_pos_min_h; // GUI
134    int         winlist_pos_max_w; // GUI
135    int         winlist_pos_max_h; // GUI
136    int         maximize_policy; // GUI
137    int         allow_manip; // GUI
138    int         border_fix_on_shelf_toggle; // GUI
139    int         allow_above_fullscreen; // GUI
140    int         kill_if_close_not_possible; // GUI
141    int         kill_process; // GUI
142    double      kill_timer_wait; // GUI
143    int         ping_clients; // GUI
144    const char *transition_start; // GUI
145    const char *transition_desk; // GUI
146    const char *transition_change; // GUI
147    Eina_List  *remembers; // GUI
148    int         remember_internal_windows; // GUI
149    int         move_info_follows; // GUI
150    int         resize_info_follows; // GUI
151    int         move_info_visible; // GUI
152    int         resize_info_visible; // GUI
153    int         focus_last_focused_per_desktop; // GUI
154    int         focus_revert_on_hide_or_close; // GUI
155    int         pointer_slide; // GUI
156    int         use_e_cursor; // GUI
157    int         cursor_size; // GUI
158    int         menu_autoscroll_margin; // GUI
159    int         menu_autoscroll_cursor_margin; // GUI
160    const char *input_method; // GUI
161    struct
162    {
163       int move;      // GUI
164       int resize;      // GUI
165       int raise;      // GUI
166       int lower;      // GUI
167       int layer;      // GUI
168       int desktop;      // GUI
169       int iconify;      // GUI
170    } transient;
171    int                       modal_windows;
172    int                       menu_eap_name_show; // GUI
173    int                       menu_eap_generic_show; // GUI
174    int                       menu_eap_comment_show; // GUI
175    int                       menu_favorites_show; // GUI
176    int                       menu_apps_show; // GUI
177    int                       menu_gadcon_client_toplevel; // GUI
178    int                       fullscreen_policy; // GUI
179    const char               *exebuf_term_cmd; // GUI
180    Eina_List                *color_classes; // GUI
181    int                       use_app_icon; // GUI
182    int                       cnfmdlg_disabled; // GUI
183    int                       cfgdlg_auto_apply; // GUI
184    int                       cfgdlg_default_mode; // GUI
185    Eina_List                *gadcons; // GUI
186    Eina_List                *shelves; // GUI
187    int                       font_hinting; // GUI
188
189    const char               *desklock_personal_passwd; // GUI
190    const char               *desklock_background; // OLD DON'T USE
191    Eina_List                *desklock_backgrounds; // GUI
192    int                       desklock_auth_method; // GUI
193    int                       desklock_login_box_zone; // GUI
194    int                       desklock_start_locked; // GUI
195    int                       desklock_on_suspend; // GUI
196    int                       desklock_autolock_screensaver; // GUI
197    double                    desklock_post_screensaver_time; // GUI
198    int                       desklock_autolock_idle; // GUI
199    double                    desklock_autolock_idle_timeout; // GUI
200    int                       desklock_use_custom_desklock; // GUI
201    const char               *desklock_custom_desklock_cmd; // GUI
202    unsigned char             desklock_ask_presentation; // GUI
203    double                    desklock_ask_presentation_timeout; // GUI
204
205    int                       screensaver_enable; // GUI
206    int                       screensaver_timeout; // GUI
207    int                       screensaver_interval; // GUI
208    int                       screensaver_blanking; // GUI
209    int                       screensaver_expose; // GUI
210    unsigned char             screensaver_ask_presentation; // GUI
211    double                    screensaver_ask_presentation_timeout; // GUI
212
213    unsigned char             screensaver_suspend; // GUI
214    unsigned char             screensaver_suspend_on_ac; // GUI
215    double                    screensaver_suspend_delay; // GUI
216
217    int                       dpms_enable; // GUI
218    int                       dpms_standby_enable; // GUI
219    int                       dpms_standby_timeout; // GUI
220    int                       dpms_suspend_enable; // GUI
221    int                       dpms_suspend_timeout; // GUI
222    int                       dpms_off_enable; // GUI
223    int                       dpms_off_timeout; // GUI
224
225    int                       clientlist_group_by; // GUI
226    int                       clientlist_include_all_zones; // GUI
227    int                       clientlist_separate_with; // GUI
228    int                       clientlist_sort_by; // GUI
229    int                       clientlist_separate_iconified_apps; // GUI
230    int                       clientlist_warp_to_iconified_desktop; // GUI
231    int                       clientlist_limit_caption_len; // GUI
232    int                       clientlist_max_caption_len; // GUI
233
234    int                       mouse_hand; //GUI
235    int                       mouse_accel_numerator; // GUI
236    int                       mouse_accel_denominator; // GUI
237    int                       mouse_accel_threshold; // GUI
238
239    E_Randr_Serialized_Setup *randr_serialized_setup;   // GUI
240
241    int                       border_raise_on_mouse_action; // GUI
242    int                       border_raise_on_focus; // GUI
243    int                       desk_flip_wrap; // GUI
244    int                       fullscreen_flip; // GUI
245    int                       multiscreen_flip; // GUI
246
247    const char               *icon_theme; // GUI
248    unsigned char             icon_theme_overrides; // GUI
249
250    int                       desk_flip_animate_mode; // GUI
251    int                       desk_flip_animate_interpolation; // GUI
252    double                    desk_flip_animate_time; // GUI
253
254    const char               *wallpaper_import_last_dev; // INTERNAL
255    const char               *wallpaper_import_last_path; // INTERNAL
256
257    const char               *theme_default_border_style; // GUI
258
259    Eina_List                *mime_icons; // GUI
260    int                       desk_auto_switch; // GUI;
261
262    int                       thumb_nice;
263
264    int                       ping_clients_interval; // GUI
265    int                       cache_flush_poll_interval; // GUI
266
267    int                       thumbscroll_enable; // GUI
268    int                       thumbscroll_threshhold; // GUI
269    double                    thumbscroll_momentum_threshhold; // GUI
270    double                    thumbscroll_friction; // GUI
271
272    unsigned char             filemanager_single_click; // GUI
273    int                       device_desktop; // GUI
274    int                       device_auto_mount; // GUI
275    int                       device_auto_open; // GUI
276    Efm_Mode                  device_detect_mode; /* not saved, display-only */
277    unsigned char             filemanager_copy; // GUI
278
279    struct
280    {
281       double timeout; // GUI
282       struct
283       {
284          unsigned char dx; // GUI
285          unsigned char dy; // GUI
286       } move;
287       struct
288       {
289          unsigned char dx; // GUI
290          unsigned char dy; // GUI
291       } resize;
292    } border_keyboard;
293
294    struct
295    {
296       double        min; // GUI
297       double        max; // GUI
298       double        factor; // GUI
299       int           base_dpi; // GUI
300       unsigned char use_dpi; // GUI
301       unsigned char use_custom; // GUI
302    } scale;
303
304    unsigned char show_cursor; // GUI
305    unsigned char idle_cursor; // GUI
306
307    const char   *default_system_menu; // GUI
308
309    unsigned char cfgdlg_normal_wins; // GUI
310
311    struct
312    {
313       struct
314       {
315          int icon_size;         // GUI
316       } main, secondary, extra;
317       double        timeout;  // GUI
318       unsigned char do_input;  // GUI
319       Eina_List    *actions;
320    } syscon;
321
322    struct
323    {
324       unsigned char presentation; // INTERNAL
325       unsigned char offline; // INTERNAL
326    } mode;
327
328    struct
329    {
330       double        expire_timeout;
331       unsigned char show_run_dialog;
332       unsigned char show_exit_dialog;
333    } exec;
334
335    unsigned char null_container_win; // HYPER-ADVANCED-ONLY - TURNING ON KILLS DESKTOP BG
336
337    Eina_List    *env_vars; // GUI
338
339    struct
340    {
341       double        normal; // GUI
342       double        dim; // GUI
343       double        transition; // GUI
344       double        timer; // GUI
345       const char   *sysdev; // GUI  
346       unsigned char idle_dim; // GUI
347       E_Backlight_Mode mode; /* not saved, display-only */
348    } backlight;
349
350    struct
351    {
352       double           none;
353       double           low;
354       double           medium;
355       double           high;
356       double           extreme;
357       E_Powersave_Mode min;
358       E_Powersave_Mode max;
359    } powersave;
360
361    struct
362    {
363       unsigned char load_xrdb; // GUI
364       unsigned char load_xmodmap; // GUI
365       unsigned char load_gnome; // GUI
366       unsigned char load_kde; // GUI
367    } deskenv;
368
369    struct
370    {
371       unsigned char enabled;  // GUI
372       unsigned char match_e17_theme;  // GUI
373       unsigned char match_e17_icon_theme;  // GUI
374       int           xft_antialias;
375       int           xft_hinting;
376       const char   *xft_hint_style;
377       const char   *xft_rgba;
378       const char   *net_theme_name;  // GUI
379       const char   *net_theme_name_detected; // not saved
380       const char   *net_icon_theme_name;  // GUI
381       const char   *gtk_font_name;
382    } xsettings;
383
384    struct
385    {
386       unsigned char check; // INTERNAL
387       unsigned char later; // INTERNAL
388    } update;
389
390    struct
391    {
392       Eina_List  *used_layouts;
393       Eina_List  *used_options;
394       int         only_label;
395       const char *default_model;
396       int         cur_group;
397    } xkb;
398    
399    unsigned char exe_always_single_instance;
400 #ifdef _F_ZONE_WINDOW_ROTATION_
401    unsigned char wm_win_rotation;
402 #endif
403
404 #ifdef _F_DEICONIFY_APPROVE_
405    unsigned char deiconify_approve;
406    double      deiconify_timeout;
407 #endif
408 };
409
410 struct _E_Config_Desklock_Background
411 {
412    const char *file;
413 };
414
415 struct _E_Config_Env_Var
416 {
417    const char   *var;
418    const char   *val;
419    unsigned char unset;
420 };
421
422 struct _E_Config_Syscon_Action
423 {
424    const char *action;
425    const char *params;
426    const char *button;
427    const char *icon;
428    int         is_main;
429 };
430
431 struct _E_Config_Module
432 {
433    const char   *name;
434    unsigned char enabled;
435    unsigned char delayed;
436    int           priority;
437 };
438
439 struct _E_Config_Theme
440 {
441    const char *category;
442    const char *file;
443 };
444
445 struct _E_Config_Binding_Mouse
446 {
447    int           context;
448    int           modifiers;
449    const char   *action;
450    const char   *params;
451    unsigned char button;
452    unsigned char any_mod;
453 };
454
455 struct _E_Config_Binding_Key
456 {
457    int           context;
458    unsigned int  modifiers;
459    const char   *key;
460    const char   *action;
461    const char   *params;
462    unsigned char any_mod;
463 };
464
465 struct _E_Config_Binding_Edge
466 {
467    int           context;
468    int           modifiers;
469    float         delay;
470    const char   *action;
471    const char   *params;
472    unsigned char edge;
473    unsigned char any_mod;
474 };
475
476 struct _E_Config_Binding_Signal
477 {
478    int           context;
479    const char   *signal;
480    const char   *source;
481    int           modifiers;
482    unsigned char any_mod;
483    const char   *action;
484    const char   *params;
485 };
486
487 struct _E_Config_Binding_Wheel
488 {
489    int           context;
490    int           direction;
491    int           z;
492    int           modifiers;
493    unsigned char any_mod;
494    const char   *action;
495    const char   *params;
496 };
497
498 struct _E_Config_Binding_Acpi
499 {
500    int         context, type, status;
501    const char *action, *params;
502 };
503
504 struct _E_Config_Desktop_Background
505 {
506    int         container;
507    int         zone;
508    int         desk_x;
509    int         desk_y;
510    const char *file;
511 };
512
513 struct _E_Config_Desktop_Name
514 {
515    int         container;
516    int         zone;
517    int         desk_x;
518    int         desk_y;
519    const char *name;
520 };
521
522 #ifdef _F_USE_DESK_WINDOW_PROFILE_
523 struct _E_Config_Desktop_Window_Profile
524 {
525    int         container;
526    int         zone;
527    int         desk_x;
528    int         desk_y;
529    const char *profile;
530 };
531 #endif
532
533 struct _E_Config_Gadcon
534 {
535    const char  *name;
536    int          id;
537    unsigned int zone;
538    Eina_List   *clients;
539 };
540
541 struct _E_Config_Gadcon_Client
542 {
543    const char   *name;
544    const char   *id;
545    struct
546    {
547       int    pos, size, res; //gadcon
548       double pos_x, pos_y, size_w, size_h;  //gadman
549    } geom;
550    struct
551    {
552       int seq, flags;
553    } state_info;
554    const char   *style;
555    int           orient;
556    unsigned char autoscroll;
557    unsigned char resizable;
558    const char   *theme;
559 };
560
561 struct _E_Config_Shelf
562 {
563    const char   *name;
564    int           id;
565    int           container, zone;
566    int           layer;
567    unsigned char popup;
568    int           orient;
569    unsigned char fit_along;
570    unsigned char fit_size;
571    const char   *style;
572    int           size;
573    int           overlap;
574    int           autohide;
575    int           autohide_show_action;
576    float         hide_timeout;
577    float         hide_duration;
578    int           desk_show_mode;
579    Eina_List    *desk_list;
580 #ifdef _F_SHELF_INPUT_CONTROL_
581    unsigned char disable_menu;
582 #endif
583 };
584
585 struct _E_Config_Shelf_Desk
586 {
587    int x, y;
588 };
589
590 struct _E_Config_Mime_Icon
591 {
592    const char *mime;
593    const char *icon;
594 };
595
596 struct _E_Event_Config_Icon_Theme
597 {
598    const char *icon_theme;
599 };
600
601 struct _E_Config_XKB_Layout
602 {
603    const char *name;
604    const char *model;
605    const char *variant;
606 };
607
608 struct _E_Config_XKB_Option
609 {
610    const char *name;
611 };
612
613 EINTERN int                   e_config_init(void);
614 EINTERN int                   e_config_shutdown(void);
615
616 EAPI void                     e_config_load(void);
617
618 EAPI int                      e_config_save(void);
619 EAPI void                     e_config_save_flush(void);
620 EAPI void                     e_config_save_queue(void);
621
622 EAPI const char              *e_config_profile_get(void);
623 EAPI char                    *e_config_profile_dir_get(const char *prof);
624 EAPI void                     e_config_profile_set(const char *prof);
625 EAPI Eina_List               *e_config_profile_list(void);
626 EAPI void                     e_config_profile_add(const char *prof);
627 EAPI void                     e_config_profile_del(const char *prof);
628
629 EAPI void                     e_config_save_block_set(int block);
630 EAPI int                      e_config_save_block_get(void);
631
632 EAPI void                    *e_config_domain_load(const char *domain, E_Config_DD *edd);
633 EAPI void                    *e_config_domain_system_load(const char *domain, E_Config_DD *edd);
634 EAPI int                      e_config_profile_save(void);
635 EAPI int                      e_config_domain_save(const char *domain, E_Config_DD *edd, const void *data);
636
637 EAPI E_Config_Binding_Mouse  *e_config_binding_mouse_match(E_Config_Binding_Mouse *eb_in);
638 EAPI E_Config_Binding_Key    *e_config_binding_key_match(E_Config_Binding_Key *eb_in);
639 EAPI E_Config_Binding_Edge   *e_config_binding_edge_match(E_Config_Binding_Edge *eb_in);
640 EAPI E_Config_Binding_Signal *e_config_binding_signal_match(E_Config_Binding_Signal *eb_in);
641 EAPI E_Config_Binding_Wheel  *e_config_binding_wheel_match(E_Config_Binding_Wheel *eb_in);
642 EAPI E_Config_Binding_Acpi   *e_config_binding_acpi_match(E_Config_Binding_Acpi *eb_in);
643 EAPI void                     e_config_mode_changed(void);
644
645 extern EAPI E_Config * e_config;
646
647 extern EAPI int E_EVENT_CONFIG_ICON_THEME;
648 extern EAPI int E_EVENT_CONFIG_MODE_CHANGED;
649 extern EAPI int E_EVENT_CONFIG_LOADED;
650
651 #endif
652 #endif