diff --git a/boot/earsSplash.plymouth b/boot/earsSplash.plymouth new file mode 100644 index 0000000..6085f4e --- /dev/null +++ b/boot/earsSplash.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=Ears Splash +Description=EARS boot/shutdown splash with stethoscope logo and spinner +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/earsSplash +ScriptFile=/usr/share/plymouth/themes/earsSplash/earsSplash.script \ No newline at end of file diff --git a/boot/earsSplash.script b/boot/earsSplash.script new file mode 100644 index 0000000..0eb8c06 --- /dev/null +++ b/boot/earsSplash.script @@ -0,0 +1,60 @@ +Window.SetBackgroundTopColor(0, 0, 0); +Window.SetBackgroundBottomColor(0, 0, 0); + +mode = Plymouth.GetMode(); + +if (mode == "shutdown" || mode == "reboot") { + bg.image = Image("splashEndSet.png"); +} else { + bg.image = Image("splashBootSet.png"); +} + +bg.sprite = Sprite(bg.image); +bg.sprite.SetX(0); +bg.sprite.SetY(0); +bg.sprite.SetZ(-100); + +spinner.sprite = Sprite(); +spinner.sprite.SetZ(2); +spinner.center_x = 640; +spinner.center_y = 460; + +spinner.frame_count = 60; +spinner.frames = []; +for (i = 0; i < spinner.frame_count; i++) { + spinner.frames[i] = Image("spinner/frame_" + i + ".png"); +} + +spinner.current_frame = 0; +spinner.frame_delay = 1; +spinner.tick = 0; + +fun spinner_refresh_callback() { + spinner.tick++; + if (spinner.tick >= spinner.frame_delay) { + spinner.tick = 0; + spinner.current_frame++; + if (spinner.current_frame >= spinner.frame_count) spinner.current_frame = 0; + + img = spinner.frames[spinner.current_frame]; + spinner.sprite.SetImage(img); + spinner.sprite.SetX(spinner.center_x - img.GetWidth() / 2); + spinner.sprite.SetY(spinner.center_y - img.GetHeight() / 2); + } +} +Plymouth.SetRefreshFunction(spinner_refresh_callback); + +fun display_normal_callback() {} + +fun display_password_callback(prompt, bullets) { + prompt_image = Image.Text(prompt, 1, 1, 1, 1, "Sans 14"); + prompt_sprite = Sprite(prompt_image); + prompt_sprite.SetZ(2); + prompt_sprite.SetX(spinner.center_x - prompt_image.GetWidth() / 2); + prompt_sprite.SetY(spinner.center_y + 60); +} +Plymouth.SetDisplayPasswordFunction(display_password_callback); +Plymouth.SetDisplayNormalFunction(display_normal_callback); + +fun quit_callback() {} +Plymouth.SetQuitFunction(quit_callback); \ No newline at end of file