// RaveOS Plymouth boot splash script (live install medium) Window.SetBackgroundTopColor(0.102, 0.106, 0.114); Window.SetBackgroundBottomColor(0.075, 0.078, 0.086); screen_width = Window.GetWidth(); screen_height = Window.GetHeight(); // --- logo: owl icon, centered --- owl_image = Image("raveos-owl.png"); owl_width = owl_image.GetWidth(); owl_height = owl_image.GetHeight(); logo_scale = 0.36; owl_width = owl_width * logo_scale; owl_height = owl_height * logo_scale; owl_image = owl_image.Scale(owl_width, owl_height); owl_sprite = Sprite(owl_image); owl_x = screen_width / 2 - owl_width / 2; owl_y = screen_height / 2 - owl_height / 2 - 20; owl_sprite.SetPosition(owl_x, owl_y, 10); // --- status text: pre-rendered PNG cycling by boot progress --- status_count = 6; status_images[0] = Image("status-01.png"); status_images[1] = Image("status-02.png"); status_images[2] = Image("status-03.png"); status_images[3] = Image("status-04.png"); status_images[4] = Image("status-05.png"); status_images[5] = Image("status-06.png"); status_sprite = Sprite(); status_sprite.SetZ(10); status_scale = 0.5; status_y = owl_y + owl_height + 40; seconds_per_stage = 1.2; // --- progress dots --- dot_lit_image = Image("dot-lit.png"); dot_dim_image = Image("dot-dim.png"); dot_scale = 0.35; dot_size = dot_lit_image.GetWidth() * dot_scale; dot_gap = 10; dots_width = status_count * dot_size + (status_count - 1) * dot_gap; dots_y = status_y + 34; for (i = 0; i < status_count; i++) { dot_sprites[i] = Sprite(); dot_sprites[i].SetZ(10); dot_sprites[i].SetX(screen_width / 2 - dots_width / 2 + i * (dot_size + dot_gap)); dot_sprites[i].SetY(dots_y); } fun update_dots(index) { for (i = 0; i < status_count; i++) { if (i <= index) img = dot_lit_image.Scale(dot_size, dot_size); else img = dot_dim_image.Scale(dot_size, dot_size); dot_sprites[i].SetImage(img); } } fun update_status(index) { if (index >= status_count) index = status_count - 1; img = status_images[index].Scale(status_images[index].GetWidth() * status_scale, status_images[index].GetHeight() * status_scale); status_sprite.SetImage(img); status_sprite.SetX(screen_width / 2 - img.GetWidth() / 2); status_sprite.SetY(status_y); update_dots(index); } update_status(0); # "duration" a valos eltelt masodperc a boot ota - ez mindig pontos, # ellentetben a "progress" becslessel (ami elozo boot-idomeresre tamaszkodik, # es elso/friss elo boot-nal megbizhatatlan / gyakorlatilag 0-n ragad). Plymouth.SetBootProgressFunction(fun(duration, progress) { index = Math.Int(duration / seconds_per_stage); update_status(index); }); // --- password prompt (LUKS unlock) --- fun display_password_callback(prompt, bullets) { local.text = prompt; if (local.text == "") local.text = "Enter passphrase to unlock disk"; prompt_image = Image.Text(local.text, 0.9, 0.9, 0.9, 1, "Ubuntu Mono 11"); bullets_image = Image.Text(bullets, 0.36, 0.66, 0.32, 1, "Ubuntu Mono 11"); prompt_sprite = Sprite(prompt_image); bullets_sprite = Sprite(bullets_image); prompt_sprite.SetPosition(screen_width / 2 - prompt_image.GetWidth() / 2, screen_height / 2 + 80, 20); bullets_sprite.SetPosition(screen_width / 2 - bullets_image.GetWidth() / 2, screen_height / 2 + 110, 20); } Plymouth.SetDisplayPasswordFunction(display_password_callback); fun display_normal_callback() { } Plymouth.SetDisplayNormalFunction(display_normal_callback); fun quit_callback() { } Plymouth.SetQuitFunction(quit_callback);