Set the boot splash to blob_boot.png during install
This commit is contained in:
1 parent
d8df9fa320
commit
3fea28e225
7 files changed
+59
-15
No files matched your search
@@ -81,7 +81,7 @@ It runs these steps, in this order, and every one of them is idempotent:
|
|||||||
| 5. First theme | links `~/wallpapers` to the checkout, applies `flats` headless, picks a background, and links the btop and Neovim theme files, so the first login is not a blank desktop |
|
| 5. First theme | links `~/wallpapers` to the checkout, applies `flats` headless, picks a background, and links the btop and Neovim theme files, so the first login is not a blank desktop |
|
||||||
| 6. User units | installs the session services into `~/.config/systemd/user` and enables them |
|
| 6. User units | installs the session services into `~/.config/systemd/user` and enables them |
|
||||||
| 7. systemd drop-ins | writes the shutdown timeouts, oomd thresholds, plocate prune paths, and sleep hooks under `/etc` |
|
| 7. systemd drop-ins | writes the shutdown timeouts, oomd thresholds, plocate prune paths, and sleep hooks under `/etc` |
|
||||||
| 8. System services | enables NetworkManager, resolved, bluetooth, cups, avahi, docker, power-profiles-daemon, and oomd, and masks `NetworkManager-wait-online` |
|
| 8. System services | enables NetworkManager, resolved, bluetooth, cups, avahi, docker, power-profiles-daemon, and oomd, masks `NetworkManager-wait-online`, and sets the boot splash to `branding/blob_boot.png` |
|
||||||
| 9. Login screen | installs the session entry and the SDDM config, enables `sddm.service`, and sets the default target to `graphical.target` |
|
| 9. Login screen | installs the session entry and the SDDM config, enables `sddm.service`, and sets the default target to `graphical.target` |
|
||||||
| 10. Reload | reloads systemd, restarts the running user services, and in a running session re-renders the theme, reloads Hyprland, and restarts the Blob shell |
|
| 10. Reload | reloads systemd, restarts the running user services, and in a running session re-renders the theme, reloads Hyprland, and restarts the Blob shell |
|
||||||
| 11. Launch | starts the login screen, so the desktop comes up without a reboot |
|
| 11. Launch | starts the login screen, so the desktop comes up without a reboot |
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
BLOB_PATH="${BLOB_PATH:-$HOME/.local/share/blob}"
|
BLOB_PATH="${BLOB_PATH:-$HOME/.local/share/blob}"
|
||||||
DEFAULT_IMAGE="$BLOB_PATH/branding/boot_flash.png"
|
DEFAULT_IMAGE="$BLOB_PATH/branding/blob_boot.png"
|
||||||
THEME_SOURCE="$BLOB_PATH/default/plymouth"
|
THEME_SOURCE="$BLOB_PATH/default/plymouth"
|
||||||
THEME_DIR="/usr/share/plymouth/themes/blob"
|
THEME_DIR="/usr/share/plymouth/themes/blob"
|
||||||
PLYMOUTH_LOGO="$THEME_DIR/logo.png"
|
PLYMOUTH_LOGO="$THEME_DIR/logo.png"
|
||||||
|
|||||||
+6
-1
@@ -15,6 +15,7 @@ with `--check`.
|
|||||||
| `install/steps/packages.sh` | repo and AUR packages, and the yay bootstrap |
|
| `install/steps/packages.sh` | repo and AUR packages, and the yay bootstrap |
|
||||||
| `install/steps/config.sh` | the `BLOB_PATH` symlink, everything under `~/.config`, and the login shell profile |
|
| `install/steps/config.sh` | the `BLOB_PATH` symlink, everything under `~/.config`, and the login shell profile |
|
||||||
| `install/steps/services.sh` | system services, systemd drop-ins, user units |
|
| `install/steps/services.sh` | system services, systemd drop-ins, user units |
|
||||||
|
| `install/steps/boot.sh` | the Plymouth boot splash |
|
||||||
| `install/steps/theme.sh` | the wallpaper link, the first theme, the first background |
|
| `install/steps/theme.sh` | the wallpaper link, the first theme, the first background |
|
||||||
| `install/steps/login.sh` | SDDM, the session entry, and the first launch |
|
| `install/steps/login.sh` | SDDM, the session entry, and the first launch |
|
||||||
| `install/steps/reload.sh` | reloading systemd, the user services, and a running session |
|
| `install/steps/reload.sh` | reloading systemd, the user services, and a running session |
|
||||||
@@ -78,7 +79,11 @@ with `--check`.
|
|||||||
hold up the login screen, and `plymouth-start.service` and
|
hold up the login screen, and `plymouth-start.service` and
|
||||||
`plymouth-quit-wait.service` are masked because an unconfigured plymouth
|
`plymouth-quit-wait.service` are masked because an unconfigured plymouth
|
||||||
holds the console and leaves the machine with neither a greeter nor a TTY.
|
holds the console and leaves the machine with neither a greeter nor a TTY.
|
||||||
`blob boot` unmasks them when it sets the splash up. See
|
The installer then applies `branding/blob_boot.png` as the boot splash
|
||||||
|
through `blob boot`, which installs the theme, adds the mkinitcpio hook,
|
||||||
|
unmasks the plymouth units and rebuilds the initramfs. It is skipped when
|
||||||
|
the blob theme is already the default with the same image, and once it is
|
||||||
|
in place the plymouth units are no longer masked on later runs. See
|
||||||
[packages.md](packages.md#the-boot-splash).
|
[packages.md](packages.md#the-boot-splash).
|
||||||
9. **The login screen** is SDDM. It has to be installed first: if
|
9. **The login screen** is SDDM. It has to be installed first: if
|
||||||
`sddm.service` is not there, the installer says whether the package is
|
`sddm.service` is not there, the installer says whether the package is
|
||||||
|
|||||||
+7
-8
@@ -138,19 +138,18 @@ Omarchy's own package list, because they were installed by hand on this machine:
|
|||||||
|
|
||||||
## The boot splash
|
## The boot splash
|
||||||
|
|
||||||
`plymouth` is installed but left inert, and the splash is opt-in through one
|
`install.sh` sets the splash to `branding/blob_boot.png`. To change it later:
|
||||||
command:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
blob boot # branding/boot_flash.png
|
blob boot # branding/blob_boot.png
|
||||||
blob boot ~/some/image.png # or any other image
|
blob boot ~/some/image.png # or any other image
|
||||||
```
|
```
|
||||||
|
|
||||||
The reason it is opt-in is that an installed but *unconfigured* plymouth is not
|
An installed but *unconfigured* plymouth is not harmless: it takes the console
|
||||||
harmless: it takes the console at boot and never hands it back, and
|
at boot and never hands it back, and `getty@tty1` waits on
|
||||||
`getty@tty1` waits on `plymouth-quit-wait.service`, so the machine reaches
|
`plymouth-quit-wait.service`, so the machine reaches neither the greeter nor a
|
||||||
neither the greeter nor a TTY. `install.sh` therefore masks
|
TTY. `install.sh` therefore masks `plymouth-start.service` and
|
||||||
`plymouth-start.service` and `plymouth-quit-wait.service`, and `blob boot`
|
`plymouth-quit-wait.service` until the splash is configured, and `blob boot`
|
||||||
unmasks them as part of configuring everything else - the theme in
|
unmasks them as part of configuring everything else - the theme in
|
||||||
`default/plymouth/`, the `plymouth` mkinitcpio hook, and the initramfs rebuild.
|
`default/plymouth/`, the `plymouth` mkinitcpio hook, and the initramfs rebuild.
|
||||||
It finishes by printing the kernel parameters your bootloader still needs
|
It finishes by printing the kernel parameters your bootloader still needs
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ source "$repo_dir/install/steps/directories.sh"
|
|||||||
source "$repo_dir/install/steps/packages.sh"
|
source "$repo_dir/install/steps/packages.sh"
|
||||||
source "$repo_dir/install/steps/config.sh"
|
source "$repo_dir/install/steps/config.sh"
|
||||||
source "$repo_dir/install/steps/services.sh"
|
source "$repo_dir/install/steps/services.sh"
|
||||||
|
source "$repo_dir/install/steps/boot.sh"
|
||||||
source "$repo_dir/install/steps/theme.sh"
|
source "$repo_dir/install/steps/theme.sh"
|
||||||
source "$repo_dir/install/steps/login.sh"
|
source "$repo_dir/install/steps/login.sh"
|
||||||
source "$repo_dir/install/steps/reload.sh"
|
source "$repo_dir/install/steps/reload.sh"
|
||||||
@@ -80,6 +81,7 @@ link_app_themes
|
|||||||
|
|
||||||
enable_system_services
|
enable_system_services
|
||||||
mask_system_services
|
mask_system_services
|
||||||
|
install_boot_splash
|
||||||
enable_user_units
|
enable_user_units
|
||||||
|
|
||||||
install_login_config
|
install_login_config
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
boot_splash_image="$repo_dir/branding/blob_boot.png"
|
||||||
|
boot_splash_theme_dir="/usr/share/plymouth/themes/blob"
|
||||||
|
|
||||||
|
boot_splash_installed() {
|
||||||
|
command -v plymouth-set-default-theme &>/dev/null || return 1
|
||||||
|
[[ -f $boot_splash_theme_dir/blob.plymouth ]] || return 1
|
||||||
|
[[ "$(plymouth-set-default-theme 2>/dev/null)" == blob ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
install_boot_splash() {
|
||||||
|
if ! command -v plymouth-set-default-theme &>/dev/null; then
|
||||||
|
say "SKIP boot splash (plymouth not installed)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f $boot_splash_image ]]; then
|
||||||
|
say "SKIP boot splash (branding/blob_boot.png missing)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if boot_splash_installed && cmp -s "$boot_splash_image" "$boot_splash_theme_dir/logo.png"; then
|
||||||
|
say "ok boot splash"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
note_change
|
||||||
|
if [[ $check == true ]]; then
|
||||||
|
say "would set the boot splash to branding/blob_boot.png and rebuild the initramfs"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if BLOB_PATH="$blob_path" "$repo_dir/bin/blob-boot" "$boot_splash_image"; then
|
||||||
|
say "set boot splash to branding/blob_boot.png"
|
||||||
|
else
|
||||||
|
say "WARN could not set the boot splash; run 'blob boot' to retry"
|
||||||
|
fi
|
||||||
|
}
|
||||||
@@ -12,10 +12,10 @@ system_services=(
|
|||||||
# network-online.target must not hold up graphical.target waiting for DHCP or
|
# network-online.target must not hold up graphical.target waiting for DHCP or
|
||||||
# Wi-Fi association. Nothing in the session blocks on the network.
|
# Wi-Fi association. Nothing in the session blocks on the network.
|
||||||
#
|
#
|
||||||
# Blob configures no boot splash: no mkinitcpio hook, no kernel command line,
|
# An unconfigured plymouth takes the console at boot and never hands it back,
|
||||||
# and no theme. An unconfigured plymouth still takes the console at boot and
|
# and getty@tty1 waits on plymouth-quit-wait.service, so the machine comes up
|
||||||
# never hands it back, and getty@tty1 waits on plymouth-quit-wait.service, so
|
# with no greeter and no TTY to fix it from. The plymouth units are masked
|
||||||
# the machine comes up with no greeter and no TTY to fix it from.
|
# until install_boot_splash configures the blob theme, and left alone after.
|
||||||
masked_services=(
|
masked_services=(
|
||||||
NetworkManager-wait-online.service
|
NetworkManager-wait-online.service
|
||||||
plymouth-start.service
|
plymouth-start.service
|
||||||
@@ -64,6 +64,7 @@ mask_system_services() {
|
|||||||
|
|
||||||
for unit in "${masked_services[@]}"; do
|
for unit in "${masked_services[@]}"; do
|
||||||
system_unit_exists "$unit" || continue
|
system_unit_exists "$unit" || continue
|
||||||
|
[[ $unit == plymouth-* ]] && boot_splash_installed && continue
|
||||||
[[ "$(system_unit_state "$unit")" == masked ]] && continue
|
[[ "$(system_unit_state "$unit")" == masked ]] && continue
|
||||||
pending+=("$unit")
|
pending+=("$unit")
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in new issue
Block a user