diff --git a/bin/omarchy-generate-plymouth-theme b/bin/omarchy-generate-plymouth-theme new file mode 100755 index 0000000..2ca7da8 --- /dev/null +++ b/bin/omarchy-generate-plymouth-theme @@ -0,0 +1,210 @@ +#!/bin/bash + +# Omarchy Plymouth Theme Generator +# This script uses ImageMagick to recolor PNG assets from tokyo-night plymouth theme +# Usage: omarchy-generate-plymouth-theme --background=#24273a --foreground=#cad3f5 --progress-background=#343849 --progress-foreground=#cad3f5 --logo=#a6da95 --destination=catppuccin +set -e + +# Check if ImageMagick is installed +if ! command -v magick &>/dev/null; then + echo "ImageMagick 7+ is required but not installed. Please install it first:" + echo "yay -S imagemagick" + exit 1 +fi + +# Base directory +THEMES_DIR="$HOME/.local/share/omarchy/themes" + +# Default values (tokyo-night colors) +BACKGROUND="#1a1b26" +FOREGROUND="#c0caf5" +PROGRESS_BACKGROUND="#343849" +PROGRESS_FOREGROUND="#7aa2f7" +LOGO="#7aa2f7" +DESTINATION="" + +# Function to show usage +show_usage() { + echo "Usage: $0 --background= --foreground= --progress-background= --progress-foreground= --logo= --destination=" + echo + echo "Parameters:" + echo " --background Background color (hex format, e.g., #24273a)" + echo " --foreground Foreground color (hex format, e.g., #cad3f5)" + echo " --progress-background Progress bar background color (hex format, e.g., #343849)" + echo " --progress-foreground Progress bar foreground color (hex format, e.g., #cad3f5)" + echo " --logo Logo color (hex format, e.g., #a6da95)" + echo " --destination Destination theme name (e.g., catppuccin)" + echo + echo "Example:" + echo " $0 --background=#24273a --foreground=#cad3f5 --progress-background=#343849 --progress-foreground=#cad3f5 --logo=#a6da95 --destination=catppuccin" + exit 1 +} + +# Parse command line arguments +for arg in "$@"; do + case $arg in + --background=*) + BACKGROUND="${arg#*=}" + ;; + --foreground=*) + FOREGROUND="${arg#*=}" + ;; + --progress-background=*) + PROGRESS_BACKGROUND="${arg#*=}" + ;; + --progress-foreground=*) + PROGRESS_FOREGROUND="${arg#*=}" + ;; + --logo=*) + LOGO="${arg#*=}" + ;; + --destination=*) + DESTINATION="${arg#*=}" + ;; + --help | -h) + show_usage + ;; + *) + echo "Unknown parameter: $arg" + show_usage + ;; + esac +done + +# Check if destination is provided +if [[ -z "$DESTINATION" ]]; then + echo "Error: --destination parameter is required" + show_usage +fi + +# Convert hex to RGB values for Plymouth script +hex_to_rgb() { + local hex="$1" + # Remove # if present + hex="${hex#\#}" + + # Convert to decimal + local r=$((16#${hex:0:2})) + local g=$((16#${hex:2:2})) + local b=$((16#${hex:4:2})) + + # Convert to 0-1 range with 3 decimal places + printf "%.3f\n" $(awk "BEGIN {print $r/255}") + printf "%.3f\n" $(awk "BEGIN {print $g/255}") + printf "%.3f\n" $(awk "BEGIN {print $b/255}") +} + +# Convert hex to Plymouth hex format (0xRRGGBB) +hex_to_plymouth() { + local hex="$1" + # Remove # if present and prepend 0x + hex="${hex#\#}" + echo "0x${hex}" +} + +# Function to recolor an image +recolor_image() { + local input="$1" + local output="$2" + local color="$3" + local operation="$4" + + case "$operation" in + "fill") + # Simple fill with color (for lock, bullet, progress_bar, progress_box, logo, throbber) + # Use -strip to remove EXIF data and avoid warnings + magick "$input" -strip -fill "$color" -colorize 100% "$output" 2>/dev/null + ;; + "entry") + # Create semi-transparent black with colored border + # First get dimensions + dims=$(magick identify -format "%wx%h" "$input") + width=$(echo $dims | cut -d'x' -f1) + height=$(echo $dims | cut -d'x' -f2) + + # Create new image with transparent background, semi-transparent black fill, and colored border + magick -size ${width}x${height} xc:transparent \ + -fill "rgba(0,0,0,0.05)" -draw "rectangle 0,0 $((width - 1)),$((height - 1))" \ + -fill none -stroke "$color" -strokewidth 2 -draw "rectangle 1,1 $((width - 2)),$((height - 2))" \ + "$output" + ;; + esac +} + +# Source and destination directories +SOURCE_DIR="${THEMES_DIR}/tokyo-night/plymouth" +DEST_DIR="${THEMES_DIR}/${DESTINATION}/plymouth" + +# Check if source exists +if [[ ! -d "$SOURCE_DIR" ]]; then + echo "Error: Tokyo Night theme not found at $SOURCE_DIR" + exit 1 +fi + +echo "Plymouth Asset Recoloring Script" +echo "================================" +echo +echo "Configuration:" +echo " Background: $BACKGROUND" +echo " Foreground: $FOREGROUND" +echo " Progress Background: $PROGRESS_BACKGROUND" +echo " Progress Foreground: $PROGRESS_FOREGROUND" +echo " Logo: $LOGO" +echo " Destination: $DESTINATION" +echo + +# Create destination directory +echo "Creating destination directory: $DEST_DIR" +mkdir -p "$DEST_DIR" + +# Copy all files from tokyo-night +echo "Copying files from tokyo-night theme..." +cp -r "$SOURCE_DIR"/* "$DEST_DIR/" + +# Update omarchy.plymouth with background color +echo "Updating omarchy.plymouth..." +PLYMOUTH_BG=$(hex_to_plymouth "$BACKGROUND") +sed -i "s/ConsoleLogBackgroundColor=.*/ConsoleLogBackgroundColor=${PLYMOUTH_BG}/" "$DEST_DIR/omarchy.plymouth" + +# Update omarchy.script with background color +echo "Updating omarchy.script..." +RGB=($(hex_to_rgb "$BACKGROUND")) +sed -i "s/Window.SetBackgroundTopColor(.*);/Window.SetBackgroundTopColor(${RGB[0]}, ${RGB[1]}, ${RGB[2]});/" "$DEST_DIR/omarchy.script" +sed -i "s/Window.SetBackgroundBottomColor(.*);/Window.SetBackgroundBottomColor(${RGB[0]}, ${RGB[1]}, ${RGB[2]});/" "$DEST_DIR/omarchy.script" + +# Recolor assets +echo "Recoloring assets..." + +# Recolor lock.png +echo " - Recoloring lock.png with $FOREGROUND" +recolor_image "$DEST_DIR/lock.png" "$DEST_DIR/lock.png" "$FOREGROUND" "fill" + +# Recolor bullet.png +echo " - Recoloring bullet.png with $FOREGROUND" +recolor_image "$DEST_DIR/bullet.png" "$DEST_DIR/bullet.png" "$FOREGROUND" "fill" + +# Recolor progress_bar.png +echo " - Recoloring progress_bar.png with $PROGRESS_FOREGROUND" +recolor_image "$DEST_DIR/progress_bar.png" "$DEST_DIR/progress_bar.png" "$PROGRESS_FOREGROUND" "fill" + +# Recolor progress_box.png +echo " - Recoloring progress_box.png with $PROGRESS_BACKGROUND" +recolor_image "$DEST_DIR/progress_box.png" "$DEST_DIR/progress_box.png" "$PROGRESS_BACKGROUND" "fill" + +# Recolor entry.png +echo " - Creating entry.png with 5% black and $FOREGROUND border" +recolor_image "$DEST_DIR/entry.png" "$DEST_DIR/entry.png" "$FOREGROUND" "entry" + +# Recolor logo.png (using fill instead of tint) +echo " - Recoloring logo.png with $LOGO" +recolor_image "$DEST_DIR/logo.png" "$DEST_DIR/logo.png" "$LOGO" "fill" + +# Recolor throbber frames +echo " - Recoloring throbber frames (1-30) with $FOREGROUND" +for i in {1..30}; do + frame_file=$(printf "throbber-%02d.png" $i) + recolor_image "$DEST_DIR/$frame_file" "$DEST_DIR/$frame_file" "$FOREGROUND" "fill" 2>/dev/null +done + +echo +echo "✓ Plymouth theme for $DESTINATION has been created successfully!" diff --git a/bin/omarchy-plymouth-shutdown-sync b/bin/omarchy-plymouth-shutdown-sync new file mode 100755 index 0000000..a2b3f6b --- /dev/null +++ b/bin/omarchy-plymouth-shutdown-sync @@ -0,0 +1,28 @@ +#!/bin/bash +USER_HOME=$(find /home/* -maxdepth 0 | head -n1 | head -n1) + +echo "Running plymouth sync check for user dir: $USER_HOME" + +SYNC_FLAG="$USER_HOME/.config/omarchy/.plymouth-sync-needed" +CURRENT_THEME_LINK="$USER_HOME/.config/omarchy/current/theme" + +if [[ -f "$SYNC_FLAG" && -L "$CURRENT_THEME_LINK" ]]; then + CURRENT_THEME=$(readlink "$CURRENT_THEME_LINK") + THEME_NAME=$(basename "$CURRENT_THEME") + PLYMOUTH_DIR="$CURRENT_THEME/plymouth" + + if [[ -d "$PLYMOUTH_DIR" ]]; then + # Copy theme files to Plymouth + sudo cp -r "$CURRENT_THEME/plymouth/"* /usr/share/plymouth/themes/omarchy/ + + # Update Plymouth theme and rebuild + sudo plymouth-set-default-theme -R omarchy + + echo "Plymouth theme was found in $PLYMOUTH_DIR. Theme synced to $THEME_NAME." + else + echo "No plymouth directory found in $CURRENT_THEME. Skipping copy and rebuild." + fi + + # Remove sync flag + rm "$SYNC_FLAG" +fi diff --git a/bin/omarchy-theme-next b/bin/omarchy-theme-next index 40ace80..0d20fc0 100755 --- a/bin/omarchy-theme-next +++ b/bin/omarchy-theme-next @@ -35,6 +35,9 @@ ln -nsf "$NEW_THEME" "$HOME/.config/omarchy/current/theme" # Touch alacritty config to pickup the changed theme touch "$HOME/.config/alacritty/alacritty.toml" +# Touch .plymouth-sync-needed to signal rebuild on shutdown / reboot +touch "$HOME/.config/omarchy/.plymouth-sync-needed" + # Restart for new theme pkill -SIGUSR2 waybar makoctl reload diff --git a/install/plymouth.sh b/install/plymouth.sh new file mode 100755 index 0000000..13b91cd --- /dev/null +++ b/install/plymouth.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash + +# Install Plymouth package +echo "Installing Plymouth..." +yay -S --noconfirm --needed plymouth + +# Skip if plymouth already exists for some reason +if ! grep -q "plymouth" /etc/mkinitcpio.conf; then + # Backup original mkinitcpio.conf just in case + backup_timestamp=$(date +"%Y%m%d%H%M%S") + sudo cp /etc/mkinitcpio.conf "/etc/mkinitcpio.conf.bak.${backup_timestamp}" + + # Add plymouth to HOOKS array. Should be added: + # - After 'base' and 'udev' (or 'systemd' if using systemd hook) + # - Before 'encrypt' or 'sd-encrypt' if present + + # Use sed to add plymouth in-place + if grep -q "systemd" /etc/mkinitcpio.conf; then + # Add after systemd + sudo sed -i '/^HOOKS=/s/systemd/systemd plymouth/' /etc/mkinitcpio.conf + elif grep -q "udev" /etc/mkinitcpio.conf; then + # Add after udev + sudo sed -i '/^HOOKS=/s/udev/udev plymouth/' /etc/mkinitcpio.conf + else + # Fallback: add after base + sudo sed -i '/^HOOKS=/s/base/base plymouth/' /etc/mkinitcpio.conf + fi +fi + +# Regenerate initramfs +sudo mkinitcpio -P + +# Add kernel parameters for Plymouth (systemd-boot only) +if [ -d "/boot/loader/entries" ]; then + echo "Detected systemd-boot" + + for entry in /boot/loader/entries/*.conf; do + if [ -f "$entry" ]; then + # Skip fallback entries + if [[ "$(basename "$entry")" == *"fallback"* ]]; then + echo "Skipped: $(basename "$entry") (fallback entry)" + continue + fi + + # Skip if splash it already present for some reason + if ! grep -q "splash" "$entry"; then + sudo sed -i '/^options/ s/$/ splash quiet/' "$entry" + else + echo "Skipped: $(basename "$entry") (splash already present)" + fi + fi + done +else + echo "" + echo "systemd-boot not detected. Please manually add these kernel parameters:" + echo " - splash (to see the graphical splash screen)" + echo " - quiet (for silent boot)" + echo "" +fi + +# Touch .plymouth-sync-needed to signal rebuild on shutdown / reboot +touch "$HOME/.config/omarchy/.plymouth-sync-needed" + +# Create the systemd service +sudo tee /etc/systemd/system/omarchy-plymouth-shutdown.service >/dev/null < 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress)) + { + progress_bar.image = progress_bar.original_image.Scale(progress_bar.original_image.GetWidth() * progress, progress_bar.original_image.GetHeight()); + progress_bar.sprite.SetImage (progress_bar.image); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +Plymouth.SetBootProgressFunction(progress_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + logo.sprite.SetOpacity (1); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(10, 10, 10000); + +fun display_message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +fun hide_message_callback (text) +{ + message_sprite.SetOpacity(0); +} + +Plymouth.SetDisplayMessageFunction (display_message_callback); +Plymouth.SetHideMessageFunction (hide_message_callback); diff --git a/themes/catppuccin/plymouth/progress_bar.png b/themes/catppuccin/plymouth/progress_bar.png new file mode 100644 index 0000000..b0715e5 Binary files /dev/null and b/themes/catppuccin/plymouth/progress_bar.png differ diff --git a/themes/catppuccin/plymouth/progress_box.png b/themes/catppuccin/plymouth/progress_box.png new file mode 100644 index 0000000..6015b08 Binary files /dev/null and b/themes/catppuccin/plymouth/progress_box.png differ diff --git a/themes/catppuccin/plymouth/throbber-01.png b/themes/catppuccin/plymouth/throbber-01.png new file mode 100644 index 0000000..da87e30 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-01.png differ diff --git a/themes/catppuccin/plymouth/throbber-02.png b/themes/catppuccin/plymouth/throbber-02.png new file mode 100644 index 0000000..13e07fa Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-02.png differ diff --git a/themes/catppuccin/plymouth/throbber-03.png b/themes/catppuccin/plymouth/throbber-03.png new file mode 100644 index 0000000..4944f1a Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-03.png differ diff --git a/themes/catppuccin/plymouth/throbber-04.png b/themes/catppuccin/plymouth/throbber-04.png new file mode 100644 index 0000000..7d3a10d Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-04.png differ diff --git a/themes/catppuccin/plymouth/throbber-05.png b/themes/catppuccin/plymouth/throbber-05.png new file mode 100644 index 0000000..f6f87b0 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-05.png differ diff --git a/themes/catppuccin/plymouth/throbber-06.png b/themes/catppuccin/plymouth/throbber-06.png new file mode 100644 index 0000000..b56d25b Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-06.png differ diff --git a/themes/catppuccin/plymouth/throbber-07.png b/themes/catppuccin/plymouth/throbber-07.png new file mode 100644 index 0000000..009cd78 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-07.png differ diff --git a/themes/catppuccin/plymouth/throbber-08.png b/themes/catppuccin/plymouth/throbber-08.png new file mode 100644 index 0000000..41015f6 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-08.png differ diff --git a/themes/catppuccin/plymouth/throbber-09.png b/themes/catppuccin/plymouth/throbber-09.png new file mode 100644 index 0000000..e9b0fe6 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-09.png differ diff --git a/themes/catppuccin/plymouth/throbber-10.png b/themes/catppuccin/plymouth/throbber-10.png new file mode 100644 index 0000000..ad1fa72 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-10.png differ diff --git a/themes/catppuccin/plymouth/throbber-11.png b/themes/catppuccin/plymouth/throbber-11.png new file mode 100644 index 0000000..7a6b13d Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-11.png differ diff --git a/themes/catppuccin/plymouth/throbber-12.png b/themes/catppuccin/plymouth/throbber-12.png new file mode 100644 index 0000000..e175fe0 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-12.png differ diff --git a/themes/catppuccin/plymouth/throbber-13.png b/themes/catppuccin/plymouth/throbber-13.png new file mode 100644 index 0000000..33887f7 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-13.png differ diff --git a/themes/catppuccin/plymouth/throbber-14.png b/themes/catppuccin/plymouth/throbber-14.png new file mode 100644 index 0000000..516830d Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-14.png differ diff --git a/themes/catppuccin/plymouth/throbber-15.png b/themes/catppuccin/plymouth/throbber-15.png new file mode 100644 index 0000000..9258c7a Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-15.png differ diff --git a/themes/catppuccin/plymouth/throbber-16.png b/themes/catppuccin/plymouth/throbber-16.png new file mode 100644 index 0000000..3ddeebe Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-16.png differ diff --git a/themes/catppuccin/plymouth/throbber-17.png b/themes/catppuccin/plymouth/throbber-17.png new file mode 100644 index 0000000..a959e56 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-17.png differ diff --git a/themes/catppuccin/plymouth/throbber-18.png b/themes/catppuccin/plymouth/throbber-18.png new file mode 100644 index 0000000..e128bcc Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-18.png differ diff --git a/themes/catppuccin/plymouth/throbber-19.png b/themes/catppuccin/plymouth/throbber-19.png new file mode 100644 index 0000000..e32b20a Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-19.png differ diff --git a/themes/catppuccin/plymouth/throbber-20.png b/themes/catppuccin/plymouth/throbber-20.png new file mode 100644 index 0000000..68a1988 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-20.png differ diff --git a/themes/catppuccin/plymouth/throbber-21.png b/themes/catppuccin/plymouth/throbber-21.png new file mode 100644 index 0000000..e6d2700 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-21.png differ diff --git a/themes/catppuccin/plymouth/throbber-22.png b/themes/catppuccin/plymouth/throbber-22.png new file mode 100644 index 0000000..284bc04 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-22.png differ diff --git a/themes/catppuccin/plymouth/throbber-23.png b/themes/catppuccin/plymouth/throbber-23.png new file mode 100644 index 0000000..a05003c Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-23.png differ diff --git a/themes/catppuccin/plymouth/throbber-24.png b/themes/catppuccin/plymouth/throbber-24.png new file mode 100644 index 0000000..54e1b5c Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-24.png differ diff --git a/themes/catppuccin/plymouth/throbber-25.png b/themes/catppuccin/plymouth/throbber-25.png new file mode 100644 index 0000000..d6858d5 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-25.png differ diff --git a/themes/catppuccin/plymouth/throbber-26.png b/themes/catppuccin/plymouth/throbber-26.png new file mode 100644 index 0000000..2c69dec Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-26.png differ diff --git a/themes/catppuccin/plymouth/throbber-27.png b/themes/catppuccin/plymouth/throbber-27.png new file mode 100644 index 0000000..595667b Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-27.png differ diff --git a/themes/catppuccin/plymouth/throbber-28.png b/themes/catppuccin/plymouth/throbber-28.png new file mode 100644 index 0000000..50487d6 Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-28.png differ diff --git a/themes/catppuccin/plymouth/throbber-29.png b/themes/catppuccin/plymouth/throbber-29.png new file mode 100644 index 0000000..a4427ba Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-29.png differ diff --git a/themes/catppuccin/plymouth/throbber-30.png b/themes/catppuccin/plymouth/throbber-30.png new file mode 100644 index 0000000..b2e9ebf Binary files /dev/null and b/themes/catppuccin/plymouth/throbber-30.png differ diff --git a/themes/everforest/plymouth/bullet.png b/themes/everforest/plymouth/bullet.png new file mode 100644 index 0000000..a0e9966 Binary files /dev/null and b/themes/everforest/plymouth/bullet.png differ diff --git a/themes/everforest/plymouth/entry.png b/themes/everforest/plymouth/entry.png new file mode 100644 index 0000000..4ee9d75 Binary files /dev/null and b/themes/everforest/plymouth/entry.png differ diff --git a/themes/everforest/plymouth/lock.png b/themes/everforest/plymouth/lock.png new file mode 100644 index 0000000..7a37973 Binary files /dev/null and b/themes/everforest/plymouth/lock.png differ diff --git a/themes/everforest/plymouth/logo.png b/themes/everforest/plymouth/logo.png new file mode 100644 index 0000000..4425be4 Binary files /dev/null and b/themes/everforest/plymouth/logo.png differ diff --git a/themes/everforest/plymouth/omarchy.plymouth b/themes/everforest/plymouth/omarchy.plymouth new file mode 100644 index 0000000..bb3abed --- /dev/null +++ b/themes/everforest/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x2d353b + + diff --git a/themes/everforest/plymouth/omarchy.script b/themes/everforest/plymouth/omarchy.script new file mode 100644 index 0000000..f0f6f50 --- /dev/null +++ b/themes/everforest/plymouth/omarchy.script @@ -0,0 +1,237 @@ +# Omarchy Plymouth Theme Script + +Window.SetBackgroundTopColor(0.176, 0.208, 0.231); +Window.SetBackgroundBottomColor(0.176, 0.208, 0.231); + +logo.image = Image("logo.png"); +logo.sprite = Sprite(logo.image); +logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2); +logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2); +logo.sprite.SetOpacity (1); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + + entry.sprite = Sprite(entry.image); + entry.x = Window.GetX() + Window.GetWidth()/2 - entry.image.GetWidth() / 2; + entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40; + entry.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- Progress Bar -------------------------------- + +progress_box.image = Image("progress_box.png"); +progress_box.sprite = Sprite(progress_box.image); + +progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; +progress_box.y = Window.GetY() + Window.GetHeight() * 0.75 - progress_box.image.GetHeight() / 2; +progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); +progress_box.sprite.SetOpacity(0); + +progress_bar.original_image = Image("progress_bar.png"); +progress_bar.sprite = Sprite(); + +progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; +progress_bar.y = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2; +progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); +progress_bar.sprite.SetOpacity(0); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress)) + { + progress_bar.image = progress_bar.original_image.Scale(progress_bar.original_image.GetWidth() * progress, progress_bar.original_image.GetHeight()); + progress_bar.sprite.SetImage (progress_bar.image); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +Plymouth.SetBootProgressFunction(progress_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + logo.sprite.SetOpacity (1); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(10, 10, 10000); + +fun display_message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +fun hide_message_callback (text) +{ + message_sprite.SetOpacity(0); +} + +Plymouth.SetDisplayMessageFunction (display_message_callback); +Plymouth.SetHideMessageFunction (hide_message_callback); diff --git a/themes/everforest/plymouth/progress_bar.png b/themes/everforest/plymouth/progress_bar.png new file mode 100644 index 0000000..e142b2e Binary files /dev/null and b/themes/everforest/plymouth/progress_bar.png differ diff --git a/themes/everforest/plymouth/progress_box.png b/themes/everforest/plymouth/progress_box.png new file mode 100644 index 0000000..ac8d117 Binary files /dev/null and b/themes/everforest/plymouth/progress_box.png differ diff --git a/themes/everforest/plymouth/throbber-01.png b/themes/everforest/plymouth/throbber-01.png new file mode 100644 index 0000000..7ae4eba Binary files /dev/null and b/themes/everforest/plymouth/throbber-01.png differ diff --git a/themes/everforest/plymouth/throbber-02.png b/themes/everforest/plymouth/throbber-02.png new file mode 100644 index 0000000..2b15d88 Binary files /dev/null and b/themes/everforest/plymouth/throbber-02.png differ diff --git a/themes/everforest/plymouth/throbber-03.png b/themes/everforest/plymouth/throbber-03.png new file mode 100644 index 0000000..bbebb94 Binary files /dev/null and b/themes/everforest/plymouth/throbber-03.png differ diff --git a/themes/everforest/plymouth/throbber-04.png b/themes/everforest/plymouth/throbber-04.png new file mode 100644 index 0000000..5e60b0b Binary files /dev/null and b/themes/everforest/plymouth/throbber-04.png differ diff --git a/themes/everforest/plymouth/throbber-05.png b/themes/everforest/plymouth/throbber-05.png new file mode 100644 index 0000000..9e2ca62 Binary files /dev/null and b/themes/everforest/plymouth/throbber-05.png differ diff --git a/themes/everforest/plymouth/throbber-06.png b/themes/everforest/plymouth/throbber-06.png new file mode 100644 index 0000000..e99d7fa Binary files /dev/null and b/themes/everforest/plymouth/throbber-06.png differ diff --git a/themes/everforest/plymouth/throbber-07.png b/themes/everforest/plymouth/throbber-07.png new file mode 100644 index 0000000..b51eb4b Binary files /dev/null and b/themes/everforest/plymouth/throbber-07.png differ diff --git a/themes/everforest/plymouth/throbber-08.png b/themes/everforest/plymouth/throbber-08.png new file mode 100644 index 0000000..2458a6e Binary files /dev/null and b/themes/everforest/plymouth/throbber-08.png differ diff --git a/themes/everforest/plymouth/throbber-09.png b/themes/everforest/plymouth/throbber-09.png new file mode 100644 index 0000000..39d7941 Binary files /dev/null and b/themes/everforest/plymouth/throbber-09.png differ diff --git a/themes/everforest/plymouth/throbber-10.png b/themes/everforest/plymouth/throbber-10.png new file mode 100644 index 0000000..f8d5947 Binary files /dev/null and b/themes/everforest/plymouth/throbber-10.png differ diff --git a/themes/everforest/plymouth/throbber-11.png b/themes/everforest/plymouth/throbber-11.png new file mode 100644 index 0000000..1c9ebcc Binary files /dev/null and b/themes/everforest/plymouth/throbber-11.png differ diff --git a/themes/everforest/plymouth/throbber-12.png b/themes/everforest/plymouth/throbber-12.png new file mode 100644 index 0000000..a16e177 Binary files /dev/null and b/themes/everforest/plymouth/throbber-12.png differ diff --git a/themes/everforest/plymouth/throbber-13.png b/themes/everforest/plymouth/throbber-13.png new file mode 100644 index 0000000..868d56e Binary files /dev/null and b/themes/everforest/plymouth/throbber-13.png differ diff --git a/themes/everforest/plymouth/throbber-14.png b/themes/everforest/plymouth/throbber-14.png new file mode 100644 index 0000000..113e30c Binary files /dev/null and b/themes/everforest/plymouth/throbber-14.png differ diff --git a/themes/everforest/plymouth/throbber-15.png b/themes/everforest/plymouth/throbber-15.png new file mode 100644 index 0000000..4280701 Binary files /dev/null and b/themes/everforest/plymouth/throbber-15.png differ diff --git a/themes/everforest/plymouth/throbber-16.png b/themes/everforest/plymouth/throbber-16.png new file mode 100644 index 0000000..e74ad0b Binary files /dev/null and b/themes/everforest/plymouth/throbber-16.png differ diff --git a/themes/everforest/plymouth/throbber-17.png b/themes/everforest/plymouth/throbber-17.png new file mode 100644 index 0000000..2d1cf09 Binary files /dev/null and b/themes/everforest/plymouth/throbber-17.png differ diff --git a/themes/everforest/plymouth/throbber-18.png b/themes/everforest/plymouth/throbber-18.png new file mode 100644 index 0000000..20c2be9 Binary files /dev/null and b/themes/everforest/plymouth/throbber-18.png differ diff --git a/themes/everforest/plymouth/throbber-19.png b/themes/everforest/plymouth/throbber-19.png new file mode 100644 index 0000000..08d152a Binary files /dev/null and b/themes/everforest/plymouth/throbber-19.png differ diff --git a/themes/everforest/plymouth/throbber-20.png b/themes/everforest/plymouth/throbber-20.png new file mode 100644 index 0000000..79f090b Binary files /dev/null and b/themes/everforest/plymouth/throbber-20.png differ diff --git a/themes/everforest/plymouth/throbber-21.png b/themes/everforest/plymouth/throbber-21.png new file mode 100644 index 0000000..11b785c Binary files /dev/null and b/themes/everforest/plymouth/throbber-21.png differ diff --git a/themes/everforest/plymouth/throbber-22.png b/themes/everforest/plymouth/throbber-22.png new file mode 100644 index 0000000..5e1f7e7 Binary files /dev/null and b/themes/everforest/plymouth/throbber-22.png differ diff --git a/themes/everforest/plymouth/throbber-23.png b/themes/everforest/plymouth/throbber-23.png new file mode 100644 index 0000000..f1d05e4 Binary files /dev/null and b/themes/everforest/plymouth/throbber-23.png differ diff --git a/themes/everforest/plymouth/throbber-24.png b/themes/everforest/plymouth/throbber-24.png new file mode 100644 index 0000000..9efa0d5 Binary files /dev/null and b/themes/everforest/plymouth/throbber-24.png differ diff --git a/themes/everforest/plymouth/throbber-25.png b/themes/everforest/plymouth/throbber-25.png new file mode 100644 index 0000000..04e9d06 Binary files /dev/null and b/themes/everforest/plymouth/throbber-25.png differ diff --git a/themes/everforest/plymouth/throbber-26.png b/themes/everforest/plymouth/throbber-26.png new file mode 100644 index 0000000..e26b2a6 Binary files /dev/null and b/themes/everforest/plymouth/throbber-26.png differ diff --git a/themes/everforest/plymouth/throbber-27.png b/themes/everforest/plymouth/throbber-27.png new file mode 100644 index 0000000..af869ea Binary files /dev/null and b/themes/everforest/plymouth/throbber-27.png differ diff --git a/themes/everforest/plymouth/throbber-28.png b/themes/everforest/plymouth/throbber-28.png new file mode 100644 index 0000000..c6cb1f6 Binary files /dev/null and b/themes/everforest/plymouth/throbber-28.png differ diff --git a/themes/everforest/plymouth/throbber-29.png b/themes/everforest/plymouth/throbber-29.png new file mode 100644 index 0000000..bbe9b3d Binary files /dev/null and b/themes/everforest/plymouth/throbber-29.png differ diff --git a/themes/everforest/plymouth/throbber-30.png b/themes/everforest/plymouth/throbber-30.png new file mode 100644 index 0000000..3d6b32a Binary files /dev/null and b/themes/everforest/plymouth/throbber-30.png differ diff --git a/themes/gruvbox/plymouth/bullet.png b/themes/gruvbox/plymouth/bullet.png new file mode 100644 index 0000000..8dc004f Binary files /dev/null and b/themes/gruvbox/plymouth/bullet.png differ diff --git a/themes/gruvbox/plymouth/entry.png b/themes/gruvbox/plymouth/entry.png new file mode 100644 index 0000000..48d9331 Binary files /dev/null and b/themes/gruvbox/plymouth/entry.png differ diff --git a/themes/gruvbox/plymouth/lock.png b/themes/gruvbox/plymouth/lock.png new file mode 100644 index 0000000..c62bdec Binary files /dev/null and b/themes/gruvbox/plymouth/lock.png differ diff --git a/themes/gruvbox/plymouth/logo.png b/themes/gruvbox/plymouth/logo.png new file mode 100644 index 0000000..ed60b89 Binary files /dev/null and b/themes/gruvbox/plymouth/logo.png differ diff --git a/themes/gruvbox/plymouth/omarchy.plymouth b/themes/gruvbox/plymouth/omarchy.plymouth new file mode 100644 index 0000000..df907b6 --- /dev/null +++ b/themes/gruvbox/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x282828 + + diff --git a/themes/gruvbox/plymouth/omarchy.script b/themes/gruvbox/plymouth/omarchy.script new file mode 100644 index 0000000..aa6fb9c --- /dev/null +++ b/themes/gruvbox/plymouth/omarchy.script @@ -0,0 +1,237 @@ +# Omarchy Plymouth Theme Script + +Window.SetBackgroundTopColor(0.157, 0.157, 0.157); +Window.SetBackgroundBottomColor(0.157, 0.157, 0.157); + +logo.image = Image("logo.png"); +logo.sprite = Sprite(logo.image); +logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2); +logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2); +logo.sprite.SetOpacity (1); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + + entry.sprite = Sprite(entry.image); + entry.x = Window.GetX() + Window.GetWidth()/2 - entry.image.GetWidth() / 2; + entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40; + entry.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- Progress Bar -------------------------------- + +progress_box.image = Image("progress_box.png"); +progress_box.sprite = Sprite(progress_box.image); + +progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; +progress_box.y = Window.GetY() + Window.GetHeight() * 0.75 - progress_box.image.GetHeight() / 2; +progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); +progress_box.sprite.SetOpacity(0); + +progress_bar.original_image = Image("progress_bar.png"); +progress_bar.sprite = Sprite(); + +progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; +progress_bar.y = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2; +progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); +progress_bar.sprite.SetOpacity(0); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress)) + { + progress_bar.image = progress_bar.original_image.Scale(progress_bar.original_image.GetWidth() * progress, progress_bar.original_image.GetHeight()); + progress_bar.sprite.SetImage (progress_bar.image); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +Plymouth.SetBootProgressFunction(progress_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + logo.sprite.SetOpacity (1); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(10, 10, 10000); + +fun display_message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +fun hide_message_callback (text) +{ + message_sprite.SetOpacity(0); +} + +Plymouth.SetDisplayMessageFunction (display_message_callback); +Plymouth.SetHideMessageFunction (hide_message_callback); diff --git a/themes/gruvbox/plymouth/progress_bar.png b/themes/gruvbox/plymouth/progress_bar.png new file mode 100644 index 0000000..43f3d20 Binary files /dev/null and b/themes/gruvbox/plymouth/progress_bar.png differ diff --git a/themes/gruvbox/plymouth/progress_box.png b/themes/gruvbox/plymouth/progress_box.png new file mode 100644 index 0000000..8e31446 Binary files /dev/null and b/themes/gruvbox/plymouth/progress_box.png differ diff --git a/themes/gruvbox/plymouth/throbber-01.png b/themes/gruvbox/plymouth/throbber-01.png new file mode 100644 index 0000000..c1bc755 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-01.png differ diff --git a/themes/gruvbox/plymouth/throbber-02.png b/themes/gruvbox/plymouth/throbber-02.png new file mode 100644 index 0000000..aaf55e6 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-02.png differ diff --git a/themes/gruvbox/plymouth/throbber-03.png b/themes/gruvbox/plymouth/throbber-03.png new file mode 100644 index 0000000..83733f1 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-03.png differ diff --git a/themes/gruvbox/plymouth/throbber-04.png b/themes/gruvbox/plymouth/throbber-04.png new file mode 100644 index 0000000..a0ec030 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-04.png differ diff --git a/themes/gruvbox/plymouth/throbber-05.png b/themes/gruvbox/plymouth/throbber-05.png new file mode 100644 index 0000000..6bae626 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-05.png differ diff --git a/themes/gruvbox/plymouth/throbber-06.png b/themes/gruvbox/plymouth/throbber-06.png new file mode 100644 index 0000000..3b6df47 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-06.png differ diff --git a/themes/gruvbox/plymouth/throbber-07.png b/themes/gruvbox/plymouth/throbber-07.png new file mode 100644 index 0000000..4096f3d Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-07.png differ diff --git a/themes/gruvbox/plymouth/throbber-08.png b/themes/gruvbox/plymouth/throbber-08.png new file mode 100644 index 0000000..e116845 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-08.png differ diff --git a/themes/gruvbox/plymouth/throbber-09.png b/themes/gruvbox/plymouth/throbber-09.png new file mode 100644 index 0000000..4a57250 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-09.png differ diff --git a/themes/gruvbox/plymouth/throbber-10.png b/themes/gruvbox/plymouth/throbber-10.png new file mode 100644 index 0000000..b3ad0cf Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-10.png differ diff --git a/themes/gruvbox/plymouth/throbber-11.png b/themes/gruvbox/plymouth/throbber-11.png new file mode 100644 index 0000000..2066b21 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-11.png differ diff --git a/themes/gruvbox/plymouth/throbber-12.png b/themes/gruvbox/plymouth/throbber-12.png new file mode 100644 index 0000000..345df54 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-12.png differ diff --git a/themes/gruvbox/plymouth/throbber-13.png b/themes/gruvbox/plymouth/throbber-13.png new file mode 100644 index 0000000..d015750 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-13.png differ diff --git a/themes/gruvbox/plymouth/throbber-14.png b/themes/gruvbox/plymouth/throbber-14.png new file mode 100644 index 0000000..970ea4c Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-14.png differ diff --git a/themes/gruvbox/plymouth/throbber-15.png b/themes/gruvbox/plymouth/throbber-15.png new file mode 100644 index 0000000..cde2044 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-15.png differ diff --git a/themes/gruvbox/plymouth/throbber-16.png b/themes/gruvbox/plymouth/throbber-16.png new file mode 100644 index 0000000..9165657 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-16.png differ diff --git a/themes/gruvbox/plymouth/throbber-17.png b/themes/gruvbox/plymouth/throbber-17.png new file mode 100644 index 0000000..9c617e3 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-17.png differ diff --git a/themes/gruvbox/plymouth/throbber-18.png b/themes/gruvbox/plymouth/throbber-18.png new file mode 100644 index 0000000..8647628 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-18.png differ diff --git a/themes/gruvbox/plymouth/throbber-19.png b/themes/gruvbox/plymouth/throbber-19.png new file mode 100644 index 0000000..b2f1dd5 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-19.png differ diff --git a/themes/gruvbox/plymouth/throbber-20.png b/themes/gruvbox/plymouth/throbber-20.png new file mode 100644 index 0000000..ec8f6f2 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-20.png differ diff --git a/themes/gruvbox/plymouth/throbber-21.png b/themes/gruvbox/plymouth/throbber-21.png new file mode 100644 index 0000000..bc76744 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-21.png differ diff --git a/themes/gruvbox/plymouth/throbber-22.png b/themes/gruvbox/plymouth/throbber-22.png new file mode 100644 index 0000000..2d21be3 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-22.png differ diff --git a/themes/gruvbox/plymouth/throbber-23.png b/themes/gruvbox/plymouth/throbber-23.png new file mode 100644 index 0000000..ef91301 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-23.png differ diff --git a/themes/gruvbox/plymouth/throbber-24.png b/themes/gruvbox/plymouth/throbber-24.png new file mode 100644 index 0000000..8a7966f Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-24.png differ diff --git a/themes/gruvbox/plymouth/throbber-25.png b/themes/gruvbox/plymouth/throbber-25.png new file mode 100644 index 0000000..d4373fa Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-25.png differ diff --git a/themes/gruvbox/plymouth/throbber-26.png b/themes/gruvbox/plymouth/throbber-26.png new file mode 100644 index 0000000..7d13099 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-26.png differ diff --git a/themes/gruvbox/plymouth/throbber-27.png b/themes/gruvbox/plymouth/throbber-27.png new file mode 100644 index 0000000..2507500 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-27.png differ diff --git a/themes/gruvbox/plymouth/throbber-28.png b/themes/gruvbox/plymouth/throbber-28.png new file mode 100644 index 0000000..fe9fe65 Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-28.png differ diff --git a/themes/gruvbox/plymouth/throbber-29.png b/themes/gruvbox/plymouth/throbber-29.png new file mode 100644 index 0000000..b9ceadc Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-29.png differ diff --git a/themes/gruvbox/plymouth/throbber-30.png b/themes/gruvbox/plymouth/throbber-30.png new file mode 100644 index 0000000..c29e5ac Binary files /dev/null and b/themes/gruvbox/plymouth/throbber-30.png differ diff --git a/themes/kanagawa/plymouth/bullet.png b/themes/kanagawa/plymouth/bullet.png new file mode 100644 index 0000000..29f49d0 Binary files /dev/null and b/themes/kanagawa/plymouth/bullet.png differ diff --git a/themes/kanagawa/plymouth/entry.png b/themes/kanagawa/plymouth/entry.png new file mode 100644 index 0000000..44c8539 Binary files /dev/null and b/themes/kanagawa/plymouth/entry.png differ diff --git a/themes/kanagawa/plymouth/lock.png b/themes/kanagawa/plymouth/lock.png new file mode 100644 index 0000000..b682fd5 Binary files /dev/null and b/themes/kanagawa/plymouth/lock.png differ diff --git a/themes/kanagawa/plymouth/logo.png b/themes/kanagawa/plymouth/logo.png new file mode 100644 index 0000000..09cd61b Binary files /dev/null and b/themes/kanagawa/plymouth/logo.png differ diff --git a/themes/kanagawa/plymouth/omarchy.plymouth b/themes/kanagawa/plymouth/omarchy.plymouth new file mode 100644 index 0000000..1b94e8a --- /dev/null +++ b/themes/kanagawa/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x1f1f28 + + diff --git a/themes/kanagawa/plymouth/omarchy.script b/themes/kanagawa/plymouth/omarchy.script new file mode 100644 index 0000000..d66d761 --- /dev/null +++ b/themes/kanagawa/plymouth/omarchy.script @@ -0,0 +1,237 @@ +# Omarchy Plymouth Theme Script + +Window.SetBackgroundTopColor(0.122, 0.122, 0.157); +Window.SetBackgroundBottomColor(0.122, 0.122, 0.157); + +logo.image = Image("logo.png"); +logo.sprite = Sprite(logo.image); +logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2); +logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2); +logo.sprite.SetOpacity (1); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + + entry.sprite = Sprite(entry.image); + entry.x = Window.GetX() + Window.GetWidth()/2 - entry.image.GetWidth() / 2; + entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40; + entry.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- Progress Bar -------------------------------- + +progress_box.image = Image("progress_box.png"); +progress_box.sprite = Sprite(progress_box.image); + +progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; +progress_box.y = Window.GetY() + Window.GetHeight() * 0.75 - progress_box.image.GetHeight() / 2; +progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); +progress_box.sprite.SetOpacity(0); + +progress_bar.original_image = Image("progress_bar.png"); +progress_bar.sprite = Sprite(); + +progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; +progress_bar.y = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2; +progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); +progress_bar.sprite.SetOpacity(0); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress)) + { + progress_bar.image = progress_bar.original_image.Scale(progress_bar.original_image.GetWidth() * progress, progress_bar.original_image.GetHeight()); + progress_bar.sprite.SetImage (progress_bar.image); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +Plymouth.SetBootProgressFunction(progress_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + logo.sprite.SetOpacity (1); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(10, 10, 10000); + +fun display_message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +fun hide_message_callback (text) +{ + message_sprite.SetOpacity(0); +} + +Plymouth.SetDisplayMessageFunction (display_message_callback); +Plymouth.SetHideMessageFunction (hide_message_callback); diff --git a/themes/kanagawa/plymouth/progress_bar.png b/themes/kanagawa/plymouth/progress_bar.png new file mode 100644 index 0000000..22a3508 Binary files /dev/null and b/themes/kanagawa/plymouth/progress_bar.png differ diff --git a/themes/kanagawa/plymouth/progress_box.png b/themes/kanagawa/plymouth/progress_box.png new file mode 100644 index 0000000..2e2d49b Binary files /dev/null and b/themes/kanagawa/plymouth/progress_box.png differ diff --git a/themes/kanagawa/plymouth/throbber-01.png b/themes/kanagawa/plymouth/throbber-01.png new file mode 100644 index 0000000..4799c0d Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-01.png differ diff --git a/themes/kanagawa/plymouth/throbber-02.png b/themes/kanagawa/plymouth/throbber-02.png new file mode 100644 index 0000000..4e6ba0a Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-02.png differ diff --git a/themes/kanagawa/plymouth/throbber-03.png b/themes/kanagawa/plymouth/throbber-03.png new file mode 100644 index 0000000..7bf0de0 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-03.png differ diff --git a/themes/kanagawa/plymouth/throbber-04.png b/themes/kanagawa/plymouth/throbber-04.png new file mode 100644 index 0000000..6c9feed Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-04.png differ diff --git a/themes/kanagawa/plymouth/throbber-05.png b/themes/kanagawa/plymouth/throbber-05.png new file mode 100644 index 0000000..278c6b4 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-05.png differ diff --git a/themes/kanagawa/plymouth/throbber-06.png b/themes/kanagawa/plymouth/throbber-06.png new file mode 100644 index 0000000..2ec7e94 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-06.png differ diff --git a/themes/kanagawa/plymouth/throbber-07.png b/themes/kanagawa/plymouth/throbber-07.png new file mode 100644 index 0000000..cb5f946 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-07.png differ diff --git a/themes/kanagawa/plymouth/throbber-08.png b/themes/kanagawa/plymouth/throbber-08.png new file mode 100644 index 0000000..f4c9cf3 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-08.png differ diff --git a/themes/kanagawa/plymouth/throbber-09.png b/themes/kanagawa/plymouth/throbber-09.png new file mode 100644 index 0000000..579396d Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-09.png differ diff --git a/themes/kanagawa/plymouth/throbber-10.png b/themes/kanagawa/plymouth/throbber-10.png new file mode 100644 index 0000000..04b3d10 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-10.png differ diff --git a/themes/kanagawa/plymouth/throbber-11.png b/themes/kanagawa/plymouth/throbber-11.png new file mode 100644 index 0000000..397e52d Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-11.png differ diff --git a/themes/kanagawa/plymouth/throbber-12.png b/themes/kanagawa/plymouth/throbber-12.png new file mode 100644 index 0000000..8980d82 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-12.png differ diff --git a/themes/kanagawa/plymouth/throbber-13.png b/themes/kanagawa/plymouth/throbber-13.png new file mode 100644 index 0000000..b6942cd Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-13.png differ diff --git a/themes/kanagawa/plymouth/throbber-14.png b/themes/kanagawa/plymouth/throbber-14.png new file mode 100644 index 0000000..2ff020c Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-14.png differ diff --git a/themes/kanagawa/plymouth/throbber-15.png b/themes/kanagawa/plymouth/throbber-15.png new file mode 100644 index 0000000..74ecb6b Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-15.png differ diff --git a/themes/kanagawa/plymouth/throbber-16.png b/themes/kanagawa/plymouth/throbber-16.png new file mode 100644 index 0000000..15ed619 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-16.png differ diff --git a/themes/kanagawa/plymouth/throbber-17.png b/themes/kanagawa/plymouth/throbber-17.png new file mode 100644 index 0000000..025210d Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-17.png differ diff --git a/themes/kanagawa/plymouth/throbber-18.png b/themes/kanagawa/plymouth/throbber-18.png new file mode 100644 index 0000000..663e964 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-18.png differ diff --git a/themes/kanagawa/plymouth/throbber-19.png b/themes/kanagawa/plymouth/throbber-19.png new file mode 100644 index 0000000..d313bfc Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-19.png differ diff --git a/themes/kanagawa/plymouth/throbber-20.png b/themes/kanagawa/plymouth/throbber-20.png new file mode 100644 index 0000000..8c9c6ae Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-20.png differ diff --git a/themes/kanagawa/plymouth/throbber-21.png b/themes/kanagawa/plymouth/throbber-21.png new file mode 100644 index 0000000..211aa09 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-21.png differ diff --git a/themes/kanagawa/plymouth/throbber-22.png b/themes/kanagawa/plymouth/throbber-22.png new file mode 100644 index 0000000..04576cf Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-22.png differ diff --git a/themes/kanagawa/plymouth/throbber-23.png b/themes/kanagawa/plymouth/throbber-23.png new file mode 100644 index 0000000..7736cb9 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-23.png differ diff --git a/themes/kanagawa/plymouth/throbber-24.png b/themes/kanagawa/plymouth/throbber-24.png new file mode 100644 index 0000000..46ac5f5 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-24.png differ diff --git a/themes/kanagawa/plymouth/throbber-25.png b/themes/kanagawa/plymouth/throbber-25.png new file mode 100644 index 0000000..990459d Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-25.png differ diff --git a/themes/kanagawa/plymouth/throbber-26.png b/themes/kanagawa/plymouth/throbber-26.png new file mode 100644 index 0000000..ec53fe5 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-26.png differ diff --git a/themes/kanagawa/plymouth/throbber-27.png b/themes/kanagawa/plymouth/throbber-27.png new file mode 100644 index 0000000..f050150 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-27.png differ diff --git a/themes/kanagawa/plymouth/throbber-28.png b/themes/kanagawa/plymouth/throbber-28.png new file mode 100644 index 0000000..7854d20 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-28.png differ diff --git a/themes/kanagawa/plymouth/throbber-29.png b/themes/kanagawa/plymouth/throbber-29.png new file mode 100644 index 0000000..e35305a Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-29.png differ diff --git a/themes/kanagawa/plymouth/throbber-30.png b/themes/kanagawa/plymouth/throbber-30.png new file mode 100644 index 0000000..4612bd0 Binary files /dev/null and b/themes/kanagawa/plymouth/throbber-30.png differ diff --git a/themes/nord/plymouth/bullet.png b/themes/nord/plymouth/bullet.png new file mode 100644 index 0000000..d5b457c Binary files /dev/null and b/themes/nord/plymouth/bullet.png differ diff --git a/themes/nord/plymouth/entry.png b/themes/nord/plymouth/entry.png new file mode 100644 index 0000000..d091fcb Binary files /dev/null and b/themes/nord/plymouth/entry.png differ diff --git a/themes/nord/plymouth/lock.png b/themes/nord/plymouth/lock.png new file mode 100644 index 0000000..d4df3c6 Binary files /dev/null and b/themes/nord/plymouth/lock.png differ diff --git a/themes/nord/plymouth/logo.png b/themes/nord/plymouth/logo.png new file mode 100644 index 0000000..29b6c3c Binary files /dev/null and b/themes/nord/plymouth/logo.png differ diff --git a/themes/nord/plymouth/omarchy.plymouth b/themes/nord/plymouth/omarchy.plymouth new file mode 100644 index 0000000..54ee5d5 --- /dev/null +++ b/themes/nord/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x2e3440 + + diff --git a/themes/nord/plymouth/omarchy.script b/themes/nord/plymouth/omarchy.script new file mode 100644 index 0000000..e1c1030 --- /dev/null +++ b/themes/nord/plymouth/omarchy.script @@ -0,0 +1,237 @@ +# Omarchy Plymouth Theme Script + +Window.SetBackgroundTopColor(0.180, 0.204, 0.251); +Window.SetBackgroundBottomColor(0.180, 0.204, 0.251); + +logo.image = Image("logo.png"); +logo.sprite = Sprite(logo.image); +logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2); +logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2); +logo.sprite.SetOpacity (1); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + + entry.sprite = Sprite(entry.image); + entry.x = Window.GetX() + Window.GetWidth()/2 - entry.image.GetWidth() / 2; + entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40; + entry.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- Progress Bar -------------------------------- + +progress_box.image = Image("progress_box.png"); +progress_box.sprite = Sprite(progress_box.image); + +progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; +progress_box.y = Window.GetY() + Window.GetHeight() * 0.75 - progress_box.image.GetHeight() / 2; +progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); +progress_box.sprite.SetOpacity(0); + +progress_bar.original_image = Image("progress_bar.png"); +progress_bar.sprite = Sprite(); + +progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; +progress_bar.y = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2; +progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); +progress_bar.sprite.SetOpacity(0); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress)) + { + progress_bar.image = progress_bar.original_image.Scale(progress_bar.original_image.GetWidth() * progress, progress_bar.original_image.GetHeight()); + progress_bar.sprite.SetImage (progress_bar.image); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +Plymouth.SetBootProgressFunction(progress_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + logo.sprite.SetOpacity (1); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(10, 10, 10000); + +fun display_message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +fun hide_message_callback (text) +{ + message_sprite.SetOpacity(0); +} + +Plymouth.SetDisplayMessageFunction (display_message_callback); +Plymouth.SetHideMessageFunction (hide_message_callback); diff --git a/themes/nord/plymouth/progress_bar.png b/themes/nord/plymouth/progress_bar.png new file mode 100644 index 0000000..81e7764 Binary files /dev/null and b/themes/nord/plymouth/progress_bar.png differ diff --git a/themes/nord/plymouth/progress_box.png b/themes/nord/plymouth/progress_box.png new file mode 100644 index 0000000..da894d8 Binary files /dev/null and b/themes/nord/plymouth/progress_box.png differ diff --git a/themes/nord/plymouth/throbber-01.png b/themes/nord/plymouth/throbber-01.png new file mode 100644 index 0000000..a6a867c Binary files /dev/null and b/themes/nord/plymouth/throbber-01.png differ diff --git a/themes/nord/plymouth/throbber-02.png b/themes/nord/plymouth/throbber-02.png new file mode 100644 index 0000000..a18b5aa Binary files /dev/null and b/themes/nord/plymouth/throbber-02.png differ diff --git a/themes/nord/plymouth/throbber-03.png b/themes/nord/plymouth/throbber-03.png new file mode 100644 index 0000000..0c06697 Binary files /dev/null and b/themes/nord/plymouth/throbber-03.png differ diff --git a/themes/nord/plymouth/throbber-04.png b/themes/nord/plymouth/throbber-04.png new file mode 100644 index 0000000..8e72cb2 Binary files /dev/null and b/themes/nord/plymouth/throbber-04.png differ diff --git a/themes/nord/plymouth/throbber-05.png b/themes/nord/plymouth/throbber-05.png new file mode 100644 index 0000000..487f218 Binary files /dev/null and b/themes/nord/plymouth/throbber-05.png differ diff --git a/themes/nord/plymouth/throbber-06.png b/themes/nord/plymouth/throbber-06.png new file mode 100644 index 0000000..87bf973 Binary files /dev/null and b/themes/nord/plymouth/throbber-06.png differ diff --git a/themes/nord/plymouth/throbber-07.png b/themes/nord/plymouth/throbber-07.png new file mode 100644 index 0000000..9ed61bb Binary files /dev/null and b/themes/nord/plymouth/throbber-07.png differ diff --git a/themes/nord/plymouth/throbber-08.png b/themes/nord/plymouth/throbber-08.png new file mode 100644 index 0000000..75fe31c Binary files /dev/null and b/themes/nord/plymouth/throbber-08.png differ diff --git a/themes/nord/plymouth/throbber-09.png b/themes/nord/plymouth/throbber-09.png new file mode 100644 index 0000000..7cf2aa1 Binary files /dev/null and b/themes/nord/plymouth/throbber-09.png differ diff --git a/themes/nord/plymouth/throbber-10.png b/themes/nord/plymouth/throbber-10.png new file mode 100644 index 0000000..1c6bac9 Binary files /dev/null and b/themes/nord/plymouth/throbber-10.png differ diff --git a/themes/nord/plymouth/throbber-11.png b/themes/nord/plymouth/throbber-11.png new file mode 100644 index 0000000..7d64503 Binary files /dev/null and b/themes/nord/plymouth/throbber-11.png differ diff --git a/themes/nord/plymouth/throbber-12.png b/themes/nord/plymouth/throbber-12.png new file mode 100644 index 0000000..bf670a0 Binary files /dev/null and b/themes/nord/plymouth/throbber-12.png differ diff --git a/themes/nord/plymouth/throbber-13.png b/themes/nord/plymouth/throbber-13.png new file mode 100644 index 0000000..5a28e23 Binary files /dev/null and b/themes/nord/plymouth/throbber-13.png differ diff --git a/themes/nord/plymouth/throbber-14.png b/themes/nord/plymouth/throbber-14.png new file mode 100644 index 0000000..fe83ea8 Binary files /dev/null and b/themes/nord/plymouth/throbber-14.png differ diff --git a/themes/nord/plymouth/throbber-15.png b/themes/nord/plymouth/throbber-15.png new file mode 100644 index 0000000..32bb9f8 Binary files /dev/null and b/themes/nord/plymouth/throbber-15.png differ diff --git a/themes/nord/plymouth/throbber-16.png b/themes/nord/plymouth/throbber-16.png new file mode 100644 index 0000000..3d91648 Binary files /dev/null and b/themes/nord/plymouth/throbber-16.png differ diff --git a/themes/nord/plymouth/throbber-17.png b/themes/nord/plymouth/throbber-17.png new file mode 100644 index 0000000..76d709e Binary files /dev/null and b/themes/nord/plymouth/throbber-17.png differ diff --git a/themes/nord/plymouth/throbber-18.png b/themes/nord/plymouth/throbber-18.png new file mode 100644 index 0000000..86f8346 Binary files /dev/null and b/themes/nord/plymouth/throbber-18.png differ diff --git a/themes/nord/plymouth/throbber-19.png b/themes/nord/plymouth/throbber-19.png new file mode 100644 index 0000000..4937f9b Binary files /dev/null and b/themes/nord/plymouth/throbber-19.png differ diff --git a/themes/nord/plymouth/throbber-20.png b/themes/nord/plymouth/throbber-20.png new file mode 100644 index 0000000..7949dec Binary files /dev/null and b/themes/nord/plymouth/throbber-20.png differ diff --git a/themes/nord/plymouth/throbber-21.png b/themes/nord/plymouth/throbber-21.png new file mode 100644 index 0000000..c6f56c7 Binary files /dev/null and b/themes/nord/plymouth/throbber-21.png differ diff --git a/themes/nord/plymouth/throbber-22.png b/themes/nord/plymouth/throbber-22.png new file mode 100644 index 0000000..196e885 Binary files /dev/null and b/themes/nord/plymouth/throbber-22.png differ diff --git a/themes/nord/plymouth/throbber-23.png b/themes/nord/plymouth/throbber-23.png new file mode 100644 index 0000000..2465d4e Binary files /dev/null and b/themes/nord/plymouth/throbber-23.png differ diff --git a/themes/nord/plymouth/throbber-24.png b/themes/nord/plymouth/throbber-24.png new file mode 100644 index 0000000..40bdf98 Binary files /dev/null and b/themes/nord/plymouth/throbber-24.png differ diff --git a/themes/nord/plymouth/throbber-25.png b/themes/nord/plymouth/throbber-25.png new file mode 100644 index 0000000..037453a Binary files /dev/null and b/themes/nord/plymouth/throbber-25.png differ diff --git a/themes/nord/plymouth/throbber-26.png b/themes/nord/plymouth/throbber-26.png new file mode 100644 index 0000000..8757e00 Binary files /dev/null and b/themes/nord/plymouth/throbber-26.png differ diff --git a/themes/nord/plymouth/throbber-27.png b/themes/nord/plymouth/throbber-27.png new file mode 100644 index 0000000..150a9e2 Binary files /dev/null and b/themes/nord/plymouth/throbber-27.png differ diff --git a/themes/nord/plymouth/throbber-28.png b/themes/nord/plymouth/throbber-28.png new file mode 100644 index 0000000..88ced45 Binary files /dev/null and b/themes/nord/plymouth/throbber-28.png differ diff --git a/themes/nord/plymouth/throbber-29.png b/themes/nord/plymouth/throbber-29.png new file mode 100644 index 0000000..82017de Binary files /dev/null and b/themes/nord/plymouth/throbber-29.png differ diff --git a/themes/nord/plymouth/throbber-30.png b/themes/nord/plymouth/throbber-30.png new file mode 100644 index 0000000..fd2fc25 Binary files /dev/null and b/themes/nord/plymouth/throbber-30.png differ diff --git a/themes/tokyo-night/plymouth/bullet.png b/themes/tokyo-night/plymouth/bullet.png new file mode 100644 index 0000000..0b3ffa7 Binary files /dev/null and b/themes/tokyo-night/plymouth/bullet.png differ diff --git a/themes/tokyo-night/plymouth/entry.png b/themes/tokyo-night/plymouth/entry.png new file mode 100644 index 0000000..5c78917 Binary files /dev/null and b/themes/tokyo-night/plymouth/entry.png differ diff --git a/themes/tokyo-night/plymouth/lock.png b/themes/tokyo-night/plymouth/lock.png new file mode 100644 index 0000000..06bb109 Binary files /dev/null and b/themes/tokyo-night/plymouth/lock.png differ diff --git a/themes/tokyo-night/plymouth/logo.png b/themes/tokyo-night/plymouth/logo.png new file mode 100644 index 0000000..e4b2526 Binary files /dev/null and b/themes/tokyo-night/plymouth/logo.png differ diff --git a/themes/tokyo-night/plymouth/omarchy.plymouth b/themes/tokyo-night/plymouth/omarchy.plymouth new file mode 100644 index 0000000..b824473 --- /dev/null +++ b/themes/tokyo-night/plymouth/omarchy.plymouth @@ -0,0 +1,11 @@ +[Plymouth Theme] +Name=Omarchy +Description=Script example plugin. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/omarchy +ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script +ConsoleLogBackgroundColor=0x1a1b26 + + diff --git a/themes/tokyo-night/plymouth/omarchy.script b/themes/tokyo-night/plymouth/omarchy.script new file mode 100644 index 0000000..8f4998f --- /dev/null +++ b/themes/tokyo-night/plymouth/omarchy.script @@ -0,0 +1,237 @@ +# Omarchy Plymouth Theme Script + +Window.SetBackgroundTopColor(0.101, 0.105, 0.149); +Window.SetBackgroundBottomColor(0.101, 0.105, 0.149); + +logo.image = Image("logo.png"); +logo.sprite = Sprite(logo.image); +logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2); +logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2); +logo.sprite.SetOpacity (1); + +fun refresh_callback () + { + # Always animate spinner - it will be invisible when not needed + if (global.spinner_sprite) + { + global.spinner_frame++; + frame_index = Math.Int(global.spinner_frame / 3) % global.spinner_frame_count; + global.spinner_sprite.SetImage(global.spinner_images[frame_index]); + } + } + +Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.lock; + local.entry; + + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + + entry.sprite = Sprite(entry.image); + entry.x = Window.GetX() + Window.GetWidth()/2 - entry.image.GetWidth() / 2; + entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40; + entry.z = 10001; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + lock.sprite = Sprite(lock.image); + lock.x = entry.x - lock.image.GetWidth() - 10; + lock.y = logo.sprite.GetY() + logo.image.GetHeight() + 40 + entry.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = 10001; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + global.dialog.lock.sprite.SetOpacity (opacity); + global.dialog.entry.sprite.SetOpacity (opacity); + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + spinner_show(); # Show spinner when no password dialog + } + +fun display_password_callback (prompt, bullets) + { + global.status = "password"; + + # Always hide spinner when showing password dialog + spinner_hide(); + + # Setup dialog if it doesn't exist + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + + # Clear all bullets first (user might hit backspace) + for (index = 0; global.dialog.bullet[index]; index++) + { + global.dialog.bullet[index].sprite.SetOpacity(0); + } + + # Create and show bullets for current password + for (index = 0; index < bullets; index++) + { + if (!global.dialog.bullet[index]) + { + global.dialog.bullet[index].sprite = Sprite(global.dialog.bullet_image); + global.dialog.bullet[index].x = global.dialog.entry.x + 10 + index * (global.dialog.bullet_image.GetWidth() + 5); + global.dialog.bullet[index].y = global.dialog.entry.y + global.dialog.entry.image.GetHeight() / 2 - global.dialog.bullet_image.GetHeight() / 2; + global.dialog.bullet[index].z = global.dialog.entry.z + 1; + global.dialog.bullet[index].sprite.SetPosition(global.dialog.bullet[index].x, global.dialog.bullet[index].y, global.dialog.bullet[index].z); + } + global.dialog.bullet[index].sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Spinner -------------------------------- + +global.spinner_sprite = NULL; +global.spinner_frame = 0; +global.spinner_frame_count = 30; +global.spinner_visible = false; +global.spinner_images = []; + +fun spinner_setup() + { + if (!global.spinner_sprite) + { + # Load all throbber frames + for (i = 1; i <= global.spinner_frame_count; i++) + { + if (i < 10) + filename = "throbber-000" + i + ".png"; + else + filename = "throbber-00" + i + ".png"; + global.spinner_images[i-1] = Image(filename); + } + + # Create spinner sprite + global.spinner_sprite = Sprite(global.spinner_images[0]); + global.spinner_x = Window.GetX() + Window.GetWidth() / 2 - global.spinner_images[0].GetWidth() / 2; + global.spinner_y = Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2 + logo.image.GetHeight() + 40; + global.spinner_sprite.SetPosition(global.spinner_x, global.spinner_y, 10002); + global.spinner_sprite.SetOpacity(0); + } + } + +fun spinner_show() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(1); + global.spinner_visible = true; + } + } + +fun spinner_hide() + { + if (global.spinner_sprite) + { + global.spinner_sprite.SetOpacity(0); + global.spinner_visible = false; + } + } + +# Initialize spinner +spinner_setup(); +#----------------------------------------- Progress Bar -------------------------------- + +progress_box.image = Image("progress_box.png"); +progress_box.sprite = Sprite(progress_box.image); + +progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; +progress_box.y = Window.GetY() + Window.GetHeight() * 0.75 - progress_box.image.GetHeight() / 2; +progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); +progress_box.sprite.SetOpacity(0); + +progress_bar.original_image = Image("progress_bar.png"); +progress_bar.sprite = Sprite(); + +progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; +progress_bar.y = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2; +progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); +progress_bar.sprite.SetOpacity(0); + +global.progress_visible = false; +fun progress_callback (duration, progress) + { + if (progress > 0.01 && Plymouth.GetMode() != "shutdown" && Plymouth.GetMode() != "reboot" && Plymouth.GetMode() != "suspend") + { + if (!global.progress_visible) + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + global.progress_visible = true; + } + + if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress)) + { + progress_bar.image = progress_bar.original_image.Scale(progress_bar.original_image.GetWidth() * progress, progress_bar.original_image.GetHeight()); + progress_bar.sprite.SetImage (progress_bar.image); + } + } + else + { + # Hide progress bar when progress is 0 + if (global.progress_visible) + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + global.progress_visible = false; + } + } + } + +Plymouth.SetBootProgressFunction(progress_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + logo.sprite.SetOpacity (1); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(10, 10, 10000); + +fun display_message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +fun hide_message_callback (text) +{ + message_sprite.SetOpacity(0); +} + +Plymouth.SetDisplayMessageFunction (display_message_callback); +Plymouth.SetHideMessageFunction (hide_message_callback); diff --git a/themes/tokyo-night/plymouth/progress_bar.png b/themes/tokyo-night/plymouth/progress_bar.png new file mode 100644 index 0000000..dbb9fd7 Binary files /dev/null and b/themes/tokyo-night/plymouth/progress_bar.png differ diff --git a/themes/tokyo-night/plymouth/progress_box.png b/themes/tokyo-night/plymouth/progress_box.png new file mode 100644 index 0000000..6a263f2 Binary files /dev/null and b/themes/tokyo-night/plymouth/progress_box.png differ diff --git a/themes/tokyo-night/plymouth/throbber-01.png b/themes/tokyo-night/plymouth/throbber-01.png new file mode 100644 index 0000000..85367eb Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-01.png differ diff --git a/themes/tokyo-night/plymouth/throbber-02.png b/themes/tokyo-night/plymouth/throbber-02.png new file mode 100644 index 0000000..6eae3e6 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-02.png differ diff --git a/themes/tokyo-night/plymouth/throbber-03.png b/themes/tokyo-night/plymouth/throbber-03.png new file mode 100644 index 0000000..2e28ef7 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-03.png differ diff --git a/themes/tokyo-night/plymouth/throbber-04.png b/themes/tokyo-night/plymouth/throbber-04.png new file mode 100644 index 0000000..cd32248 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-04.png differ diff --git a/themes/tokyo-night/plymouth/throbber-05.png b/themes/tokyo-night/plymouth/throbber-05.png new file mode 100644 index 0000000..f4bfb21 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-05.png differ diff --git a/themes/tokyo-night/plymouth/throbber-06.png b/themes/tokyo-night/plymouth/throbber-06.png new file mode 100644 index 0000000..5b1a5cd Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-06.png differ diff --git a/themes/tokyo-night/plymouth/throbber-07.png b/themes/tokyo-night/plymouth/throbber-07.png new file mode 100644 index 0000000..2c93f47 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-07.png differ diff --git a/themes/tokyo-night/plymouth/throbber-08.png b/themes/tokyo-night/plymouth/throbber-08.png new file mode 100644 index 0000000..10cc347 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-08.png differ diff --git a/themes/tokyo-night/plymouth/throbber-09.png b/themes/tokyo-night/plymouth/throbber-09.png new file mode 100644 index 0000000..c511351 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-09.png differ diff --git a/themes/tokyo-night/plymouth/throbber-10.png b/themes/tokyo-night/plymouth/throbber-10.png new file mode 100644 index 0000000..ccd1b32 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-10.png differ diff --git a/themes/tokyo-night/plymouth/throbber-11.png b/themes/tokyo-night/plymouth/throbber-11.png new file mode 100644 index 0000000..dc82348 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-11.png differ diff --git a/themes/tokyo-night/plymouth/throbber-12.png b/themes/tokyo-night/plymouth/throbber-12.png new file mode 100644 index 0000000..76565d5 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-12.png differ diff --git a/themes/tokyo-night/plymouth/throbber-13.png b/themes/tokyo-night/plymouth/throbber-13.png new file mode 100644 index 0000000..da5a995 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-13.png differ diff --git a/themes/tokyo-night/plymouth/throbber-14.png b/themes/tokyo-night/plymouth/throbber-14.png new file mode 100644 index 0000000..b3097d7 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-14.png differ diff --git a/themes/tokyo-night/plymouth/throbber-15.png b/themes/tokyo-night/plymouth/throbber-15.png new file mode 100644 index 0000000..a3a5e04 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-15.png differ diff --git a/themes/tokyo-night/plymouth/throbber-16.png b/themes/tokyo-night/plymouth/throbber-16.png new file mode 100644 index 0000000..32a5fd5 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-16.png differ diff --git a/themes/tokyo-night/plymouth/throbber-17.png b/themes/tokyo-night/plymouth/throbber-17.png new file mode 100644 index 0000000..e726b5c Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-17.png differ diff --git a/themes/tokyo-night/plymouth/throbber-18.png b/themes/tokyo-night/plymouth/throbber-18.png new file mode 100644 index 0000000..19d0242 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-18.png differ diff --git a/themes/tokyo-night/plymouth/throbber-19.png b/themes/tokyo-night/plymouth/throbber-19.png new file mode 100644 index 0000000..86ef4f7 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-19.png differ diff --git a/themes/tokyo-night/plymouth/throbber-20.png b/themes/tokyo-night/plymouth/throbber-20.png new file mode 100644 index 0000000..d00033f Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-20.png differ diff --git a/themes/tokyo-night/plymouth/throbber-21.png b/themes/tokyo-night/plymouth/throbber-21.png new file mode 100644 index 0000000..7d8b06b Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-21.png differ diff --git a/themes/tokyo-night/plymouth/throbber-22.png b/themes/tokyo-night/plymouth/throbber-22.png new file mode 100644 index 0000000..a3a1944 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-22.png differ diff --git a/themes/tokyo-night/plymouth/throbber-23.png b/themes/tokyo-night/plymouth/throbber-23.png new file mode 100644 index 0000000..8355e65 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-23.png differ diff --git a/themes/tokyo-night/plymouth/throbber-24.png b/themes/tokyo-night/plymouth/throbber-24.png new file mode 100644 index 0000000..a26816b Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-24.png differ diff --git a/themes/tokyo-night/plymouth/throbber-25.png b/themes/tokyo-night/plymouth/throbber-25.png new file mode 100644 index 0000000..5251b08 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-25.png differ diff --git a/themes/tokyo-night/plymouth/throbber-26.png b/themes/tokyo-night/plymouth/throbber-26.png new file mode 100644 index 0000000..fa79cbc Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-26.png differ diff --git a/themes/tokyo-night/plymouth/throbber-27.png b/themes/tokyo-night/plymouth/throbber-27.png new file mode 100644 index 0000000..1831e15 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-27.png differ diff --git a/themes/tokyo-night/plymouth/throbber-28.png b/themes/tokyo-night/plymouth/throbber-28.png new file mode 100644 index 0000000..91cd396 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-28.png differ diff --git a/themes/tokyo-night/plymouth/throbber-29.png b/themes/tokyo-night/plymouth/throbber-29.png new file mode 100644 index 0000000..00a392b Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-29.png differ diff --git a/themes/tokyo-night/plymouth/throbber-30.png b/themes/tokyo-night/plymouth/throbber-30.png new file mode 100644 index 0000000..688f443 Binary files /dev/null and b/themes/tokyo-night/plymouth/throbber-30.png differ