Fix SIM2 PIN verification and replace Plymouth boot splash with rotating Bananarchy logo

This commit is contained in:
Luxferre
2026-10-25 13:10:37 +02:00
parent b7c57aab2f
commit fe8ba03941
18 changed files with 380 additions and 39 deletions
@@ -1,5 +1,5 @@
[D-BUS Service]
Name=org.freedesktop.ModemManager1
Exec=/usr/sbin/ModemManager --debug
Exec=/bin/false
User=root
SystemdService=dbus-org.freedesktop.ModemManager1.service
Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@@ -0,0 +1,8 @@
[Plymouth Theme]
Name=Bananarchy Spin
Description=Bananarchy Linux boot splash with rotating banana circle
ModuleName=script
[script]
ImageDir=/usr/share/plymouth/themes/pmos-spin
ScriptFile=/usr/share/plymouth/themes/pmos-spin/pmos-spin.script
@@ -0,0 +1,137 @@
# 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);
Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB