// BastionGuard Plymouth Theme Window.SetBackgroundTopColor(0.10, 0.10, 0.18); Window.SetBackgroundBottomColor(0.10, 0.10, 0.18); screen_width = Window.GetWidth(); screen_height = Window.GetHeight(); bg_image = Image("bastionguard-wallpapers.png"); bg_sprite = Sprite(bg_image); bg_sprite.SetZ(-100); bg_w = bg_image.GetWidth(); bg_h = bg_image.GetHeight(); if (bg_w > 0 && bg_h > 0) { scale_x = screen_width / bg_w; scale_y = screen_height / bg_h; scale = scale_x; if (scale_y > scale_x) scale = scale_y; bg_sprite.SetScale(scale, scale); bg_sprite.SetX((screen_width - bg_w * scale) / 2); bg_sprite.SetY((screen_height - bg_h * scale) / 2); } logo_image = Image("bastionguard-backup.png"); logo_sprite = Sprite(logo_image); logo_sprite.SetZ(10); logo_w = logo_image.GetWidth(); logo_h = logo_image.GetHeight(); logo_sprite.SetX((screen_width - logo_w) / 2); logo_sprite.SetY((screen_height / 2) - 140); title_text = "Starting BastionGuard Recovery"; title_color = 0xffffffff; title_font = "Sans 18"; title = Image.Text(title_text, title_color, title_font); title_sprite = Sprite(title); title_sprite.SetZ(20); title_sprite.SetX((screen_width - title.GetWidth()) / 2); title_sprite.SetY((screen_height / 2) + 20); message_color = 0xffffffff; message_font = "Sans 12"; message = Image.Text("", message_color, message_font); message_sprite = Sprite(message); message_sprite.SetZ(20); message_sprite.SetX((screen_width - 300) / 2); message_sprite.SetY((screen_height / 2) + 55); progress_box_image = Image("progress_box.png"); progress_bar_image = Image("progress_bar.png"); progress_box_sprite = Sprite(progress_box_image); progress_bar_sprite = Sprite(progress_bar_image); progress_box_sprite.SetZ(15); progress_bar_sprite.SetZ(16); box_w = progress_box_image.GetWidth(); box_h = progress_box_image.GetHeight(); progress_x = (screen_width - box_w) / 2; progress_y = (screen_height / 2) + 85; progress_box_sprite.SetX(progress_x); progress_box_sprite.SetY(progress_y); progress_bar_sprite.SetX(progress_x); progress_bar_sprite.SetY(progress_y); progress = 0; fun refresh_progress() { bar_w = progress_bar_image.GetWidth(); if (bar_w < 1) bar_w = 1; progress_bar_sprite.SetScale(progress, 1.0); } fun set_message(text) { message = Image.Text(text, message_color, message_font); message_sprite.SetImage(message); message_sprite.SetX((screen_width - message.GetWidth()) / 2); } fun on_boot_progress_callback(duration, percent) { progress = percent; refresh_progress(); } fun on_message_callback(text) { set_message(text); } fun on_root_mounted_callback() { set_message("Loading BastionGuard Recovery environment..."); } fun on_boot_complete_callback() { set_message("BastionGuard Recovery Ready"); progress = 1.0; refresh_progress(); } Plymouth.SetBootProgressFunction(on_boot_progress_callback); Plymouth.SetMessageFunction(on_message_callback); Plymouth.SetRootMountedFunction(on_root_mounted_callback); Plymouth.SetBootCompleteFunction(on_boot_complete_callback); set_message("Starting services..."); refresh_progress();