redo comp theme to match e19 signals
authorMike Blumenkrantz <zmike@samsung.com>
Fri, 20 Dec 2013 00:09:27 +0000 (19:09 -0500)
committerMike Blumenkrantz <zmike@samsung.com>
Wed, 15 Jan 2014 01:14:54 +0000 (20:14 -0500)
* shadows should be uniformly moved to whatever thing they're supposed to be on (WIP)

* trans-clipper was a failure idea, this is now done in C

* signals renamed to be more consistent

* groups renamed to comp/frame/*

* comp/border/* groups preserved for compat

data/themes/Makefile.am
data/themes/default.edc
data/themes/edc/comp.edc
data/themes/edc/comp_compat.edc [new file with mode: 0644]

index 682e5f923c3b3774a7877eb95f6e11ab9e9de195..ead4be155f54c960686a9fb5f2b030104659c3d6 100644 (file)
@@ -39,6 +39,7 @@ edc/clock.edc \
 edc/colors.edc \
 edc/colorwell.edc \
 edc/comp.edc \
+edc/comp_compat.edc \
 edc/comp_effects.edc \
 edc/conf.edc \
 edc/connman.edc \
index 90e8304577f4dd9aa3f95bb88f79f122c8c1fa65..c8308a19292296ac8be2bbb7cf270f384f222fcb 100644 (file)
@@ -68,6 +68,7 @@ collections {
 // desktop in general
 #include "edc/wallpaper.edc"
 #include "edc/comp.edc"
+#include "edc/comp_compat.edc"
 #include "edc/comp_effects.edc"
 #include "edc/background.edc"
 #include "edc/shelf.edc"
index b8da88095477252ab014874f0a2dd69504a28706..e3aeea0ef7b8a7d18ff549d42dc7c544a6447abb 100644 (file)
@@ -241,8 +241,7 @@ group { name: "e/comp/screen/overlay/noeffects";
    }
 }
 
-group { name: "e/comp/border/default";
-   images.image: "win_shadow.png" COMP;
+group { name: "e/comp/frame/default";
    images.image: "win_glow.png" COMP;
    parts {
       part { name: "clipper"; type: RECT;
@@ -260,23 +259,6 @@ group { name: "e/comp/border/default";
             visible: 1;
          }
       }
-      part { name: "shadow"; mouse_events: 0;
-         clip_to: "clipper";
-         description { state: "default" 0.0;
-            image.normal: "win_shadow.png";
-            image.border: 14 14 14 14;
-            image.middle: 0;
-            rel1.to: "e.swallow.content";
-            rel1.offset: -7  -3;
-            rel2.to: "e.swallow.content";
-            rel2.offset: 6 11;
-            fill.smooth: 0;
-         }
-         description { state: "hidden" 0.0;
-            inherit: "default" 0.0;
-            visible: 0;
-         }
-      }
       part { name: "glow"; mouse_events: 0;
          clip_to: "clipper";
          description { state: "default" 0.0;
@@ -308,19 +290,9 @@ group { name: "e/comp/border/default";
             rel2.relative: 1.0  1.0;
          }
       }
-      part { name: "trans-clipper";
-         type: RECT;
-         clip_to: "clipper";
-         mouse_events: 0;
-         description { state: "default" 0.0;
-            color_class: "comp_alpha";
-            rel1.to: "clipper";
-            rel2.to: "clipper";
-         }
-      }
       part { name: "focus-clipper";
          type: RECT;
-         clip_to: "trans-clipper";
+         clip_to: "clipper";
          mouse_events: 0;
          description { state: "default" 0.0;
             color_class: "comp_focus-out_color";
@@ -342,19 +314,9 @@ group { name: "e/comp/border/default";
       }
    }
    programs {
-      program {
-         signal: "e,state,shadow,on"; source: "e";
-         action: STATE_SET "default" 0.0;
-         target: "shadow";
-      }
-      program {
-         signal: "e,state,shadow,off"; source: "e";
-         action: STATE_SET "hidden" 0.0;
-         target: "shadow";
-      }
       program {
          name: "visible_on";
-         signal: "e,state,visible,on"; source: "e";
+         signal: "e,state,visible"; source: "e";
          action: STATE_SET "visible" 0.0;
          transition: DECELERATE 0.15;
          target: "clipper";
@@ -364,9 +326,19 @@ group { name: "e/comp/border/default";
       program { name: "show2";
          action: SIGNAL_EMIT "e,action,show,done" "e";
       }
+      program {
+         signal: "e,state,visible"; source: "e";
+         action: ACTION_STOP;
+         target: "visible_off";
+      }
+      program {
+         signal: "e,state,hidden"; source: "e";
+         action: ACTION_STOP;
+         target: "visible_on";
+      }
       program {
          name: "visible_off";
-         signal: "e,state,visible,off"; source: "e";
+         signal: "e,state,hidden"; source: "e";
          action: STATE_SET "default" 0.0;
          transition: DECELERATE 0.30;
          target: "clipper";
@@ -378,7 +350,7 @@ group { name: "e/comp/border/default";
       }
       program {
          name: "focus_on";
-         signal: "e,state,focus,on"; source: "e";
+         signal: "e,state,focused"; source: "e";
          action: STATE_SET "focused" 0.0;
          transition: SINUSOIDAL 0.1;
          target: "glow";
@@ -392,7 +364,7 @@ group { name: "e/comp/border/default";
       }
       program {
          name: "focus_off";
-         signal: "e,state,focus,off"; source: "e";
+         signal: "e,state,unfocused"; source: "e";
          action: STATE_SET "default" 0.0;
          transition: SINUSOIDAL 0.1;
          target: "focus-clipper";
@@ -405,7 +377,7 @@ group { name: "e/comp/border/default";
          target: "glow";
       }
       program { name: "urgent1";
-         signal: "e,state,urgent,on"; source: "e";
+         signal: "e,state,urgent"; source: "e";
          action: STATE_SET "focused" 0.0;
          transition: SINUSOIDAL 0.3;
          target: "glow";
@@ -418,7 +390,7 @@ group { name: "e/comp/border/default";
          after: "urgent1";
       }
       program {
-         signal: "e,state,urgent,off"; source: "e";
+         signal: "e,state,not_urgent"; source: "e";
          action: STATE_SET "default" 0.0;
          transition: SINUSOIDAL 0.6 CURRENT;
          target: "glow";
@@ -426,8 +398,8 @@ group { name: "e/comp/border/default";
    }
 }
 
-group { name: "e/comp/border/rotate";
-   inherit: "e/comp/border/default";
+group { name: "e/comp/frame/rotate";
+   inherit: "e/comp/frame/default";
    parts {
       part { name: "e.swallow.content";
          description { state: "default";
@@ -453,13 +425,13 @@ group { name: "e/comp/border/rotate";
    }
    programs {
       program { name: "focus3";
-         signal: "e,state,focus,on"; source: "e";
+         signal: "e,state,focused"; source: "e";
          action: STATE_SET "default" 0.0;
          target: "e.swallow.content";
          transition: LINEAR 0.3;
       }
       program { name: "focus_off3";
-         signal: "e,state,focus,off"; source: "e";
+         signal: "e,state,unfocused"; source: "e";
          action: STATE_SET "focus-out" 0.0;
          target: "e.swallow.content";
          transition: LINEAR 0.3;
@@ -467,8 +439,8 @@ group { name: "e/comp/border/rotate";
    }
 }
 
-group { name: "e/comp/border/rotate/fast";
-   inherit: "e/comp/border/rotate";
+group { name: "e/comp/frame/rotate/fast";
+   inherit: "e/comp/frame/rotate";
    programs {
       program { name: "focus3";
          transition: LINEAR 0;
@@ -479,8 +451,8 @@ group { name: "e/comp/border/rotate/fast";
    }
 }
 
-group { name: "e/comp/border/flip";
-   inherit: "e/comp/border/rotate";
+group { name: "e/comp/frame/flip";
+   inherit: "e/comp/frame/rotate";
    parts {
       part { name: "e.swallow.content";
          description { state: "default";
@@ -504,8 +476,8 @@ group { name: "e/comp/border/flip";
    }
 }
 
-group { name: "e/comp/border/flip/fast";
-   inherit: "e/comp/border/flip";
+group { name: "e/comp/frame/flip/fast";
+   inherit: "e/comp/frame/flip";
    programs {
       program { name: "focus3";
          transition: LINEAR 0;
@@ -516,19 +488,49 @@ group { name: "e/comp/border/flip/fast";
    }
 }
 
-group { name: "e/comp/border/popup";
-   inherit: "e/comp/border/default";
+group { name: "e/comp/frame/popup";
+   inherit: "e/comp/frame/default";
+   images.image: "win_shadow.png" COMP;
    parts {
       part { name: "focus-clipper";
          description { state: "default";
             color_class: "";
          }
       }
+      part { name: "shadow"; mouse_events: 0; insert_before: "glow";
+         clip_to: "clipper";
+         description { state: "default" 0.0;
+            image.normal: "win_shadow.png";
+            image.border: 14 14 14 14;
+            image.middle: 0;
+            rel1.to: "e.swallow.content";
+            rel1.offset: -7  -3;
+            rel2.to: "e.swallow.content";
+            rel2.offset: 6 11;
+            fill.smooth: 0;
+         }
+         description { state: "hidden" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+   }
+   programs {
+       program {
+         signal: "e,state,shadow,on"; source: "e";
+         action: STATE_SET "default" 0.0;
+         target: "shadow";
+      }
+      program {
+         signal: "e,state,shadow,off"; source: "e";
+         action: STATE_SET "hidden" 0.0;
+         target: "shadow";
+      }
    }
 }
 
-group { name: "e/comp/border/default/fast";
-   inherit: "e/comp/border/default";
+group { name: "e/comp/frame/default/fast";
+   inherit: "e/comp/frame/default";
    programs {
       program {
          name: "visible_on";
@@ -559,8 +561,9 @@ group { name: "e/comp/border/default/fast";
    }
 }
 
-group { name: "e/comp/border/popup/fast";
-   inherit: "e/comp/border/default/fast";
+group { name: "e/comp/frame/popup/fast";
+   inherit: "e/comp/frame/default/fast";
+   images.image: "win_shadow.png" COMP;
    parts {
       part { name: "focus-clipper";
          description { state: "default";
@@ -570,7 +573,7 @@ group { name: "e/comp/border/popup/fast";
    }
 }
 
-group { name: "e/comp/border/none";
+group { name: "e/comp/frame/none";
    parts {
       part { name: "e.swallow.content"; type: SWALLOW;
          description { state: "default" 0.0;
@@ -579,18 +582,18 @@ group { name: "e/comp/border/none";
    }
    programs {
       program {
-         signal: "e,state,visible,on"; source: "e";
+         signal: "e,state,visible"; source: "e";
          action: SIGNAL_EMIT "e,action,show,done" "e";
       }
       program {
-         signal: "e,state,visible,off"; source: "e";
+         signal: "e,state,hidden"; source: "e";
          action: SIGNAL_EMIT "e,action,hide,done" "e";
       }
    }
 }
 
-group { name: "e/comp/border/still";
-   inherit: "e/comp/border/default";
+group { name: "e/comp/frame/still";
+   inherit: "e/comp/frame/default";
    parts {
       part { name: "shower";
          description { state: "default" 0.0;
@@ -601,8 +604,8 @@ group { name: "e/comp/border/still";
    }
 }
 
-group { name: "e/comp/border/still/fast";
-   inherit: "e/comp/border/default/fast";
+group { name: "e/comp/frame/still/fast";
+   inherit: "e/comp/frame/default/fast";
    parts {
       part { name: "shower";
          description { state: "default" 0.0;
@@ -613,8 +616,8 @@ group { name: "e/comp/border/still/fast";
    }
 }
 
-group { name: "e/comp/border/menu";
-   inherit: "e/comp/border/popup";
+group { name: "e/comp/frame/menu";
+   inherit: "e/comp/frame/popup";
    parts {
       part { name: "shower";
          description { state: "default" 0.0;
@@ -625,8 +628,8 @@ group { name: "e/comp/border/menu";
    }
 }
 
-group { name: "e/comp/border/menu/fast";
-   inherit: "e/comp/border/popup/fast";
+group { name: "e/comp/frame/menu/fast";
+   inherit: "e/comp/frame/popup/fast";
    parts {
       part { name: "shower";
          description { state: "default" 0.0;
@@ -637,8 +640,8 @@ group { name: "e/comp/border/menu/fast";
    }
 }
 
-group { name: "e/comp/border/everything";
-   inherit: "e/comp/border/popup";
+group { name: "e/comp/frame/everything";
+   inherit: "e/comp/frame/popup";
    parts {
       part { name: "shower";
          description { state: "default" 0.0;
@@ -649,8 +652,8 @@ group { name: "e/comp/border/everything";
    }
 }
 
-group { name: "e/comp/border/everything/fast";
-   inherit: "e/comp/border/popup/fast";
+group { name: "e/comp/frame/everything/fast";
+   inherit: "e/comp/frame/popup/fast";
    parts {
       part { name: "shower";
          description { state: "default" 0.0;
@@ -661,7 +664,7 @@ group { name: "e/comp/border/everything/fast";
    }
 }
 
-group { name: "e/comp/border/fullscreen";
+group { name: "e/comp/frame/fullscreen";
    images.image: "screen_circular_shadow.png" COMP;
    data.item: "screen.bg" "fullscreen.bg";
    parts {
@@ -765,7 +768,7 @@ group { name: "e/comp/border/fullscreen";
    programs {
       program {
          name: "visible_on";
-         signal: "e,state,visible,on"; source: "e";
+         signal: "e,state,visible"; source: "e";
          action: STATE_SET "visible" 0.0;
          transition: DECELERATE 0.25;
          target: "scr_shadow";
@@ -773,7 +776,7 @@ group { name: "e/comp/border/fullscreen";
       }
       program {
          name: "visible_on2";
-         signal: "e,state,visible,on"; source: "e";
+         signal: "e,state,visible"; source: "e";
          action: STATE_SET "visible1" 0.0;
          transition: DECELERATE 0.05;
          target: "clipper";
@@ -792,9 +795,21 @@ group { name: "e/comp/border/fullscreen";
       program { name: "show3";
          action: SIGNAL_EMIT "e,action,show,done" "e";
       }
+      program {
+         signal: "e,state,visible"; source: "e";
+         action: ACTION_STOP;
+         target: "visible_off";
+         target: "visible_off2";
+      }
+      program {
+         signal: "e,state,hidden"; source: "e";
+         action: ACTION_STOP;
+         target: "visible_on";
+         target: "visible_on2";
+      }
       program {
          name: "visible_off";
-         signal: "e,state,visible,off"; source: "e";
+         signal: "e,state,hidden"; source: "e";
          action: STATE_SET "default" 0.0;
          transition: DECELERATE 0.25;
          target: "scr_shadow";
@@ -802,7 +817,7 @@ group { name: "e/comp/border/fullscreen";
       }
       program {
          name: "visible_off2";
-         signal: "e,state,visible,off"; source: "e";
+         signal: "e,state,hidden"; source: "e";
          action: STATE_SET "visible1" 0.0;
          transition: DECELERATE 0.2;
          target: "clipper";
@@ -824,8 +839,8 @@ group { name: "e/comp/border/fullscreen";
    }
 }
 
-group { name: "e/comp/border/fullscreen/fast";
-   inherit: "e/comp/border/fullscreen";
+group { name: "e/comp/frame/fullscreen/fast";
+   inherit: "e/comp/frame/fullscreen";
    programs {
       program {
          name: "visible_on";
diff --git a/data/themes/edc/comp_compat.edc b/data/themes/edc/comp_compat.edc
new file mode 100644 (file)
index 0000000..5b9f7eb
--- /dev/null
@@ -0,0 +1,610 @@
+group { name: "e/comp/border/default";
+   images.image: "win_shadow.png" COMP;
+   images.image: "win_glow.png" COMP;
+   parts {
+      part { name: "clipper"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.relative: -1.0  -1.0;
+            rel1.offset: -9999 -9999;
+            rel2.relative: 2.0   2.0;
+            rel2.offset: 9999  9999;
+            color: 255 255 255 0;
+            visible: 0;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            color: 255 255 255 255;
+            visible: 1;
+         }
+      }
+      part { name: "shadow"; mouse_events: 0;
+         clip_to: "clipper";
+         description { state: "default" 0.0;
+            image.normal: "win_shadow.png";
+            image.border: 14 14 14 14;
+            image.middle: 0;
+            rel1.to: "e.swallow.content";
+            rel1.offset: -7  -3;
+            rel2.to: "e.swallow.content";
+            rel2.offset: 6 11;
+            fill.smooth: 0;
+         }
+         description { state: "hidden" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part { name: "glow"; mouse_events: 0;
+         clip_to: "clipper";
+         description { state: "default" 0.0;
+            image.normal: "win_glow.png";
+            image.border: 9 9 9 9;
+            image.middle: 0;
+            rel1.to: "e.swallow.content";
+            rel1.offset: -5  -5;
+            rel2.to: "e.swallow.content";
+            rel2.offset: 4 4;
+            fill.smooth: 0;
+            color: 255 255 255 0;
+            visible: 0;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            color: 255 255 255 255;
+            visible: 1;
+         }
+      }
+      part { name: "shower"; type: SPACER;
+         description { state: "default" 0.0;
+            rel1.relative: 0.05 0.05;
+            rel2.relative: 0.95 0.95;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            rel1.relative: 0.0  0.0;
+            rel2.relative: 1.0  1.0;
+         }
+      }
+      part { name: "trans-clipper";
+         type: RECT;
+         clip_to: "clipper";
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            color_class: "comp_alpha";
+            rel1.to: "clipper";
+            rel2.to: "clipper";
+         }
+      }
+      part { name: "focus-clipper";
+         type: RECT;
+         clip_to: "trans-clipper";
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            color_class: "comp_focus-out_color";
+            rel1.to: "clipper";
+            rel2.to: "clipper";
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            color_class: "";
+            color: 255 255 255 255;
+         }
+      }
+      part { name: "e.swallow.content"; type: SWALLOW;
+         clip_to: "focus-clipper";
+         description { state: "default" 0.0;
+            rel1.to: "shower";
+            rel2.to: "shower";
+         }
+      }
+   }
+   programs {
+      program {
+         signal: "e,state,shadow,on"; source: "e";
+         action: STATE_SET "default" 0.0;
+         target: "shadow";
+      }
+      program {
+         signal: "e,state,shadow,off"; source: "e";
+         action: STATE_SET "hidden" 0.0;
+         target: "shadow";
+      }
+      program {
+         name: "visible_on";
+         signal: "e,state,visible,on"; source: "e";
+         action: STATE_SET "visible" 0.0;
+         transition: DECELERATE 0.15;
+         target: "clipper";
+         target: "shower";
+         after: "show2";
+      }
+      program { name: "show2";
+         action: SIGNAL_EMIT "e,action,show,done" "e";
+      }
+      program {
+         name: "visible_off";
+         signal: "e,state,visible,off"; source: "e";
+         action: STATE_SET "default" 0.0;
+         transition: DECELERATE 0.30;
+         target: "clipper";
+         target: "shower";
+         after: "hide2";
+      }
+      program { name: "hide2";
+         action: SIGNAL_EMIT "e,action,hide,done" "e";
+      }
+      program {
+         name: "focus_on";
+         signal: "e,state,focus,on"; source: "e";
+         action: STATE_SET "focused" 0.0;
+         transition: SINUSOIDAL 0.1;
+         target: "glow";
+         target: "focus-clipper";
+         after: "focus2";
+      }
+      program { name: "focus2";
+         action: STATE_SET "default" 0.0;
+         transition: SINUSOIDAL 0.4;
+         target: "glow";
+      }
+      program {
+         name: "focus_off";
+         signal: "e,state,focus,off"; source: "e";
+         action: STATE_SET "default" 0.0;
+         transition: SINUSOIDAL 0.1;
+         target: "focus-clipper";
+         after: "focus_off2";
+      }
+      program {
+         name: "focus_off2";
+         action: STATE_SET "default" 0.0;
+         transition: SINUSOIDAL 0.4;
+         target: "glow";
+      }
+      program { name: "urgent1";
+         signal: "e,state,urgent,on"; source: "e";
+         action: STATE_SET "focused" 0.0;
+         transition: SINUSOIDAL 0.3;
+         target: "glow";
+         after: "urgent2";
+      }
+      program { name: "urgent2";
+         action: STATE_SET "default" 0.0;
+         transition: SINUSOIDAL 0.3;
+         target: "glow";
+         after: "urgent1";
+      }
+      program {
+         signal: "e,state,urgent,off"; source: "e";
+         action: STATE_SET "default" 0.0;
+         transition: SINUSOIDAL 0.6 CURRENT;
+         target: "glow";
+      }
+   }
+}
+
+group { name: "e/comp/border/rotate";
+   inherit: "e/comp/border/default";
+   parts {
+      part { name: "e.swallow.content";
+         description { state: "default";
+            map {
+               on: 1;
+               rotation {
+                  z: 0;
+               }
+            }
+         }
+         description { state: "focus-out";
+            inherit: "default";
+            map.rotation.z: 180;
+         }
+      }
+      part {
+         name: "shower";
+         description { state: "default";
+            rel1.relative: 0.0  0.0;
+            rel2.relative: 1.0  1.0;
+         }
+      }
+   }
+   programs {
+      program { name: "focus3";
+         signal: "e,state,focus,on"; source: "e";
+         action: STATE_SET "default" 0.0;
+         target: "e.swallow.content";
+         transition: LINEAR 0.3;
+      }
+      program { name: "focus_off3";
+         signal: "e,state,focus,off"; source: "e";
+         action: STATE_SET "focus-out" 0.0;
+         target: "e.swallow.content";
+         transition: LINEAR 0.3;
+      }
+   }
+}
+
+group { name: "e/comp/border/rotate/fast";
+   inherit: "e/comp/border/rotate";
+   programs {
+      program { name: "focus3";
+         transition: LINEAR 0;
+      }
+      program { name: "focus_off3";
+         transition: LINEAR 0;
+      }
+   }
+}
+
+group { name: "e/comp/border/flip";
+   inherit: "e/comp/border/rotate";
+   parts {
+      part { name: "e.swallow.content";
+         description { state: "default";
+            map {
+               on: 1;
+               rotation {
+                  z: 0;
+                  y: 0;
+               }
+               backface_cull: 1;
+            }
+         }
+         description { state: "focus-out";
+            inherit: "default";
+            map.rotation {
+               z: 0;
+               y: 180;
+            }
+         }
+      }
+   }
+}
+
+group { name: "e/comp/border/flip/fast";
+   inherit: "e/comp/border/flip";
+   programs {
+      program { name: "focus3";
+         transition: LINEAR 0;
+      }
+      program { name: "focus_off3";
+         transition: LINEAR 0;
+      }
+   }
+}
+
+group { name: "e/comp/border/popup";
+   inherit: "e/comp/border/default";
+   parts {
+      part { name: "focus-clipper";
+         description { state: "default";
+            color_class: "";
+         }
+      }
+   }
+}
+
+group { name: "e/comp/border/default/fast";
+   inherit: "e/comp/border/default";
+   programs {
+      program {
+         name: "visible_on";
+         transition: DECELERATE 0;
+      }
+      program {
+         name: "visible_off";
+         transition: DECELERATE 0;
+      }
+      program {
+         name: "focus_on";
+         signal: "e,state,focus,on"; source: "e";
+         action: STATE_SET "focused" 0.0;
+         transition: SINUSOIDAL 0.1;
+         target: "glow";
+         target: "focus-clipper";
+         after: "focus2";
+      }
+      program { name: "focus2";
+         action: STATE_SET "default" 0.0;
+         transition: SINUSOIDAL 0.1;
+         target: "glow";
+      }
+      program {
+         name: "focus_off";
+         transition: SINUSOIDAL 0;
+      }
+   }
+}
+
+group { name: "e/comp/border/popup/fast";
+   inherit: "e/comp/border/default/fast";
+   parts {
+      part { name: "focus-clipper";
+         description { state: "default";
+            color_class: "";
+         }
+      }
+   }
+}
+
+group { name: "e/comp/border/none";
+   parts {
+      part { name: "e.swallow.content"; type: SWALLOW;
+         description { state: "default" 0.0;
+         }
+      }
+   }
+   programs {
+      program {
+         signal: "e,state,visible,on"; source: "e";
+         action: SIGNAL_EMIT "e,action,show,done" "e";
+      }
+      program {
+         signal: "e,state,visible,off"; source: "e";
+         action: SIGNAL_EMIT "e,action,hide,done" "e";
+      }
+   }
+}
+
+group { name: "e/comp/border/still";
+   inherit: "e/comp/border/default";
+   parts {
+      part { name: "shower";
+         description { state: "default" 0.0;
+            rel1.relative: 0.0 0.0;
+            rel2.relative: 1.0 1.0;
+         }
+      }
+   }
+}
+
+group { name: "e/comp/border/still/fast";
+   inherit: "e/comp/border/default/fast";
+   parts {
+      part { name: "shower";
+         description { state: "default" 0.0;
+            rel1.relative: 0.0 0.0;
+            rel2.relative: 1.0 1.0;
+         }
+      }
+   }
+}
+
+group { name: "e/comp/border/menu";
+   inherit: "e/comp/border/popup";
+   parts {
+      part { name: "shower";
+         description { state: "default" 0.0;
+            rel1.relative: 0.05 0.0;
+            rel2.relative: 0.95 0.9;
+         }
+      }
+   }
+}
+
+group { name: "e/comp/border/menu/fast";
+   inherit: "e/comp/border/popup/fast";
+   parts {
+      part { name: "shower";
+         description { state: "default" 0.0;
+            rel1.relative: 0.05 0.0;
+            rel2.relative: 0.95 0.9;
+         }
+      }
+   }
+}
+
+group { name: "e/comp/border/everything";
+   inherit: "e/comp/border/popup";
+   parts {
+      part { name: "shower";
+         description { state: "default" 0.0;
+            rel1.relative: -0.3 -0.3;
+            rel2.relative: 1.3 1.3;
+         }
+      }
+   }
+}
+
+group { name: "e/comp/border/everything/fast";
+   inherit: "e/comp/border/popup/fast";
+   parts {
+      part { name: "shower";
+         description { state: "default" 0.0;
+            rel1.relative: -0.3 -0.3;
+            rel2.relative: 1.3 1.3;
+         }
+      }
+   }
+}
+
+group { name: "e/comp/border/fullscreen";
+   images.image: "screen_circular_shadow.png" COMP;
+   data.item: "screen.bg" "fullscreen.bg";
+   parts {
+      part { name: "clipper"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.relative: -1.0  -1.0;
+            rel1.offset: -9999 -9999;
+            rel2.relative: 2.0   2.0;
+            rel2.offset: 9999  9999;
+            color: 255 255 255 0;
+            visible: 0;
+         }
+         description { state: "visible1" 0.0;
+            inherit: "default" 0.0;
+            color: 255 255 255 255;
+            visible: 1;
+         }
+         description { state: "visible2" 0.0;
+            inherit: "default" 0.0;
+            color: 255 255 255 255;
+            visible: 1;
+         }
+      }
+      part { name: "clipper_all"; type: RECT;
+         description { state: "default" 0.0;
+         }
+      }
+      part { name: "scr_shadow"; mouse_events: 0;
+         clip_to: "clipper_all";
+         description { state: "default" 0.0;
+            rel1.relative: -1.0 -1.0;
+            rel2.relative: 2.0 2.0;
+            image.normal: "screen_circular_shadow.png";
+            fill.smooth: 0;
+            color: 255 255 255 0;
+            visible: 0;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            rel1.relative: 0.0 0.0;
+            rel2.relative: 1.0 1.0;
+            color: 255 255 255 255;
+            visible: 1;
+         }
+      }
+      part { name: "scr_shade"; type: RECT;
+         description { state: "default" 0.0;
+            color: 0 0 0 0;
+            visible: 0;
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            color: 0 0 0 255;
+            visible: 1;
+         }
+      }
+      part { name: "shower"; type: SPACER;
+         description { state: "default" 0.0;
+            rel1.relative: 0.5 0.5;
+            rel2.relative: 0.5 0.5;
+         }
+         description { state: "visible1" 0.0;
+            inherit: "default" 0.0;
+            rel1.relative: 0.1 0.49;
+            rel1.offset: 0 0;
+            rel2.relative: 0.9 0.51;
+            rel2.offset: -1 -1;
+         }
+         description { state: "visible2" 0.0;
+            inherit: "default" 0.0;
+            rel1.relative: 0.0  0.0;
+            rel2.relative: 1.0  1.0;
+         }
+      }
+      part { name: "e.swallow.content"; type: SWALLOW;
+         clip_to: "clipper";
+         description { state: "default" 0.0;
+            rel1.to: "shower";
+            rel2.to: "shower";
+         }
+      }
+      part { name: "fader"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.to: "e.swallow.content";
+            rel2.to: "e.swallow.content";
+            color: 255 255 255 0;
+            visible: 0;
+         }
+         description { state: "visible1" 0.0;
+            inherit: "default" 0.0;
+            color: 255 255 255 255;
+            visible: 1;
+         }
+         description { state: "visible2" 0.0;
+            inherit: "default" 0.0;
+            color: 255 255 255 0;
+            visible: 0;
+         }
+      }
+   }
+   programs {
+      program {
+         name: "visible_on";
+         signal: "e,state,visible,on"; source: "e";
+         action: STATE_SET "visible" 0.0;
+         transition: DECELERATE 0.25;
+         target: "scr_shadow";
+         target: "scr_shade";
+      }
+      program {
+         name: "visible_on2";
+         signal: "e,state,visible,on"; source: "e";
+         action: STATE_SET "visible1" 0.0;
+         transition: DECELERATE 0.05;
+         target: "clipper";
+         target: "shower";
+         target: "fader";
+         after: "show2";
+      }
+      program { name: "show2";
+         action: STATE_SET "visible2" 0.0;
+         transition: DECELERATE 0.20;
+         target: "clipper";
+         target: "shower";
+         target: "fader";
+         after: "show3";
+      }
+      program { name: "show3";
+         action: SIGNAL_EMIT "e,action,show,done" "e";
+      }
+      program {
+         name: "visible_off";
+         signal: "e,state,visible,off"; source: "e";
+         action: STATE_SET "default" 0.0;
+         transition: DECELERATE 0.25;
+         target: "scr_shadow";
+         target: "scr_shade";
+      }
+      program {
+         name: "visible_off2";
+         signal: "e,state,visible,off"; source: "e";
+         action: STATE_SET "visible1" 0.0;
+         transition: DECELERATE 0.2;
+         target: "clipper";
+         target: "shower";
+         target: "fader";
+         after: "hide2";
+      }
+      program { name: "hide2";
+         action: STATE_SET "default" 0.0;
+         transition: DECELERATE 0.05;
+         target: "clipper";
+         target: "shower";
+         target: "fader";
+         after: "hide3";
+      }
+      program { name: "hide3";
+         action: SIGNAL_EMIT "e,action,hide,done" "e";
+      }
+   }
+}
+
+group { name: "e/comp/border/fullscreen/fast";
+   inherit: "e/comp/border/fullscreen";
+   programs {
+      program {
+         name: "visible_on";
+         transition: DECELERATE 0;
+      }
+      program {
+         name: "visible_on2";
+         transition: DECELERATE 0;
+      }
+      program { name: "show2";
+         transition: DECELERATE 0;
+      }
+      program {
+         name: "visible_off";
+         transition: DECELERATE 0;
+      }
+      program {
+         name: "visible_off2";
+         transition: DECELERATE 0;
+      }
+      program { name: "hide2";
+         transition: DECELERATE 0;
+      }
+   }
+}