# Omarchy Plymouth Theme Script Window.SetBackgroundTopColor(0.101, 0.105, 0.149); Window.SetBackgroundBottomColor(0.101, 0.105, 0.149); logo.image = Image("logo.png"); logo.sprite = Sprite(logo.image); logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2); logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2); logo.sprite.SetOpacity (1); #----------------------------------------- Dialogue -------------------------------- # Dialog elements - create once, reuse lock.image = Image("lock.png"); entry.image = Image("entry.png"); bullet.image = Image("bullet.png"); entry.sprite = Sprite(entry.image); entry.x = Window.GetX() + Window.GetWidth()/2 - entry.image.GetWidth() / 2; entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40; entry.sprite.SetPosition(entry.x, entry.y, 10001); entry.sprite.SetOpacity(0); lock.sprite = Sprite(lock.image); lock.x = entry.x - lock.image.GetWidth() - 10; lock.y = entry.y + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; lock.sprite.SetPosition(lock.x, lock.y, 10001); lock.sprite.SetOpacity(0); # Bullet array bullet.sprites = []; fun display_normal_callback () { # Hide dialog lock.sprite.SetOpacity(0); entry.sprite.SetOpacity(0); for (index = 0; bullet.sprites[index]; index++) bullet.sprites[index].SetOpacity(0); # Show progress progress_box.sprite.SetOpacity(1); progress_bar.sprite.SetOpacity(1); } fun display_password_callback (prompt, bullets) { # Hide progress progress_box.sprite.SetOpacity(0); progress_bar.sprite.SetOpacity(0); # Show dialog lock.sprite.SetOpacity(1); entry.sprite.SetOpacity(1); # Clear all bullets first for (index = 0; bullet.sprites[index]; index++) bullet.sprites[index].SetOpacity(0); # Create and show bullets for current password for (index = 0; index < bullets; index++) { if (!bullet.sprites[index]) { bullet.sprites[index] = Sprite(bullet.image); bullet.x = entry.x + 10 + index * (bullet.image.GetWidth() + 5); bullet.y = entry.y + entry.image.GetHeight() / 2 - bullet.image.GetHeight() / 2; bullet.sprites[index].SetPosition(bullet.x, bullet.y, 10002); } bullet.sprites[index].SetOpacity(1); } } Plymouth.SetDisplayNormalFunction(display_normal_callback); Plymouth.SetDisplayPasswordFunction(display_password_callback); #----------------------------------------- Progress Bar -------------------------------- progress_box.image = Image("progress_box.png"); progress_box.sprite = Sprite(progress_box.image); progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; progress_box.y = entry.y + entry.image.GetHeight() / 2 - progress_box.image.GetHeight() / 2; progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); progress_box.sprite.SetOpacity(0); progress_bar.original_image = Image("progress_bar.png"); progress_bar.sprite = Sprite(); progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; progress_bar.y = progress_box.y + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2; progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); progress_bar.sprite.SetOpacity(0); fun progress_callback (duration, progress) { if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress)) { progress_bar.image = progress_bar.original_image.Scale(progress_bar.original_image.GetWidth() * progress, progress_bar.original_image.GetHeight()); progress_bar.sprite.SetImage (progress_bar.image); } } Plymouth.SetBootProgressFunction(progress_callback); #----------------------------------------- Quit -------------------------------- fun quit_callback () { logo.sprite.SetOpacity (1); } Plymouth.SetQuitFunction(quit_callback); #----------------------------------------- Message -------------------------------- message_sprite = Sprite(); message_sprite.SetPosition(10, 10, 10000); fun display_message_callback (text) { my_image = Image.Text(text, 1, 1, 1); message_sprite.SetImage(my_image); } fun hide_message_callback (text) { message_sprite.SetOpacity(0); } Plymouth.SetDisplayMessageFunction (display_message_callback); Plymouth.SetHideMessageFunction (hide_message_callback);