Replacing default theme for "post-grub" boot process on 22.04

On UbuntuMATE 20.04, I had created a customized version of the Plymouth wallpaper and vertical placement of the progress dots and messages by modifying the ubuntu-mate-logo.script.

How can I do the same for UbuntuMATE 22.04, which uses the Arctica Greeter.

Is it Arctica Greeter itself? or is it more likely a precursor to that Greeter? Lightdm piggybacked on Plymouth. Is there another facility replacing Plymouth within the 22.04 Arctica Greeter context?

Files:

Diff between distro and custom version of script

root:/usr/share/plymouth/themes/ubuntu-mate-logo# diff ubuntu-mate-logo.script.DISTRO ubuntu-mate-logo.script
95c95,96
<     y = logo.y + logo.height + (progress_indicator.bullet_height * 7 ); # + logo_spacing;
---
> ###    y = logo.y + logo.height + (progress_indicator.bullet_height * 7 ); # + logo_spacing;
>     y = logo.y + Window.GetHeight () - Window.GetHeight () * 0.25 ;				### EAJM ###
173,174c174,180
< Window.SetBackgroundTopColor (0.2353, 0.2314, 0.2157);     # Nice colour on top of the screen fading to
< Window.SetBackgroundBottomColor (0.2353, 0.2314, 0.2157);  # an equally nice colour on the bottom
---
> ### EAJM ###	Window.SetBackgroundTopColor (0.2353, 0.2314, 0.2157);     # Nice colour on top of the screen fading to
> ### EAJM ###	Window.SetBackgroundBottomColor (0.2353, 0.2314, 0.2157);  # an equally nice colour on the bottom
> #
> #
> ###	Oasis Custom  EAJM
> ### EAJM ###	Window.SetBackgroundTopColor (0.0500, 0.0500, 0.0500);     # Set all for very dark grey
> ### EAJM ###	Window.SetBackgroundBottomColor (0.0500, 0.0500, 0.0500);  # Set for same
197c203,204
< logo.y = Window.GetY () + Window.GetHeight () / 2 - logo.height / 1.3;
---
> ### logo.y = Window.GetY () + Window.GetHeight () / 2 - logo.height / 1.3;	### EAJM ###
> logo.y = Window.GetY () + Window.GetHeight () / 2 - logo.height / 2;		### EAJM ###
220d226
< progress_indicator.y = logo.y + logo.height + (logo.height / 10);
221a228,230
> ### progress_indicator.y = logo.y + logo.height + (logo.height / 10);				### EAJM ###
> #progress_indicator.y = logo.y + Window.GetHeight () - progress_indicator.bullet_height *5 ;	### EAJM ###
> progress_indicator.y = logo.y + Window.GetHeight () - Window.GetHeight () * 0.3 ;		### EAJM ###
root:/usr/share/plymouth/themes/ubuntu-mate-logo#

Wallpaper

I can't give you an answer with respect to plymouth but I can tell you a bit more about the displaymanger 'LightDM'

As a matter of fact, nothing has changed.
The displaymanager used to be LightDM and still is LightDM.
What changed is the custom greeter in LightDM.
It used to be 'slick-greeter' and that is now changed to 'arctica-greeter'
These greeters are LightDM themes (or plugins if you want).
You can revert this and see if it changes anything for you but I don't think it will make any difference.

sudo apt purge arctica-greeter
sudo apt install slick-greeter

I personally think that slick-greeter is superior to arctica-greeter (looks better, more comfortable to customize) so I removed arctica-greeter and installed slick-greeter.

As for plymouth, I don't think that changing greeters would have any influence on that. I find it much more likely that plymouth itself got a major overhaul resulting in a different way to configure.

As for LightDM, it doesn't piggyback on Plymouth, it is independently started by systemd:

[Unit]
Description=Light Display Manager
Documentation=man:lightdm(1)
[email protected] plymouth-quit.service
After=systemd-user-sessions.service [email protected] plymouth-quit.service

[Service]
# temporary safety check until all DMs are converted to correct
# display-manager.service symlink handling
ExecStartPre=/bin/sh -c '[ "$(basename $(cat /etc/X11/default-display-manager 2>/dev/null))" = "lightdm" ]'
ExecStart=/usr/sbin/lightdm
Restart=always
BusName=org.freedesktop.DisplayManager

just like plymouth itself:

[Unit]
Description=Show Plymouth Boot Screen
DefaultDependencies=no
Wants=systemd-ask-password-plymouth.path
After=systemd-udev-trigger.service systemd-udevd.service keyboard-setup.service
Before=systemd-ask-password-plymouth.service
ConditionKernelCommandLine=!plymouth.enable=0
ConditionKernelCommandLine=!nosplash
ConditionKernelCommandLine=splash
ConditionVirtualization=!container
IgnoreOnIsolate=true

[Service]
ExecStart=/usr/sbin/plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session
ExecStartPost=-/usr/bin/plymouth show-splash
Type=forking
RemainAfterExit=yes
KillMode=mixed
SendSIGKILL=no

I have to say that I have second thoughts about plymouth:
It needs a highly excessive amount of systemd service unitfiles

plymouth-halt.service
plymouth-kexec.service
plymouth-log.service
plymouth-poweroff.service
plymouth-quit-wait.service
plymouth-quit.service
plymouth-read-write.service
plymouth-reboot.service
plymouth-start.service
plymouth-switch-root-initramfs.service
plymouth-switch-root.service
plymouth.service
systemd-ask-password-plymouth.path
systemd-ask-password-plymouth.service

Which is, in my opinion, ridiculous for a useless piece of wallpaper that tries to look nice while hiding important bootinfo. I absolutely understand why you want to customize it. :+1:

4 Likes

Thank you, @tkn. I very much appreciate your attempt at trying to help me.

However, while I am tempted to follow in your footsteps, I endured much unwanted grief trying to stick with metacity, way back, and decided to avoid that type of "divergence" wherever I could. So ... if arctica-greeter is intended as the permanent replacement for slick-greeter, then I have to accept that and try to work with it ... unless you tell me that there are plans to revert back to slick-greeter for UbuntuMATE 24.04.

I was really hoping for guidance, from someone who has direct experience with the arctica-greeter, on how to adapt/retrofit arctica-greeter, with what I previously had.

Thank you again, @tkn.

Hi Eric :slight_smile:

I think you misunderstand what I wrote.

In your question about the ubuntu-mate-logo.script you suggest that Arctica Greeter is the reason that your ubuntu-mate-logo.script is not working anymore.

But this is definitly not the case.

Since you are hacking on plymouth let's make a few things clear:

  1. Arctica-greeter has no influence on plymouth at all
  2. LightDM also has no influence on plymouth at all

I don't think I can be more clear than this.

However, I too hope that you will find someone with more direct experience with the arctica-greeter than me. A second opinion is always worth a lot :purple_heart:

Happy hacking ! :slight_smile:

2 Likes

Thank you again, @tkn!

You at least clarified that getting Arctica-greeter to work implies abandoning/ignoring both "Plymouth" and "LightDM". I'm OK with that. I just wish there was some guide as to how to "rein in" Arctica-greeter and get it to do what I want, to replicate what I did with Plymouth and LightDM, whichever way that is to be.

No , that is not what I meant

Arctica is like a plugin for LightDM and both are completely independent from plymouth. You don't have to abandon or ignore anything.

It is highly likely that plymouth itself changed internally, which is probably the reason that your custom logoscript doesn't work.

Sorry for the confusion, english is not my native language so I might have made an error in formulating things. :slight_smile:

2 Likes

Thank you, @tkn.

Just to clarify this point, are you saying that "Arctica-greeter" is a one-for-one, substitute component, replacement of the "slick-greeter" ?

If so ... then

  • either Plymouth itself has changes, or
  • as you suggested, LightDM itself has changed that aspect of its use of Plymouth (not sure how that would work, if plymouth is still involved).

I don't know where to look to find if such a change was made. Do you have any ideas on that?

Yes

LightDM doesn't use plymouth.
LightDM is started by systemd after plymouth is closed.

Starting lightdm after plymouth is closed is conducted by this systemd snippet:
/lib/systemd/system/lightdm.service

The documentation on the archlinux wiki is as usual a very good startingpoint:
https://wiki.archlinux.org/title/Plymouth
----quote----
4.4 Change background image
You can add a background image for two-step-based themes (such as spinner and bgrt). Just place your desired image into /usr/share/plymouth/themes/spinner/background-tile.png.
Do not forget to regenerate the initrd once the theme changed.
----end quote----

( The last line means issuing the command: update-initramfs -u )

4 Likes

Thank you again, @tkn! You are a jewel of a person.

Like a master surgeon that you are, that reference offers the precisely-suited fix!

Thank you also for that Arch-wiki reference. It does explain a lot.

STATUS: Fully Resolved

3 Likes