Theme Migration
This page lists theme API changes/breaks. The use of must and should in this document should be interpreted identically to their uses in RFC text.
E22
Enlightenment 22 provides a new gadget infrastructure, and in turn new gadgets were created. The following is a list of aliases you can use, as well as which gadgets will need their own theme.
Aliases
Modules -> Gadgets
*e/modules/backlight/main -> e/gadget/backlight/main
*e/modules/backlight/main -> e/gadget/backlight/main_vert
*e/modules/battery/main -> e/gadget/batman/main
*e/modules/battery/main -> e/gadget/batman/main_vert
*e/modules/cpufreq/main -> e/gadget/cpuclock/main
*e/modules/cpufreq/main -> e/gadget/cpuclock/main_vert
*e/modules/mixer/main -> e/gadget/mixer/main
*e/modules/mixer/main -> e/gadget/mixer/main_vert
*e/modules/pager16/popup -> e/gadget/pager/popup
*e/modules/pager16/desk -> e/gadget/pager/default/desk *See Note At Bottom
*e/modules/pager_plain/desk -> e/gadget/pager/plain/desk *See Note At Bottom
*e/modules/pager_plain/window -> e/gadget/pager/plain/window
*e/modules/start/main -> e/gadget/start/main
*e/modules/temperature/main -> e/gadget/thermal/main
*e/modules/temperature/main -> e/gadget/thermal/main_vert
*e/modules/xkbswitch/main -> e/gadget/xkbswitch/main
*e/modules/xkbswitch/main -> e/gadget/xkbswitch/main_vert
If you are not familiar with aliasing please read the edje documentation on groups here:
https://docs.enlightenment.org/api/edje/doc/html/edcref.html#sec_group
**For e/gadget/pager/default/desk and e/gadget/pager/plain/desk, you will need to add one part just before your e.swallow.content part called e.swallow.drop and here is an example (Including this part in your e/modules/pager* theme will have no effect on the shelf version of pager, only the e/gadget/ alias):
part { name: "e.swallow.drop"; type: SWALLOW; clip_to: "clip"; description { state: "default" 0.0; rel1.to: "base"; rel2.to: "base"; rel2.offset: -2 -1; visible: 1; link.base: "e,state,visible" "e"; } description { state: "hidden" 0.0; visible: 0; link.base: "e,state,hidden" "e"; } }
New
The following are new theme parts introduced that you will not be able to alias:
Bryce
*e/bryce/default/base
*e/bryce/invisible/base
*e/bryce/translucent/base
*e/bryce/default/inset
*e/bryce/default/plain
*elm/scroller/base/bryce
*e/bryce/editor/side
*e/bryce/editor/side/horizontal
*e/bryce/editor/side/vertical
*e/bryce/editor/style/item
*e/bryce/editor/style
*e/bryce/editor/finish
*bryce_editor_text
Gadgets
*e/gadget/clock/digital/advanced
*e/gadget/clock/analog
*e/gadget/clock/digital
*e/gadget/clock/calendar/dayname
*e/gadget/clock/calendar/day
*e/gadget/clock/calendar
*e/gadget/cpumonitor/main
*e/gadget/cpumonitor/main_vert
*e/gadget/cpumonitor/core/main
*e/gadget/cpumonitor/core/main_vert
*e/gadget/luncher/bar
*e/gadget/luncher/grid
*e/gadget/luncher/icon
*e/gadget/luncher/preview
*e/gadget/memusage/main
*e/gadget/memusage/main_vert
*e/gadget/netstatus/main
*e/gadget/netstatus/main_vert
*e/gadget/wireless/bluetooth
*e/gadget/wireless/cellular
*e/gadget/wireless/ethernet
*e/gadget/wireless/wifi
*elm/gengrid/item/luncher/default
*elm/label/base/luncher_preview
*elm/tooltip/base/luncher
View the theme files here: https://git.enlightenment.org/core/efl.git/tree/data/elementary/themes/edc to get a full list of what signals are used and what scripts/messages to handle
E19
New
- e/widgets/border/modal/border is used for modal dialogs; currently an alias of e/widgets/border/dialog/border
- e/widgets/border/* now has data.item`frame_extends` which is a hint to fix input for themes which extend past the object's bounding box (ie. have negative offsets)
- e/deskmirror/frame/*
- e/modules/packagekit/*
- e/comp/effects/iconify/*
- e/desklock/pin_box
- e/desklock/pin_button
- e/modules/pager/* <- new pager module, previously pager16
- e/comp/frame/* <- moved from e/comp/border/*, NOT backwards compatible. Any theme providing this group must adapt to the following changes:
- e,state,visible,on -> e,state,visible
- e,state,visible,off -> e,state,hidden
- e,state,focus,on -> e,state,focused
- e,state,focus,off -> e,state,unfocused
- e,state,urgent,on -> e,state,urgent
- e,state,urgent,off -> e,state,not_urgent
Changed
- As a result of Edje 1.10 changes, any TEXT part which has text.min: 1 [0|1]; set must also have text.ellipsis: -1; set to prevent the text from ellipsizing
- e/conf/randr/main/frame group now has e,state,refresh,[enabled|disabled] signals (source: e) to allow toggling of refresh arrow visibility
- e/desklock/login_box now has e,state,logo,[hidden|visible] signals (source: e) to allow toggling of logo visibility
- e/comp/screen/overlay/default theme must emit e,state,screensaver,active (source: e) after completing any animations resulting from signal e,state,screensaver,on source e
- e/fileman/default/icon/* now has e,state,rename,[on|off] signals (source: e) to determine rename state
- e/modules/ibar/menu theme must emit e,action,show,done (source: e) after completing any animations resulting from signal e,action,show source e
- modules/music-control/* -> e/modules/music-control/*
- Groups which previously used the shadow data.item to determine shadow visibility must now instead use the noshadow flag for disabling shadows; shadows are enabled by default.
- e/modules/pager/* -> e/modules/pager_plain/*
E18
New
- e/modules/ibar/separator/default
- e/modules/ibar/separator/horizontal
- e/modules/ibar/menu
- e/modules/ibar/menu/item
- e/comp/screen/base/noeffects
- e/comp/effects/none
- e/comp/effects/auto/* <--these are the per-window desk flip animation styles
slated for rename due to lack of namespacing (blame @zehortigoza and possibly @lucasdemarchi):
- modules/music-control/icon
- modules/music-control/main
- modules/music-control/popup
Changed
- e/modules/systray/main group is now only a RECT for events under a single BOX with part name "box"
- this is slated for rename to "e.box" for proper namespacing in future; direct blame to @zehortigoza
- e/modules/comp/* has been renamed to e/comp/*
- e/modules/comp/$border_type has been renamed to e/comp/border/$border_type
- e/comp/border/$border_type groups should have corresponding e/comp/border/$border_type/fast group with shorter effect durations
- e/comp/screen/base/default and e/comp/screen/base/noeffects groups must contain a SWALLOW part "e.swallow.background" in order for wallpapers to be displayed
- this SWALLOW part should be clipped
- e/modules/conf_edgebindings/selection now has BOX part "e.box" instead of SWALLOW part "e.swallow.check", alignment changed, developers should read corresponding Elementary-1.8 theme
- e/widgets/menu/* groups must have mouse event coverage for the entire space of the group in order for menus to receive mouse events
- e/widgets/border/* groups:
- must clip SWALLOW part "e.swallow.client"
- must set visibility:0 on SWALLOW part "e.swallow.client" during shaded state
- must set mouse_events:1 for SWALLOW part "e.swallow.client"
- must have the shadow parts in theme if shadows are desired; default e/comp/* groups no longer provides window shadows
- should set data.item "shadow" "1" if they provide a shadow
- should have clipper for shadow parts to use during window shading
- shadow display is now enabled with signal "e,state,shadow,on" and disabled with signal "e,state,shadow,off"
- must have event coverage for entire group
- must set repeat_events:1 for event parts
- must have pixel-perfect part positioning with no gaps between parts
- e/widgets/button group can now receive "e,state,focused" and "e,state,unfocused" signals to indicate focus state
- e/modules/ibar/icon group now receives "e,state,on" and "e,state,off" signals to control application launch indicator parts
- Last Author
- stephenmhouston
- Last Edited
- Sep 28 2017, 8:10 AM
- Projects
- None
- Subscribers
- zehortigoza, lucasdemarchi, andersgus