138 lines
3.5 KiB
Plaintext
138 lines
3.5 KiB
Plaintext
# Bananarchy Linux Plymouth Theme Script
|
|
# Central crossed bananas ("A") remain stationary while the outer banana circle rotates.
|
|
|
|
Window.SetBackgroundTopColor(0, 0, 0);
|
|
Window.SetBackgroundBottomColor(0, 0, 0);
|
|
|
|
center_image = Image("center.png");
|
|
ring_image = Image("ring.png");
|
|
error_image = Image("error.png");
|
|
title_image = Image("title.png");
|
|
|
|
win_w = Window.GetWidth();
|
|
win_h = Window.GetHeight();
|
|
|
|
target_size = Math.Min(win_w * 0.72, win_h * 0.56);
|
|
if (target_size > 164 && target_size < 176)
|
|
{
|
|
scale_ratio = 1.0;
|
|
}
|
|
else
|
|
{
|
|
scale_ratio = target_size / center_image.GetWidth();
|
|
center_image = center_image.Scale(
|
|
center_image.GetWidth() * scale_ratio,
|
|
center_image.GetHeight() * scale_ratio
|
|
);
|
|
ring_image = ring_image.Scale(
|
|
ring_image.GetWidth() * scale_ratio,
|
|
ring_image.GetHeight() * scale_ratio
|
|
);
|
|
error_image = error_image.Scale(
|
|
error_image.GetWidth() * scale_ratio,
|
|
error_image.GetHeight() * scale_ratio
|
|
);
|
|
title_image = title_image.Scale(
|
|
title_image.GetWidth() * scale_ratio,
|
|
title_image.GetHeight() * scale_ratio
|
|
);
|
|
}
|
|
|
|
global.message_font = "Sans 10";
|
|
|
|
logo_x = Window.GetX() + win_w / 2 - center_image.GetWidth() / 2;
|
|
logo_y = Window.GetY() + win_h / 2 - center_image.GetHeight() / 2 - 16;
|
|
|
|
title_x = Window.GetX() + win_w / 2 - title_image.GetWidth() / 2;
|
|
title_y = logo_y + center_image.GetHeight() + 12;
|
|
|
|
ring_sprite = Sprite(ring_image);
|
|
ring_sprite.SetPosition(logo_x, logo_y, 10);
|
|
ring_sprite.SetOpacity(1);
|
|
|
|
center_sprite = Sprite(center_image);
|
|
center_sprite.SetPosition(logo_x, logo_y, 20);
|
|
center_sprite.SetOpacity(1);
|
|
|
|
title_sprite = Sprite(title_image);
|
|
title_sprite.SetPosition(title_x, title_y, 20);
|
|
title_sprite.SetOpacity(1);
|
|
|
|
error_sprite = Sprite(error_image);
|
|
error_sprite.SetPosition(logo_x, logo_y, 30);
|
|
error_sprite.SetOpacity(0);
|
|
|
|
global.angle = 0.0;
|
|
global.two_pi = 6.283185307;
|
|
global.status = "normal";
|
|
|
|
fun refresh_callback()
|
|
{
|
|
if (status == "error")
|
|
{
|
|
ring_sprite.SetOpacity(0);
|
|
center_sprite.SetOpacity(0);
|
|
error_sprite.SetOpacity(1);
|
|
return;
|
|
}
|
|
|
|
error_sprite.SetOpacity(0);
|
|
ring_sprite.SetOpacity(1);
|
|
center_sprite.SetOpacity(1);
|
|
|
|
angle = angle + 0.055;
|
|
if (angle >= two_pi)
|
|
{
|
|
angle = angle - two_pi;
|
|
}
|
|
ring_sprite.SetImage(ring_image.Rotate(angle));
|
|
}
|
|
|
|
Plymouth.SetRefreshFunction(refresh_callback);
|
|
|
|
message_sprite = Sprite();
|
|
message_sprite.SetPosition(10, 10, 10000);
|
|
|
|
fun display_message_callback(text)
|
|
{
|
|
if (status == "error")
|
|
text_image = Image.Text(text, 1, 0.3, 0.2, 1, message_font, "center");
|
|
else if (status == "warning")
|
|
text_image = Image.Text(text, 1, 0.84, 0.04, 1, message_font, "center");
|
|
else
|
|
text_image = Image.Text(text, 0.8, 0.8, 0.8, 0.9, message_font, "center");
|
|
|
|
message_sprite.SetImage(text_image);
|
|
message_x = Window.GetX() + win_w / 2 - text_image.GetWidth() / 2;
|
|
message_y = Window.GetY() + win_h - text_image.GetHeight() - 12;
|
|
message_sprite.SetPosition(message_x, message_y, 10000);
|
|
}
|
|
|
|
fun hide_message_callback(text)
|
|
{
|
|
message_sprite = Sprite();
|
|
message_sprite.SetPosition(10, 10, 10000);
|
|
status = "normal";
|
|
}
|
|
|
|
Plymouth.SetDisplayMessageFunction(display_message_callback);
|
|
Plymouth.SetHideMessageFunction(hide_message_callback);
|
|
|
|
fun update_status_callback(new_status)
|
|
{
|
|
if (new_status == "warning" || new_status == "error")
|
|
global.status = new_status;
|
|
else
|
|
global.status = "normal";
|
|
}
|
|
|
|
Plymouth.SetUpdateStatusFunction(update_status_callback);
|
|
|
|
fun quit_callback()
|
|
{
|
|
ring_sprite.SetOpacity(1);
|
|
center_sprite.SetOpacity(1);
|
|
}
|
|
|
|
Plymouth.SetQuitFunction(quit_callback);
|