diff --git a/themes/catppuccin/plymouth/bullet.png b/themes/catppuccin/plymouth/bullet.png new file mode 100644 index 00000000..e5c5a157 Binary files /dev/null and b/themes/catppuccin/plymouth/bullet.png differ diff --git a/themes/catppuccin/plymouth/entry.png b/themes/catppuccin/plymouth/entry.png new file mode 100644 index 00000000..df2cd6ba Binary files /dev/null and b/themes/catppuccin/plymouth/entry.png differ diff --git a/themes/catppuccin/plymouth/lock.png b/themes/catppuccin/plymouth/lock.png new file mode 100644 index 00000000..82bd157c Binary files /dev/null and b/themes/catppuccin/plymouth/lock.png differ diff --git a/themes/catppuccin/plymouth/logo.png b/themes/catppuccin/plymouth/logo.png new file mode 100644 index 00000000..c5bec788 Binary files /dev/null and b/themes/catppuccin/plymouth/logo.png differ diff --git a/themes/catppuccin/plymouth/omarchy.plymouth b/themes/catppuccin/plymouth/omarchy.plymouth new file mode 100644 index 00000000..1c8b4013 --- /dev/null +++ b/themes/catppuccin/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x24273a + + diff --git a/themes/catppuccin/plymouth/omarchy.script b/themes/catppuccin/plymouth/omarchy.script new file mode 100644 index 00000000..f3b9f0c9 --- /dev/null +++ b/themes/catppuccin/plymouth/omarchy.script @@ -0,0 +1,236 @@ +# Omarchy Plymouth Theme Script +Window.SetBackgroundTopColor(0.141, 0.153, 0.227); +Window.SetBackgroundBottomColor(0.141, 0.153, 0.227); + +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); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.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.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- 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 = Window.GetY() + Window.GetHeight() * 0.75 - 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 = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (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); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + 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); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +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); diff --git a/themes/catppuccin/plymouth/progress_bar.png b/themes/catppuccin/plymouth/progress_bar.png new file mode 100644 index 00000000..b0715e51 Binary files /dev/null and b/themes/catppuccin/plymouth/progress_bar.png differ diff --git a/themes/catppuccin/plymouth/progress_box.png b/themes/catppuccin/plymouth/progress_box.png new file mode 100644 index 00000000..6015b08a Binary files /dev/null and b/themes/catppuccin/plymouth/progress_box.png differ diff --git a/themes/catppuccin/plymouth/throbber-01.png b/themes/catppuccin/plymouth/throbber-01.png new file mode 100644 index 00000000..da87e303 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-01.png differ diff --git a/themes/catppuccin/plymouth/throbber-02.png b/themes/catppuccin/plymouth/throbber-02.png new file mode 100644 index 00000000..13e07fa4 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-02.png differ diff --git a/themes/catppuccin/plymouth/throbber-03.png b/themes/catppuccin/plymouth/throbber-03.png new file mode 100644 index 00000000..4944f1a1 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-03.png differ diff --git a/themes/catppuccin/plymouth/throbber-04.png b/themes/catppuccin/plymouth/throbber-04.png new file mode 100644 index 00000000..7d3a10d0 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-04.png differ diff --git a/themes/catppuccin/plymouth/throbber-05.png b/themes/catppuccin/plymouth/throbber-05.png new file mode 100644 index 00000000..f6f87b06 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-05.png differ diff --git a/themes/catppuccin/plymouth/throbber-06.png b/themes/catppuccin/plymouth/throbber-06.png new file mode 100644 index 00000000..b56d25bb Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-06.png differ diff --git a/themes/catppuccin/plymouth/throbber-07.png b/themes/catppuccin/plymouth/throbber-07.png new file mode 100644 index 00000000..009cd78b Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-07.png differ diff --git a/themes/catppuccin/plymouth/throbber-08.png b/themes/catppuccin/plymouth/throbber-08.png new file mode 100644 index 00000000..41015f65 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-08.png differ diff --git a/themes/catppuccin/plymouth/throbber-09.png b/themes/catppuccin/plymouth/throbber-09.png new file mode 100644 index 00000000..e9b0fe6d Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-09.png differ diff --git a/themes/catppuccin/plymouth/throbber-10.png b/themes/catppuccin/plymouth/throbber-10.png new file mode 100644 index 00000000..ad1fa72f Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-10.png differ diff --git a/themes/catppuccin/plymouth/throbber-11.png b/themes/catppuccin/plymouth/throbber-11.png new file mode 100644 index 00000000..7a6b13d7 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-11.png differ diff --git a/themes/catppuccin/plymouth/throbber-12.png b/themes/catppuccin/plymouth/throbber-12.png new file mode 100644 index 00000000..e175fe00 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-12.png differ diff --git a/themes/catppuccin/plymouth/throbber-13.png b/themes/catppuccin/plymouth/throbber-13.png new file mode 100644 index 00000000..33887f7f Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-13.png differ diff --git a/themes/catppuccin/plymouth/throbber-14.png b/themes/catppuccin/plymouth/throbber-14.png new file mode 100644 index 00000000..516830d6 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-14.png differ diff --git a/themes/catppuccin/plymouth/throbber-15.png b/themes/catppuccin/plymouth/throbber-15.png new file mode 100644 index 00000000..9258c7a1 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-15.png differ diff --git a/themes/catppuccin/plymouth/throbber-16.png b/themes/catppuccin/plymouth/throbber-16.png new file mode 100644 index 00000000..3ddeebea Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-16.png differ diff --git a/themes/catppuccin/plymouth/throbber-17.png b/themes/catppuccin/plymouth/throbber-17.png new file mode 100644 index 00000000..a959e563 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-17.png differ diff --git a/themes/catppuccin/plymouth/throbber-18.png b/themes/catppuccin/plymouth/throbber-18.png new file mode 100644 index 00000000..e128bcc8 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-18.png differ diff --git a/themes/catppuccin/plymouth/throbber-19.png b/themes/catppuccin/plymouth/throbber-19.png new file mode 100644 index 00000000..e32b20ad Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-19.png differ diff --git a/themes/catppuccin/plymouth/throbber-20.png b/themes/catppuccin/plymouth/throbber-20.png new file mode 100644 index 00000000..68a19889 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-20.png differ diff --git a/themes/catppuccin/plymouth/throbber-21.png b/themes/catppuccin/plymouth/throbber-21.png new file mode 100644 index 00000000..e6d2700d Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-21.png differ diff --git a/themes/catppuccin/plymouth/throbber-22.png b/themes/catppuccin/plymouth/throbber-22.png new file mode 100644 index 00000000..284bc04e Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-22.png differ diff --git a/themes/catppuccin/plymouth/throbber-23.png b/themes/catppuccin/plymouth/throbber-23.png new file mode 100644 index 00000000..a05003c9 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-23.png differ diff --git a/themes/catppuccin/plymouth/throbber-24.png b/themes/catppuccin/plymouth/throbber-24.png new file mode 100644 index 00000000..54e1b5ce Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-24.png differ diff --git a/themes/catppuccin/plymouth/throbber-25.png b/themes/catppuccin/plymouth/throbber-25.png new file mode 100644 index 00000000..d6858d5d Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-25.png differ diff --git a/themes/catppuccin/plymouth/throbber-26.png b/themes/catppuccin/plymouth/throbber-26.png new file mode 100644 index 00000000..2c69deca Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-26.png differ diff --git a/themes/catppuccin/plymouth/throbber-27.png b/themes/catppuccin/plymouth/throbber-27.png new file mode 100644 index 00000000..595667be Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-27.png differ diff --git a/themes/catppuccin/plymouth/throbber-28.png b/themes/catppuccin/plymouth/throbber-28.png new file mode 100644 index 00000000..50487d6b Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-28.png differ diff --git a/themes/catppuccin/plymouth/throbber-29.png b/themes/catppuccin/plymouth/throbber-29.png new file mode 100644 index 00000000..a4427baa Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-29.png differ diff --git a/themes/catppuccin/plymouth/throbber-30.png b/themes/catppuccin/plymouth/throbber-30.png new file mode 100644 index 00000000..b2e9ebf8 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-30.png differ diff --git a/themes/everforest/plymouth/bullet.png b/themes/everforest/plymouth/bullet.png new file mode 100644 index 00000000..a0e9966a Binary files /dev/null and b/themes/everforest/plymouth/bullet.png differ diff --git a/themes/everforest/plymouth/entry.png b/themes/everforest/plymouth/entry.png new file mode 100644 index 00000000..4ee9d758 Binary files /dev/null and b/themes/everforest/plymouth/entry.png differ diff --git a/themes/everforest/plymouth/lock.png b/themes/everforest/plymouth/lock.png new file mode 100644 index 00000000..7a37973b Binary files /dev/null and b/themes/everforest/plymouth/lock.png differ diff --git a/themes/everforest/plymouth/logo.png b/themes/everforest/plymouth/logo.png new file mode 100644 index 00000000..4425be40 Binary files /dev/null and b/themes/everforest/plymouth/logo.png differ diff --git a/themes/everforest/plymouth/omarchy.plymouth b/themes/everforest/plymouth/omarchy.plymouth new file mode 100644 index 00000000..bb3abed2 --- /dev/null +++ b/themes/everforest/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x2d353b + + diff --git a/themes/everforest/plymouth/omarchy.script b/themes/everforest/plymouth/omarchy.script new file mode 100644 index 00000000..f0f6f500 --- /dev/null +++ b/themes/everforest/plymouth/omarchy.script @@ -0,0 +1,237 @@ +# Omarchy Plymouth Theme Script + +Window.SetBackgroundTopColor(0.176, 0.208, 0.231); +Window.SetBackgroundBottomColor(0.176, 0.208, 0.231); + +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); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.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.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- 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 = Window.GetY() + Window.GetHeight() * 0.75 - 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 = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (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); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + 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); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +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); diff --git a/themes/everforest/plymouth/progress_bar.png b/themes/everforest/plymouth/progress_bar.png new file mode 100644 index 00000000..e142b2e8 Binary files /dev/null and b/themes/everforest/plymouth/progress_bar.png differ diff --git a/themes/everforest/plymouth/progress_box.png b/themes/everforest/plymouth/progress_box.png new file mode 100644 index 00000000..ac8d117a Binary files /dev/null and b/themes/everforest/plymouth/progress_box.png differ diff --git a/themes/everforest/plymouth/throbber-01.png b/themes/everforest/plymouth/throbber-01.png new file mode 100644 index 00000000..7ae4ebaa Binary files /dev/null and b/themes/everforest/plymouth/throbber-01.png differ diff --git a/themes/everforest/plymouth/throbber-02.png b/themes/everforest/plymouth/throbber-02.png new file mode 100644 index 00000000..2b15d882 Binary files /dev/null and b/themes/everforest/plymouth/throbber-02.png differ diff --git a/themes/everforest/plymouth/throbber-03.png b/themes/everforest/plymouth/throbber-03.png new file mode 100644 index 00000000..bbebb944 Binary files /dev/null and b/themes/everforest/plymouth/throbber-03.png differ diff --git a/themes/everforest/plymouth/throbber-04.png b/themes/everforest/plymouth/throbber-04.png new file mode 100644 index 00000000..5e60b0bb Binary files /dev/null and b/themes/everforest/plymouth/throbber-04.png differ diff --git a/themes/everforest/plymouth/throbber-05.png b/themes/everforest/plymouth/throbber-05.png new file mode 100644 index 00000000..9e2ca62c Binary files /dev/null and b/themes/everforest/plymouth/throbber-05.png differ diff --git a/themes/everforest/plymouth/throbber-06.png b/themes/everforest/plymouth/throbber-06.png new file mode 100644 index 00000000..e99d7fab Binary files /dev/null and b/themes/everforest/plymouth/throbber-06.png differ diff --git a/themes/everforest/plymouth/throbber-07.png b/themes/everforest/plymouth/throbber-07.png new file mode 100644 index 00000000..b51eb4bb Binary files /dev/null and b/themes/everforest/plymouth/throbber-07.png differ diff --git a/themes/everforest/plymouth/throbber-08.png b/themes/everforest/plymouth/throbber-08.png new file mode 100644 index 00000000..2458a6e4 Binary files /dev/null and b/themes/everforest/plymouth/throbber-08.png differ diff --git a/themes/everforest/plymouth/throbber-09.png b/themes/everforest/plymouth/throbber-09.png new file mode 100644 index 00000000..39d79415 Binary files /dev/null and b/themes/everforest/plymouth/throbber-09.png differ diff --git a/themes/everforest/plymouth/throbber-10.png b/themes/everforest/plymouth/throbber-10.png new file mode 100644 index 00000000..f8d5947e Binary files /dev/null and b/themes/everforest/plymouth/throbber-10.png differ diff --git a/themes/everforest/plymouth/throbber-11.png b/themes/everforest/plymouth/throbber-11.png new file mode 100644 index 00000000..1c9ebcc4 Binary files /dev/null and b/themes/everforest/plymouth/throbber-11.png differ diff --git a/themes/everforest/plymouth/throbber-12.png b/themes/everforest/plymouth/throbber-12.png new file mode 100644 index 00000000..a16e1770 Binary files /dev/null and b/themes/everforest/plymouth/throbber-12.png differ diff --git a/themes/everforest/plymouth/throbber-13.png b/themes/everforest/plymouth/throbber-13.png new file mode 100644 index 00000000..868d56ec Binary files /dev/null and b/themes/everforest/plymouth/throbber-13.png differ diff --git a/themes/everforest/plymouth/throbber-14.png b/themes/everforest/plymouth/throbber-14.png new file mode 100644 index 00000000..113e30ca Binary files /dev/null and b/themes/everforest/plymouth/throbber-14.png differ diff --git a/themes/everforest/plymouth/throbber-15.png b/themes/everforest/plymouth/throbber-15.png new file mode 100644 index 00000000..42807015 Binary files /dev/null and b/themes/everforest/plymouth/throbber-15.png differ diff --git a/themes/everforest/plymouth/throbber-16.png b/themes/everforest/plymouth/throbber-16.png new file mode 100644 index 00000000..e74ad0b9 Binary files /dev/null and b/themes/everforest/plymouth/throbber-16.png differ diff --git a/themes/everforest/plymouth/throbber-17.png b/themes/everforest/plymouth/throbber-17.png new file mode 100644 index 00000000..2d1cf09b Binary files /dev/null and b/themes/everforest/plymouth/throbber-17.png differ diff --git a/themes/everforest/plymouth/throbber-18.png b/themes/everforest/plymouth/throbber-18.png new file mode 100644 index 00000000..20c2be99 Binary files /dev/null and b/themes/everforest/plymouth/throbber-18.png differ diff --git a/themes/everforest/plymouth/throbber-19.png b/themes/everforest/plymouth/throbber-19.png new file mode 100644 index 00000000..08d152a3 Binary files /dev/null and b/themes/everforest/plymouth/throbber-19.png differ diff --git a/themes/everforest/plymouth/throbber-20.png b/themes/everforest/plymouth/throbber-20.png new file mode 100644 index 00000000..79f090be Binary files /dev/null and b/themes/everforest/plymouth/throbber-20.png differ diff --git a/themes/everforest/plymouth/throbber-21.png b/themes/everforest/plymouth/throbber-21.png new file mode 100644 index 00000000..11b785c4 Binary files /dev/null and b/themes/everforest/plymouth/throbber-21.png differ diff --git a/themes/everforest/plymouth/throbber-22.png b/themes/everforest/plymouth/throbber-22.png new file mode 100644 index 00000000..5e1f7e78 Binary files /dev/null and b/themes/everforest/plymouth/throbber-22.png differ diff --git a/themes/everforest/plymouth/throbber-23.png b/themes/everforest/plymouth/throbber-23.png new file mode 100644 index 00000000..f1d05e47 Binary files /dev/null and b/themes/everforest/plymouth/throbber-23.png differ diff --git a/themes/everforest/plymouth/throbber-24.png b/themes/everforest/plymouth/throbber-24.png new file mode 100644 index 00000000..9efa0d59 Binary files /dev/null and b/themes/everforest/plymouth/throbber-24.png differ diff --git a/themes/everforest/plymouth/throbber-25.png b/themes/everforest/plymouth/throbber-25.png new file mode 100644 index 00000000..04e9d06e Binary files /dev/null and b/themes/everforest/plymouth/throbber-25.png differ diff --git a/themes/everforest/plymouth/throbber-26.png b/themes/everforest/plymouth/throbber-26.png new file mode 100644 index 00000000..e26b2a62 Binary files /dev/null and b/themes/everforest/plymouth/throbber-26.png differ diff --git a/themes/everforest/plymouth/throbber-27.png b/themes/everforest/plymouth/throbber-27.png new file mode 100644 index 00000000..af869ea4 Binary files /dev/null and b/themes/everforest/plymouth/throbber-27.png differ diff --git a/themes/everforest/plymouth/throbber-28.png b/themes/everforest/plymouth/throbber-28.png new file mode 100644 index 00000000..c6cb1f62 Binary files /dev/null and b/themes/everforest/plymouth/throbber-28.png differ diff --git a/themes/everforest/plymouth/throbber-29.png b/themes/everforest/plymouth/throbber-29.png new file mode 100644 index 00000000..bbe9b3d6 Binary files /dev/null and b/themes/everforest/plymouth/throbber-29.png differ diff --git a/themes/everforest/plymouth/throbber-30.png b/themes/everforest/plymouth/throbber-30.png new file mode 100644 index 00000000..3d6b32a1 Binary files /dev/null and b/themes/everforest/plymouth/throbber-30.png differ diff --git a/themes/gruvbox/plymouth/bullet.png b/themes/gruvbox/plymouth/bullet.png new file mode 100644 index 00000000..8dc004f9 Binary files /dev/null and b/themes/gruvbox/plymouth/bullet.png differ diff --git a/themes/gruvbox/plymouth/entry.png b/themes/gruvbox/plymouth/entry.png new file mode 100644 index 00000000..48d9331a Binary files /dev/null and b/themes/gruvbox/plymouth/entry.png differ diff --git a/themes/gruvbox/plymouth/lock.png b/themes/gruvbox/plymouth/lock.png new file mode 100644 index 00000000..c62bdec1 Binary files /dev/null and b/themes/gruvbox/plymouth/lock.png differ diff --git a/themes/gruvbox/plymouth/logo.png b/themes/gruvbox/plymouth/logo.png new file mode 100644 index 00000000..ed60b891 Binary files /dev/null and b/themes/gruvbox/plymouth/logo.png differ diff --git a/themes/gruvbox/plymouth/omarchy.plymouth b/themes/gruvbox/plymouth/omarchy.plymouth new file mode 100644 index 00000000..df907b6d --- /dev/null +++ b/themes/gruvbox/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x282828 + + diff --git a/themes/gruvbox/plymouth/omarchy.script b/themes/gruvbox/plymouth/omarchy.script new file mode 100644 index 00000000..aa6fb9c2 --- /dev/null +++ b/themes/gruvbox/plymouth/omarchy.script @@ -0,0 +1,237 @@ +# Omarchy Plymouth Theme Script + +Window.SetBackgroundTopColor(0.157, 0.157, 0.157); +Window.SetBackgroundBottomColor(0.157, 0.157, 0.157); + +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); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.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.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- 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 = Window.GetY() + Window.GetHeight() * 0.75 - 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 = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (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); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + 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); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +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); diff --git a/themes/gruvbox/plymouth/progress_bar.png b/themes/gruvbox/plymouth/progress_bar.png new file mode 100644 index 00000000..43f3d208 Binary files /dev/null and b/themes/gruvbox/plymouth/progress_bar.png differ diff --git a/themes/gruvbox/plymouth/progress_box.png b/themes/gruvbox/plymouth/progress_box.png new file mode 100644 index 00000000..8e314468 Binary files /dev/null and b/themes/gruvbox/plymouth/progress_box.png differ diff --git a/themes/gruvbox/plymouth/throbber-01.png b/themes/gruvbox/plymouth/throbber-01.png new file mode 100644 index 00000000..c1bc7553 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-01.png differ diff --git a/themes/gruvbox/plymouth/throbber-02.png b/themes/gruvbox/plymouth/throbber-02.png new file mode 100644 index 00000000..aaf55e64 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-02.png differ diff --git a/themes/gruvbox/plymouth/throbber-03.png b/themes/gruvbox/plymouth/throbber-03.png new file mode 100644 index 00000000..83733f1c Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-03.png differ diff --git a/themes/gruvbox/plymouth/throbber-04.png b/themes/gruvbox/plymouth/throbber-04.png new file mode 100644 index 00000000..a0ec030b Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-04.png differ diff --git a/themes/gruvbox/plymouth/throbber-05.png b/themes/gruvbox/plymouth/throbber-05.png new file mode 100644 index 00000000..6bae626f Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-05.png differ diff --git a/themes/gruvbox/plymouth/throbber-06.png b/themes/gruvbox/plymouth/throbber-06.png new file mode 100644 index 00000000..3b6df470 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-06.png differ diff --git a/themes/gruvbox/plymouth/throbber-07.png b/themes/gruvbox/plymouth/throbber-07.png new file mode 100644 index 00000000..4096f3d2 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-07.png differ diff --git a/themes/gruvbox/plymouth/throbber-08.png b/themes/gruvbox/plymouth/throbber-08.png new file mode 100644 index 00000000..e116845d Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-08.png differ diff --git a/themes/gruvbox/plymouth/throbber-09.png b/themes/gruvbox/plymouth/throbber-09.png new file mode 100644 index 00000000..4a57250a Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-09.png differ diff --git a/themes/gruvbox/plymouth/throbber-10.png b/themes/gruvbox/plymouth/throbber-10.png new file mode 100644 index 00000000..b3ad0cf5 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-10.png differ diff --git a/themes/gruvbox/plymouth/throbber-11.png b/themes/gruvbox/plymouth/throbber-11.png new file mode 100644 index 00000000..2066b21a Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-11.png differ diff --git a/themes/gruvbox/plymouth/throbber-12.png b/themes/gruvbox/plymouth/throbber-12.png new file mode 100644 index 00000000..345df546 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-12.png differ diff --git a/themes/gruvbox/plymouth/throbber-13.png b/themes/gruvbox/plymouth/throbber-13.png new file mode 100644 index 00000000..d0157502 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-13.png differ diff --git a/themes/gruvbox/plymouth/throbber-14.png b/themes/gruvbox/plymouth/throbber-14.png new file mode 100644 index 00000000..970ea4c5 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-14.png differ diff --git a/themes/gruvbox/plymouth/throbber-15.png b/themes/gruvbox/plymouth/throbber-15.png new file mode 100644 index 00000000..cde20443 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-15.png differ diff --git a/themes/gruvbox/plymouth/throbber-16.png b/themes/gruvbox/plymouth/throbber-16.png new file mode 100644 index 00000000..91656574 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-16.png differ diff --git a/themes/gruvbox/plymouth/throbber-17.png b/themes/gruvbox/plymouth/throbber-17.png new file mode 100644 index 00000000..9c617e3a Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-17.png differ diff --git a/themes/gruvbox/plymouth/throbber-18.png b/themes/gruvbox/plymouth/throbber-18.png new file mode 100644 index 00000000..86476287 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-18.png differ diff --git a/themes/gruvbox/plymouth/throbber-19.png b/themes/gruvbox/plymouth/throbber-19.png new file mode 100644 index 00000000..b2f1dd53 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-19.png differ diff --git a/themes/gruvbox/plymouth/throbber-20.png b/themes/gruvbox/plymouth/throbber-20.png new file mode 100644 index 00000000..ec8f6f2d Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-20.png differ diff --git a/themes/gruvbox/plymouth/throbber-21.png b/themes/gruvbox/plymouth/throbber-21.png new file mode 100644 index 00000000..bc767440 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-21.png differ diff --git a/themes/gruvbox/plymouth/throbber-22.png b/themes/gruvbox/plymouth/throbber-22.png new file mode 100644 index 00000000..2d21be32 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-22.png differ diff --git a/themes/gruvbox/plymouth/throbber-23.png b/themes/gruvbox/plymouth/throbber-23.png new file mode 100644 index 00000000..ef913014 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-23.png differ diff --git a/themes/gruvbox/plymouth/throbber-24.png b/themes/gruvbox/plymouth/throbber-24.png new file mode 100644 index 00000000..8a7966fb Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-24.png differ diff --git a/themes/gruvbox/plymouth/throbber-25.png b/themes/gruvbox/plymouth/throbber-25.png new file mode 100644 index 00000000..d4373fac Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-25.png differ diff --git a/themes/gruvbox/plymouth/throbber-26.png b/themes/gruvbox/plymouth/throbber-26.png new file mode 100644 index 00000000..7d130993 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-26.png differ diff --git a/themes/gruvbox/plymouth/throbber-27.png b/themes/gruvbox/plymouth/throbber-27.png new file mode 100644 index 00000000..25075008 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-27.png differ diff --git a/themes/gruvbox/plymouth/throbber-28.png b/themes/gruvbox/plymouth/throbber-28.png new file mode 100644 index 00000000..fe9fe65f Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-28.png differ diff --git a/themes/gruvbox/plymouth/throbber-29.png b/themes/gruvbox/plymouth/throbber-29.png new file mode 100644 index 00000000..b9ceadcb Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-29.png differ diff --git a/themes/gruvbox/plymouth/throbber-30.png b/themes/gruvbox/plymouth/throbber-30.png new file mode 100644 index 00000000..c29e5ac1 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-30.png differ diff --git a/themes/kanagawa/plymouth/bullet.png b/themes/kanagawa/plymouth/bullet.png new file mode 100644 index 00000000..29f49d0d Binary files /dev/null and b/themes/kanagawa/plymouth/bullet.png differ diff --git a/themes/kanagawa/plymouth/entry.png b/themes/kanagawa/plymouth/entry.png new file mode 100644 index 00000000..44c85397 Binary files /dev/null and b/themes/kanagawa/plymouth/entry.png differ diff --git a/themes/kanagawa/plymouth/lock.png b/themes/kanagawa/plymouth/lock.png new file mode 100644 index 00000000..b682fd5b Binary files /dev/null and b/themes/kanagawa/plymouth/lock.png differ diff --git a/themes/kanagawa/plymouth/logo.png b/themes/kanagawa/plymouth/logo.png new file mode 100644 index 00000000..09cd61b8 Binary files /dev/null and b/themes/kanagawa/plymouth/logo.png differ diff --git a/themes/kanagawa/plymouth/omarchy.plymouth b/themes/kanagawa/plymouth/omarchy.plymouth new file mode 100644 index 00000000..1b94e8a6 --- /dev/null +++ b/themes/kanagawa/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x1f1f28 + + diff --git a/themes/kanagawa/plymouth/omarchy.script b/themes/kanagawa/plymouth/omarchy.script new file mode 100644 index 00000000..d66d7610 --- /dev/null +++ b/themes/kanagawa/plymouth/omarchy.script @@ -0,0 +1,237 @@ +# Omarchy Plymouth Theme Script + +Window.SetBackgroundTopColor(0.122, 0.122, 0.157); +Window.SetBackgroundBottomColor(0.122, 0.122, 0.157); + +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); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.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.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- 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 = Window.GetY() + Window.GetHeight() * 0.75 - 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 = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (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); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + 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); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +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); diff --git a/themes/kanagawa/plymouth/progress_bar.png b/themes/kanagawa/plymouth/progress_bar.png new file mode 100644 index 00000000..22a35080 Binary files /dev/null and b/themes/kanagawa/plymouth/progress_bar.png differ diff --git a/themes/kanagawa/plymouth/progress_box.png b/themes/kanagawa/plymouth/progress_box.png new file mode 100644 index 00000000..2e2d49bf Binary files /dev/null and b/themes/kanagawa/plymouth/progress_box.png differ diff --git a/themes/kanagawa/plymouth/throbber-01.png b/themes/kanagawa/plymouth/throbber-01.png new file mode 100644 index 00000000..4799c0d3 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-01.png differ diff --git a/themes/kanagawa/plymouth/throbber-02.png b/themes/kanagawa/plymouth/throbber-02.png new file mode 100644 index 00000000..4e6ba0a6 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-02.png differ diff --git a/themes/kanagawa/plymouth/throbber-03.png b/themes/kanagawa/plymouth/throbber-03.png new file mode 100644 index 00000000..7bf0de03 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-03.png differ diff --git a/themes/kanagawa/plymouth/throbber-04.png b/themes/kanagawa/plymouth/throbber-04.png new file mode 100644 index 00000000..6c9feed6 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-04.png differ diff --git a/themes/kanagawa/plymouth/throbber-05.png b/themes/kanagawa/plymouth/throbber-05.png new file mode 100644 index 00000000..278c6b4b Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-05.png differ diff --git a/themes/kanagawa/plymouth/throbber-06.png b/themes/kanagawa/plymouth/throbber-06.png new file mode 100644 index 00000000..2ec7e940 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-06.png differ diff --git a/themes/kanagawa/plymouth/throbber-07.png b/themes/kanagawa/plymouth/throbber-07.png new file mode 100644 index 00000000..cb5f946f Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-07.png differ diff --git a/themes/kanagawa/plymouth/throbber-08.png b/themes/kanagawa/plymouth/throbber-08.png new file mode 100644 index 00000000..f4c9cf37 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-08.png differ diff --git a/themes/kanagawa/plymouth/throbber-09.png b/themes/kanagawa/plymouth/throbber-09.png new file mode 100644 index 00000000..579396d1 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-09.png differ diff --git a/themes/kanagawa/plymouth/throbber-10.png b/themes/kanagawa/plymouth/throbber-10.png new file mode 100644 index 00000000..04b3d107 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-10.png differ diff --git a/themes/kanagawa/plymouth/throbber-11.png b/themes/kanagawa/plymouth/throbber-11.png new file mode 100644 index 00000000..397e52dd Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-11.png differ diff --git a/themes/kanagawa/plymouth/throbber-12.png b/themes/kanagawa/plymouth/throbber-12.png new file mode 100644 index 00000000..8980d82a Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-12.png differ diff --git a/themes/kanagawa/plymouth/throbber-13.png b/themes/kanagawa/plymouth/throbber-13.png new file mode 100644 index 00000000..b6942cd7 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-13.png differ diff --git a/themes/kanagawa/plymouth/throbber-14.png b/themes/kanagawa/plymouth/throbber-14.png new file mode 100644 index 00000000..2ff020c8 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-14.png differ diff --git a/themes/kanagawa/plymouth/throbber-15.png b/themes/kanagawa/plymouth/throbber-15.png new file mode 100644 index 00000000..74ecb6b5 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-15.png differ diff --git a/themes/kanagawa/plymouth/throbber-16.png b/themes/kanagawa/plymouth/throbber-16.png new file mode 100644 index 00000000..15ed6197 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-16.png differ diff --git a/themes/kanagawa/plymouth/throbber-17.png b/themes/kanagawa/plymouth/throbber-17.png new file mode 100644 index 00000000..025210dc Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-17.png differ diff --git a/themes/kanagawa/plymouth/throbber-18.png b/themes/kanagawa/plymouth/throbber-18.png new file mode 100644 index 00000000..663e9640 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-18.png differ diff --git a/themes/kanagawa/plymouth/throbber-19.png b/themes/kanagawa/plymouth/throbber-19.png new file mode 100644 index 00000000..d313bfce Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-19.png differ diff --git a/themes/kanagawa/plymouth/throbber-20.png b/themes/kanagawa/plymouth/throbber-20.png new file mode 100644 index 00000000..8c9c6ae6 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-20.png differ diff --git a/themes/kanagawa/plymouth/throbber-21.png b/themes/kanagawa/plymouth/throbber-21.png new file mode 100644 index 00000000..211aa091 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-21.png differ diff --git a/themes/kanagawa/plymouth/throbber-22.png b/themes/kanagawa/plymouth/throbber-22.png new file mode 100644 index 00000000..04576cf0 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-22.png differ diff --git a/themes/kanagawa/plymouth/throbber-23.png b/themes/kanagawa/plymouth/throbber-23.png new file mode 100644 index 00000000..7736cb94 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-23.png differ diff --git a/themes/kanagawa/plymouth/throbber-24.png b/themes/kanagawa/plymouth/throbber-24.png new file mode 100644 index 00000000..46ac5f51 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-24.png differ diff --git a/themes/kanagawa/plymouth/throbber-25.png b/themes/kanagawa/plymouth/throbber-25.png new file mode 100644 index 00000000..990459d8 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-25.png differ diff --git a/themes/kanagawa/plymouth/throbber-26.png b/themes/kanagawa/plymouth/throbber-26.png new file mode 100644 index 00000000..ec53fe5b Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-26.png differ diff --git a/themes/kanagawa/plymouth/throbber-27.png b/themes/kanagawa/plymouth/throbber-27.png new file mode 100644 index 00000000..f050150b Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-27.png differ diff --git a/themes/kanagawa/plymouth/throbber-28.png b/themes/kanagawa/plymouth/throbber-28.png new file mode 100644 index 00000000..7854d207 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-28.png differ diff --git a/themes/kanagawa/plymouth/throbber-29.png b/themes/kanagawa/plymouth/throbber-29.png new file mode 100644 index 00000000..e35305a8 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-29.png differ diff --git a/themes/kanagawa/plymouth/throbber-30.png b/themes/kanagawa/plymouth/throbber-30.png new file mode 100644 index 00000000..4612bd0d Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-30.png differ diff --git a/themes/nord/plymouth/bullet.png b/themes/nord/plymouth/bullet.png new file mode 100644 index 00000000..d5b457c1 Binary files /dev/null and b/themes/nord/plymouth/bullet.png differ diff --git a/themes/nord/plymouth/entry.png b/themes/nord/plymouth/entry.png new file mode 100644 index 00000000..d091fcbd Binary files /dev/null and b/themes/nord/plymouth/entry.png differ diff --git a/themes/nord/plymouth/lock.png b/themes/nord/plymouth/lock.png new file mode 100644 index 00000000..d4df3c64 Binary files /dev/null and b/themes/nord/plymouth/lock.png differ diff --git a/themes/nord/plymouth/logo.png b/themes/nord/plymouth/logo.png new file mode 100644 index 00000000..29b6c3c7 Binary files /dev/null and b/themes/nord/plymouth/logo.png differ diff --git a/themes/nord/plymouth/omarchy.plymouth b/themes/nord/plymouth/omarchy.plymouth new file mode 100644 index 00000000..54ee5d54 --- /dev/null +++ b/themes/nord/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x2e3440 + + diff --git a/themes/nord/plymouth/omarchy.script b/themes/nord/plymouth/omarchy.script new file mode 100644 index 00000000..e1c1030a --- /dev/null +++ b/themes/nord/plymouth/omarchy.script @@ -0,0 +1,237 @@ +# Omarchy Plymouth Theme Script + +Window.SetBackgroundTopColor(0.180, 0.204, 0.251); +Window.SetBackgroundBottomColor(0.180, 0.204, 0.251); + +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); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.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.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- 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 = Window.GetY() + Window.GetHeight() * 0.75 - 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 = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (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); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + 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); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +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); diff --git a/themes/nord/plymouth/progress_bar.png b/themes/nord/plymouth/progress_bar.png new file mode 100644 index 00000000..81e7764b Binary files /dev/null and b/themes/nord/plymouth/progress_bar.png differ diff --git a/themes/nord/plymouth/progress_box.png b/themes/nord/plymouth/progress_box.png new file mode 100644 index 00000000..da894d8c Binary files /dev/null and b/themes/nord/plymouth/progress_box.png differ diff --git a/themes/nord/plymouth/throbber-01.png b/themes/nord/plymouth/throbber-01.png new file mode 100644 index 00000000..a6a867cf Binary files /dev/null and b/themes/nord/plymouth/throbber-01.png differ diff --git a/themes/nord/plymouth/throbber-02.png b/themes/nord/plymouth/throbber-02.png new file mode 100644 index 00000000..a18b5aaa Binary files /dev/null and b/themes/nord/plymouth/throbber-02.png differ diff --git a/themes/nord/plymouth/throbber-03.png b/themes/nord/plymouth/throbber-03.png new file mode 100644 index 00000000..0c066977 Binary files /dev/null and b/themes/nord/plymouth/throbber-03.png differ diff --git a/themes/nord/plymouth/throbber-04.png b/themes/nord/plymouth/throbber-04.png new file mode 100644 index 00000000..8e72cb24 Binary files /dev/null and b/themes/nord/plymouth/throbber-04.png differ diff --git a/themes/nord/plymouth/throbber-05.png b/themes/nord/plymouth/throbber-05.png new file mode 100644 index 00000000..487f2183 Binary files /dev/null and b/themes/nord/plymouth/throbber-05.png differ diff --git a/themes/nord/plymouth/throbber-06.png b/themes/nord/plymouth/throbber-06.png new file mode 100644 index 00000000..87bf973b Binary files /dev/null and b/themes/nord/plymouth/throbber-06.png differ diff --git a/themes/nord/plymouth/throbber-07.png b/themes/nord/plymouth/throbber-07.png new file mode 100644 index 00000000..9ed61bbd Binary files /dev/null and b/themes/nord/plymouth/throbber-07.png differ diff --git a/themes/nord/plymouth/throbber-08.png b/themes/nord/plymouth/throbber-08.png new file mode 100644 index 00000000..75fe31cd Binary files /dev/null and b/themes/nord/plymouth/throbber-08.png differ diff --git a/themes/nord/plymouth/throbber-09.png b/themes/nord/plymouth/throbber-09.png new file mode 100644 index 00000000..7cf2aa1d Binary files /dev/null and b/themes/nord/plymouth/throbber-09.png differ diff --git a/themes/nord/plymouth/throbber-10.png b/themes/nord/plymouth/throbber-10.png new file mode 100644 index 00000000..1c6bac97 Binary files /dev/null and b/themes/nord/plymouth/throbber-10.png differ diff --git a/themes/nord/plymouth/throbber-11.png b/themes/nord/plymouth/throbber-11.png new file mode 100644 index 00000000..7d64503b Binary files /dev/null and b/themes/nord/plymouth/throbber-11.png differ diff --git a/themes/nord/plymouth/throbber-12.png b/themes/nord/plymouth/throbber-12.png new file mode 100644 index 00000000..bf670a01 Binary files /dev/null and b/themes/nord/plymouth/throbber-12.png differ diff --git a/themes/nord/plymouth/throbber-13.png b/themes/nord/plymouth/throbber-13.png new file mode 100644 index 00000000..5a28e23b Binary files /dev/null and b/themes/nord/plymouth/throbber-13.png differ diff --git a/themes/nord/plymouth/throbber-14.png b/themes/nord/plymouth/throbber-14.png new file mode 100644 index 00000000..fe83ea8b Binary files /dev/null and b/themes/nord/plymouth/throbber-14.png differ diff --git a/themes/nord/plymouth/throbber-15.png b/themes/nord/plymouth/throbber-15.png new file mode 100644 index 00000000..32bb9f84 Binary files /dev/null and b/themes/nord/plymouth/throbber-15.png differ diff --git a/themes/nord/plymouth/throbber-16.png b/themes/nord/plymouth/throbber-16.png new file mode 100644 index 00000000..3d91648a Binary files /dev/null and b/themes/nord/plymouth/throbber-16.png differ diff --git a/themes/nord/plymouth/throbber-17.png b/themes/nord/plymouth/throbber-17.png new file mode 100644 index 00000000..76d709e1 Binary files /dev/null and b/themes/nord/plymouth/throbber-17.png differ diff --git a/themes/nord/plymouth/throbber-18.png b/themes/nord/plymouth/throbber-18.png new file mode 100644 index 00000000..86f83461 Binary files /dev/null and b/themes/nord/plymouth/throbber-18.png differ diff --git a/themes/nord/plymouth/throbber-19.png b/themes/nord/plymouth/throbber-19.png new file mode 100644 index 00000000..4937f9b0 Binary files /dev/null and b/themes/nord/plymouth/throbber-19.png differ diff --git a/themes/nord/plymouth/throbber-20.png b/themes/nord/plymouth/throbber-20.png new file mode 100644 index 00000000..7949decb Binary files /dev/null and b/themes/nord/plymouth/throbber-20.png differ diff --git a/themes/nord/plymouth/throbber-21.png b/themes/nord/plymouth/throbber-21.png new file mode 100644 index 00000000..c6f56c77 Binary files /dev/null and b/themes/nord/plymouth/throbber-21.png differ diff --git a/themes/nord/plymouth/throbber-22.png b/themes/nord/plymouth/throbber-22.png new file mode 100644 index 00000000..196e8854 Binary files /dev/null and b/themes/nord/plymouth/throbber-22.png differ diff --git a/themes/nord/plymouth/throbber-23.png b/themes/nord/plymouth/throbber-23.png new file mode 100644 index 00000000..2465d4e1 Binary files /dev/null and b/themes/nord/plymouth/throbber-23.png differ diff --git a/themes/nord/plymouth/throbber-24.png b/themes/nord/plymouth/throbber-24.png new file mode 100644 index 00000000..40bdf982 Binary files /dev/null and b/themes/nord/plymouth/throbber-24.png differ diff --git a/themes/nord/plymouth/throbber-25.png b/themes/nord/plymouth/throbber-25.png new file mode 100644 index 00000000..037453ae Binary files /dev/null and b/themes/nord/plymouth/throbber-25.png differ diff --git a/themes/nord/plymouth/throbber-26.png b/themes/nord/plymouth/throbber-26.png new file mode 100644 index 00000000..8757e00c Binary files /dev/null and b/themes/nord/plymouth/throbber-26.png differ diff --git a/themes/nord/plymouth/throbber-27.png b/themes/nord/plymouth/throbber-27.png new file mode 100644 index 00000000..150a9e22 Binary files /dev/null and b/themes/nord/plymouth/throbber-27.png differ diff --git a/themes/nord/plymouth/throbber-28.png b/themes/nord/plymouth/throbber-28.png new file mode 100644 index 00000000..88ced455 Binary files /dev/null and b/themes/nord/plymouth/throbber-28.png differ diff --git a/themes/nord/plymouth/throbber-29.png b/themes/nord/plymouth/throbber-29.png new file mode 100644 index 00000000..82017ded Binary files /dev/null and b/themes/nord/plymouth/throbber-29.png differ diff --git a/themes/nord/plymouth/throbber-30.png b/themes/nord/plymouth/throbber-30.png new file mode 100644 index 00000000..fd2fc258 Binary files /dev/null and b/themes/nord/plymouth/throbber-30.png differ diff --git a/themes/tokyo-night/plymouth/bullet.png b/themes/tokyo-night/plymouth/bullet.png new file mode 100644 index 00000000..0b3ffa7f Binary files /dev/null and b/themes/tokyo-night/plymouth/bullet.png differ diff --git a/themes/tokyo-night/plymouth/entry.png b/themes/tokyo-night/plymouth/entry.png new file mode 100644 index 00000000..5c789179 Binary files /dev/null and b/themes/tokyo-night/plymouth/entry.png differ diff --git a/themes/tokyo-night/plymouth/lock.png b/themes/tokyo-night/plymouth/lock.png new file mode 100644 index 00000000..06bb109e Binary files /dev/null and b/themes/tokyo-night/plymouth/lock.png differ diff --git a/themes/tokyo-night/plymouth/logo.png b/themes/tokyo-night/plymouth/logo.png new file mode 100644 index 00000000..e4b25260 Binary files /dev/null and b/themes/tokyo-night/plymouth/logo.png differ diff --git a/themes/tokyo-night/plymouth/omarchy.plymouth b/themes/tokyo-night/plymouth/omarchy.plymouth new file mode 100644 index 00000000..b8244730 --- /dev/null +++ b/themes/tokyo-night/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x1a1b26 + + diff --git a/themes/tokyo-night/plymouth/omarchy.script b/themes/tokyo-night/plymouth/omarchy.script new file mode 100644 index 00000000..8f4998f7 --- /dev/null +++ b/themes/tokyo-night/plymouth/omarchy.script @@ -0,0 +1,237 @@ +# 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); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.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.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- 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 = Window.GetY() + Window.GetHeight() * 0.75 - 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 = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (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); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + 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); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +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); diff --git a/themes/tokyo-night/plymouth/progress_bar.png b/themes/tokyo-night/plymouth/progress_bar.png new file mode 100644 index 00000000..dbb9fd74 Binary files /dev/null and b/themes/tokyo-night/plymouth/progress_bar.png differ diff --git a/themes/tokyo-night/plymouth/progress_box.png b/themes/tokyo-night/plymouth/progress_box.png new file mode 100644 index 00000000..6a263f24 Binary files /dev/null and b/themes/tokyo-night/plymouth/progress_box.png differ diff --git a/themes/tokyo-night/plymouth/throbber-01.png b/themes/tokyo-night/plymouth/throbber-01.png new file mode 100644 index 00000000..85367eba Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-01.png differ diff --git a/themes/tokyo-night/plymouth/throbber-02.png b/themes/tokyo-night/plymouth/throbber-02.png new file mode 100644 index 00000000..6eae3e6b Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-02.png differ diff --git a/themes/tokyo-night/plymouth/throbber-03.png b/themes/tokyo-night/plymouth/throbber-03.png new file mode 100644 index 00000000..2e28ef7e Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-03.png differ diff --git a/themes/tokyo-night/plymouth/throbber-04.png b/themes/tokyo-night/plymouth/throbber-04.png new file mode 100644 index 00000000..cd322483 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-04.png differ diff --git a/themes/tokyo-night/plymouth/throbber-05.png b/themes/tokyo-night/plymouth/throbber-05.png new file mode 100644 index 00000000..f4bfb219 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-05.png differ diff --git a/themes/tokyo-night/plymouth/throbber-06.png b/themes/tokyo-night/plymouth/throbber-06.png new file mode 100644 index 00000000..5b1a5cd4 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-06.png differ diff --git a/themes/tokyo-night/plymouth/throbber-07.png b/themes/tokyo-night/plymouth/throbber-07.png new file mode 100644 index 00000000..2c93f477 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-07.png differ diff --git a/themes/tokyo-night/plymouth/throbber-08.png b/themes/tokyo-night/plymouth/throbber-08.png new file mode 100644 index 00000000..10cc347c Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-08.png differ diff --git a/themes/tokyo-night/plymouth/throbber-09.png b/themes/tokyo-night/plymouth/throbber-09.png new file mode 100644 index 00000000..c5113519 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-09.png differ diff --git a/themes/tokyo-night/plymouth/throbber-10.png b/themes/tokyo-night/plymouth/throbber-10.png new file mode 100644 index 00000000..ccd1b325 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-10.png differ diff --git a/themes/tokyo-night/plymouth/throbber-11.png b/themes/tokyo-night/plymouth/throbber-11.png new file mode 100644 index 00000000..dc823488 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-11.png differ diff --git a/themes/tokyo-night/plymouth/throbber-12.png b/themes/tokyo-night/plymouth/throbber-12.png new file mode 100644 index 00000000..76565d53 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-12.png differ diff --git a/themes/tokyo-night/plymouth/throbber-13.png b/themes/tokyo-night/plymouth/throbber-13.png new file mode 100644 index 00000000..da5a9953 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-13.png differ diff --git a/themes/tokyo-night/plymouth/throbber-14.png b/themes/tokyo-night/plymouth/throbber-14.png new file mode 100644 index 00000000..b3097d7d Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-14.png differ diff --git a/themes/tokyo-night/plymouth/throbber-15.png b/themes/tokyo-night/plymouth/throbber-15.png new file mode 100644 index 00000000..a3a5e040 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-15.png differ diff --git a/themes/tokyo-night/plymouth/throbber-16.png b/themes/tokyo-night/plymouth/throbber-16.png new file mode 100644 index 00000000..32a5fd56 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-16.png differ diff --git a/themes/tokyo-night/plymouth/throbber-17.png b/themes/tokyo-night/plymouth/throbber-17.png new file mode 100644 index 00000000..e726b5cc Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-17.png differ diff --git a/themes/tokyo-night/plymouth/throbber-18.png b/themes/tokyo-night/plymouth/throbber-18.png new file mode 100644 index 00000000..19d0242d Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-18.png differ diff --git a/themes/tokyo-night/plymouth/throbber-19.png b/themes/tokyo-night/plymouth/throbber-19.png new file mode 100644 index 00000000..86ef4f79 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-19.png differ diff --git a/themes/tokyo-night/plymouth/throbber-20.png b/themes/tokyo-night/plymouth/throbber-20.png new file mode 100644 index 00000000..d00033ff Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-20.png differ diff --git a/themes/tokyo-night/plymouth/throbber-21.png b/themes/tokyo-night/plymouth/throbber-21.png new file mode 100644 index 00000000..7d8b06b4 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-21.png differ diff --git a/themes/tokyo-night/plymouth/throbber-22.png b/themes/tokyo-night/plymouth/throbber-22.png new file mode 100644 index 00000000..a3a19447 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-22.png differ diff --git a/themes/tokyo-night/plymouth/throbber-23.png b/themes/tokyo-night/plymouth/throbber-23.png new file mode 100644 index 00000000..8355e65c Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-23.png differ diff --git a/themes/tokyo-night/plymouth/throbber-24.png b/themes/tokyo-night/plymouth/throbber-24.png new file mode 100644 index 00000000..a26816bc Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-24.png differ diff --git a/themes/tokyo-night/plymouth/throbber-25.png b/themes/tokyo-night/plymouth/throbber-25.png new file mode 100644 index 00000000..5251b086 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-25.png differ diff --git a/themes/tokyo-night/plymouth/throbber-26.png b/themes/tokyo-night/plymouth/throbber-26.png new file mode 100644 index 00000000..fa79cbcd Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-26.png differ diff --git a/themes/tokyo-night/plymouth/throbber-27.png b/themes/tokyo-night/plymouth/throbber-27.png new file mode 100644 index 00000000..1831e15c Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-27.png differ diff --git a/themes/tokyo-night/plymouth/throbber-28.png b/themes/tokyo-night/plymouth/throbber-28.png new file mode 100644 index 00000000..91cd3965 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-28.png differ diff --git a/themes/tokyo-night/plymouth/throbber-29.png b/themes/tokyo-night/plymouth/throbber-29.png new file mode 100644 index 00000000..00a392b7 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-29.png differ diff --git a/themes/tokyo-night/plymouth/throbber-30.png b/themes/tokyo-night/plymouth/throbber-30.png new file mode 100644 index 00000000..688f4438 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-30.png differ