--- SLE/plymouth/theme/SLE.script	2020-09-14 17:24:31.654605557 +0200
+++ SLE/plymouth/theme/SLE.script	2025-02-11 06:42:08.588645000 +0100
@@ -18,6 +18,24 @@
   return height;
 };
 
+logo.original_image = ImageNew("logo.png");
+if (Window.GetMaxWidth() > Window.GetMaxHeight()) {
+  if (Window.GetMaxHeight() > logo.image.GetHeight()*3)
+    logo.image = logo.original_image;
+  else
+    logo.image = logo.original_image.Scale(logo.original_image.GetWidth()*((Window.GetMaxHeight()/3)/logo.original_image.GetHeight()), Window.GetMaxHeight()/3);
+}
+else {
+  if (Window.GetMaxWidth() > logo.image.GetWidth()*3)
+    logo.image = logo.original_image;
+  else
+    logo.image = logo.original_image.Scale(Window.GetMaxWidth()/3, logo.original_image.GetHeight()*((Window.GetMaxWidth()/3)/logo.original_image.GetWidth()));
+}
+logo.sprite = SpriteNew();
+logo.sprite.SetImage(logo.image);
+logo.sprite.SetX(Window.GetX()/2 + (Window.GetMaxWidth() - logo.image.GetWidth())/2 );
+logo.sprite.SetY(Window.GetY() + Window.GetMaxHeight()/2 - logo.image.GetHeight()/3);
+
 if (Plymouth.GetMode() == "suspend" || Plymouth.GetMode() == "resume") {
   background.original_image = ImageNew("suspend.png");
   Window.SetBackgroundTopColor(0.102, 0.102, 0.102);
@@ -28,19 +46,15 @@
   Window.SetBackgroundTopColor(0.102, 0.102, 0.102);
   Window.SetBackgroundBottomColor(0.102, 0.102, 0.102);
 
-  for (i = 0; i < 4; i++)
-     anim_images[i] = Image("progress-" + i + ".png");
+  for (i = 0; i < 4; i++) {
+     anim_orignial_images[i] = Image("progress-" + i + ".png");
+     anim_images[i] = anim_orignial_images[i].Scale(logo.image.GetWidth(), anim_orignial_images[i].GetHeight()*(logo.image.GetWidth()/anim_orignial_images[i].GetWidth()));
+  }
   anim_sprite = Sprite();
   anim_sprite.SetX((Window.GetX() + Window.GetMaxWidth() - anim_images[0].GetWidth()) / 2 );
-  anim_sprite.SetY(Window.GetY() + Window.GetMaxHeight()/4);
+  anim_sprite.SetY(logo.sprite.GetY() - anim_images[0].GetHeight()*2);
 }
 
-logo.image = ImageNew("logo.png");
-logo.sprite = SpriteNew();
-logo.sprite.SetImage(logo.image);
-logo.sprite.SetX((Window.GetX() + Window.GetMaxWidth() - logo.image.GetWidth()) / 2 );
-logo.sprite.SetY(Window.GetY() + Window.GetMaxHeight() - logo.image.GetHeight()*2);
-
 background.image = background.original_image.Scale(Window.GetMaxWidth() , Window.GetMaxHeight());
 background.sprite = SpriteNew();
 background.sprite.SetImage(background.image);
@@ -78,28 +92,31 @@
     local.entry;
     local.prompt_sprite;
     
-    box.image = ImageNew("box.png");
-    lock.image = ImageNew("lock.png");
-    entry.image = ImageNew("entry.png");
-    
+    box.original_image = ImageNew("box.png");
+    lock.original_image = ImageNew("lock.png");
+    entry.original_image = ImageNew("entry.png");
+
+    box.image = box.original_image.Scale(logo.image.GetWidth(), box.original_image.GetHeight()*(logo.image.GetWidth()/box.original_image.GetWidth()));
     box.sprite = SpriteNew();
     box.sprite.SetImage(box.image);
-    box.x = Window.GetX() + Window.GetWidth()  / 2 - box.image.GetWidth()/2;
-    box.y = Window.GetY() + Window.GetHeight() - box.image.GetHeight() - 20 ;
+    box.x = logo.sprite.GetX();
+    box.y = logo.sprite.GetY() + logo.image.GetHeight() + anim_images[0].GetHeight()*1.5;
     box.z = 10000;
     box.sprite.SetPosition(box.x, box.y, box.z);
-    
+   
+    lock.image = lock.original_image.Scale(lock.original_image.GetWidth()/lock.original_image.GetHeight()*box.image.GetHeight()*2/5, box.image.GetHeight()*2/5);
     lock.sprite = SpriteNew();
     lock.sprite.SetImage(lock.image);
-    lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth()) / 2;
-    lock.y = box.y + box.image.GetHeight() - lock.image.GetHeight() - 20 ;
+    lock.x = box.x +  box.image.GetHeight()*3/10;
+    lock.y = box.y + (box.image.GetHeight() - lock.image.GetHeight())/2;
     lock.z = box.z + 1;
     lock.sprite.SetPosition(lock.x, lock.y, lock.z);
     
+    entry.image = entry.original_image.Scale( entry.original_image.GetWidth()/entry.original_image.GetHeight()*box.image.GetHeight()*2/5, box.image.GetHeight()*2/5);
     entry.sprite = SpriteNew();
     entry.sprite.SetImage(entry.image);
-    entry.x = lock.x + lock.image.GetWidth();
-    entry.y = box.y + box.image.GetHeight() - entry.image.GetHeight() - 20;
+    entry.x = lock.x + box.image.GetHeight()*2/5;
+    entry.y = lock.y;
     entry.z = box.z + 1;
     entry.sprite.SetPosition(entry.x, entry.y, entry.z);
 
@@ -217,7 +234,7 @@
   progress_box.right_edge_sprite.SetImage(progress_box.edge);
 
   progress_box.x = Window.GetX() + Window.GetWidth()  / 2 -    progress_box.image.GetWidth()  / 2;
-  progress_box.y = Window.GetY() + Window.GetHeight() * 0.86 - progress_box.image.GetHeight() / 2;
+  progress_box.y = Window.GetY() + Window.GetHeight() - logo.image.GetHeight()* 2 - progress_box.image.GetHeight();
 
   progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0);
   progress_box.left_edge_sprite.SetPosition(progress_box.x-1, progress_box.y, 0);
