在 20.04 中更改默认的 Plymouth Spinner

在 20.04 中更改默认的 Plymouth Spinner

是否可以用我们自己的图像更改登录时显示的默认 20.04 Plymouth 3 曲线旋转器动画/旋转?

更新:根据 UnKNOWn 评论中的说明

可以更换旋转器,尺寸为 256x256px,方便使用

在此处输入图片描述

添加 GIF

在此处输入图片描述

答案1

在 Ubuntu 20.04 的默认安装中,bgrt使用了 Plymouth 主题。

/usr/share/plymouth/themes/bgrt/bgrt.plymouth

该主题包含以下(仅部分内容)来自文件的内容/usr/share/plymouth/themes/bgrt/bgrt.plymouth

[Plymouth Theme]
Name=BGRT
Description=Jimmac's spinner theme using the ACPI BGRT graphics as background
ModuleName=two-step

ModuleName=two-step与使用脚本的其他普利茅斯主题不同,该行有一些硬编码。

来自另一个普利茅斯主题的部分内容

[Plymouth Theme]
Name=Script
Description=Script example plugin.
ModuleName=script

[script]
ImageDir=/usr/share/plymouth/themes/script
ScriptFile=/usr/share/plymouth/themes/script/script.script

由于你的主要目标是保留 Ubuntu 20.04 附带的默认 Plymouth 主题,因此我们需要专注于MouduleName=two-step

我试图获取名为“two-step”的模块的配置/指南/规格,但没有成功。

这篇 Ask Ubuntu 帖子https://askubuntu.com/a/85329/739431可能有助于理解名为两步的模块。

通过使用默认的 plymouth 主题 bgrt 进行反复试验/usr/share/plymouth/themes/bgrt/并借助上述 Ask Ubuntu 帖子的帮助..

我按照以下步骤操作,让自定义图像作为旋转器播放。

1. 使用以下命令复制微调主题

sudo cp -r /usr/share/plymouth/themes/spinner /usr/share/plymouth/themes/myplymouththeme

使用以下命令将spinner.playmouth文件重命名为myplymouththeme.plymouth

sudo mv /usr/share/plymouth/themes/myplymouththeme/spinner.plymouth /usr/share/plymouth/themes/myplymouththeme/myplymouththeme.plymouth

使用以下命令打开文件myplymouththeme.plymouth并根据您的要求编辑内容。

sudo -H gedit /usr/share/plymouth/themes/myplymouththeme/myplymouththeme.plymouth

有些需要编辑的行..我已经编辑了。

ImageDir=/usr/share/plymouth/themes/myplymouththeme

HorizontalAlignment=.5
VerticalAlignment=.7
WatermarkHorizontalAlignment=.5
WatermarkVerticalAlignment=.96

图像目录是不言自明的,因为我们将把图像保存在其中。HorAlignment
.5 是旋转器的中心。VerAlignment
.7 从屏幕顶部向下,您可以减少它以增加水印和旋转器之间的间隙。
水印也与上述解释类似。

图像名称似乎带有throbber-编号前缀,如 throbber-01.png、throbber02.png 等等。删除所有带有动画*和 throbber* 的图像,然后将图像放入上述目录中。似乎它只接受 png 文件作为图像。

好的,配置完成了..

playmouthd.conf要使用此主题,请使用以下命令创建一个新文件

sudo install -D /dev/null /etc/plymouth/plymouthd.conf

并使用以下命令打开文件并添加行..

sudo -H gedit /etc/plymouth/plymouthd.conf

线

[Daemon]
Theme=myplymouththeme
ShowDelay=0

您可以使用您喜欢的图像更改 watermark.png(留意默认的 watermark.png 图片大小)

重新启动并查看更改..

当你在桌面时,你可以通过登录两个 tty 来测试 plymouth 主题

在一个 tty 中,运行以下命令

sudo plymouthd --debug --tty=`tty` --no-daemon

在其他 tty 中,运行以下命令

sudo plymouth --show-splash

当你运行 --show-splash 时,它会自动切换到其他 tty 并显示 plymouth,退出它..打开你运行 --show-splash 命令的其他 tty 并运行以下命令

sudo plymouth --quit

在此处输入图片描述

在此处输入图片描述

您可以通过编辑文件来配置不显示固件背景,方法是使用myplymouththeme.plymouth以下行UseFirmwareBackground=

[boot-up]
UseEndAnimation=false
UseFirmwareBackground=false

在此处输入图片描述

编辑:

看起来调整外部脚本以满足您的需求很容易。这是 zip 文件https://github.com/PRATAP-KUMAR/LinkOnly/blob/main/peppermint.zip修改自https://www.cinnamon-look.org/p/1471802/

要使用 peppermint 主题,请保留解压的目录peppermint/usr/share/plymouth/themes/然后编辑 plymouthd.conf 文件。

sudo -H gedit /etc/plymouth/plymouthd.conf

包含以下内容..

[Daemon]
Theme=peppermint
ShowDelay=0

在此处输入图片描述

重启..

调整其中的一些内容peppermint.script可能会达到您的要求。

.script 文件中的示例行

#--------------------------------------Background functions --------------------------

fun centered_spinner(filename) {
    object.image = Image (filename);
    object.sprite = Sprite ();
    object.sprite.SetImage (object.image);
    object.width = object.image.GetWidth ();
    object.height = object.image.GetHeight ();
    object.x = Window.GetX () + Window.GetWidth () / 2 - object.width  / 2; # Edit to Align as per your requirment
    object.y = Window.GetY () + Window.GetHeight () - object.height / 2 - 100; # Edit to Align as per your requirment
    object.sprite.SetX (object.x);
    object.sprite.SetY (object.y);

    return object;
}

fun centered_logo(filename) {
    object.image = Image (filename);
    object.sprite = Sprite ();
    object.sprite.SetImage (object.image);
    object.width = object.image.GetWidth ();
    object.height = object.image.GetHeight ();
    object.x = Window.GetX () + Window.GetWidth () / 2 - object.width  / 2; # Edit to Align as per your requirment
    object.y = Window.GetY () + Window.GetHeight () - object.height / 2 - 40; # Edit to Align as per your requirment
    object.sprite.SetX (object.x);
    object.sprite.SetY (object.y);

    return object;
}

--

#Animation settings
spinner.rot.steps = 8; # steps for 1 full rotation
spinner.rot.delay = 0.05; # timing in secs

--

#    Window.SetBackgroundTopColor (rt, gt, bt);                  #gradient - darker at the top of screen
    Window.SetBackgroundTopColor (0, 0, 0);                      #no gradient
    Window.SetBackgroundBottomColor (0, 0, 0);

在此处输入图片描述

相关内容