Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
3.6 kB · 119 lines
Shell
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120#!/bin/bash# prepare-theme.sh — Generate FedAC GRUB theme assets## Creates:# - background.png (1920x1080 dark purple + centered pals logo)# - DejaVuSansBold36.pf2 (large menu font)# - DejaVuSans18.pf2 (subtitle font)# - DejaVuSans10.pf2 (timer font)# - select_c.png, menu_c.png (selection/menu nine-patch slices)## Requirements: ImageMagick (convert), grub2-mkfont# Run from repo root or fedac/grub-theme/
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"PALS_SRC="$SCRIPT_DIR/../plymouth/pals.png"OUT_DIR="$SCRIPT_DIR"
RED='\033[0;31m'GREEN='\033[0;32m'CYAN='\033[0;36m'NC='\033[0m'
echo -e "${CYAN}=== FedAC GRUB Theme Builder ===${NC}"
# ── Check deps ──for cmd in convert grub2-mkfont; do if ! command -v "$cmd" &>/dev/null; then # Try grub-mkfont as fallback if [ "$cmd" = "grub2-mkfont" ] && command -v grub-mkfont &>/dev/null; then MKFONT="grub-mkfont" continue fi echo -e "${RED}Missing: $cmd${NC}" echo "Install: sudo dnf install ImageMagick grub2-tools-minimal" exit 1 fidoneMKFONT="${MKFONT:-grub2-mkfont}"
if [ ! -f "$PALS_SRC" ]; then echo -e "${RED}Missing pals.png at $PALS_SRC${NC}" exit 1fi
# ── 1. Background image (1920x1080 purple + pals centered in upper portion) ──echo -e "${CYAN}[1/4] Creating background...${NC}"
# pals.png is 400x240 — scale to ~600px wide for visibility on 1080pconvert \ -size 1920x1080 "xc:#1a0a2e" \ \( "$PALS_SRC" -resize 600x360 \) \ -gravity North -geometry +0+120 -composite \ "$OUT_DIR/background.png"
echo -e " ${GREEN}background.png (1920x1080)${NC}"
# ── 2. Generate .pf2 fonts ──echo -e "${CYAN}[2/4] Generating fonts...${NC}"
# Find DejaVu Sans BoldFONT_BOLD=""for path in \ /usr/share/fonts/dejavu-sans-fonts/DejaVuSans-Bold.ttf \ /usr/share/fonts/dejavu/DejaVuSans-Bold.ttf \ /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf \ /usr/share/fonts/TTF/DejaVuSans-Bold.ttf; do if [ -f "$path" ]; then FONT_BOLD="$path" break fidone
FONT_REG=""for path in \ /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf \ /usr/share/fonts/dejavu/DejaVuSans.ttf \ /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf \ /usr/share/fonts/TTF/DejaVuSans.ttf; do if [ -f "$path" ]; then FONT_REG="$path" break fidone
if [ -z "$FONT_BOLD" ] || [ -z "$FONT_REG" ]; then echo -e "${RED}DejaVu Sans fonts not found${NC}" echo "Install: sudo dnf install dejavu-sans-fonts" exit 1fi
$MKFONT -s 36 -o "$OUT_DIR/DejaVuSansBold36.pf2" "$FONT_BOLD"echo -e " ${GREEN}DejaVuSansBold36.pf2${NC}"
$MKFONT -s 18 -o "$OUT_DIR/DejaVuSans18.pf2" "$FONT_REG"echo -e " ${GREEN}DejaVuSans18.pf2${NC}"
$MKFONT -s 10 -o "$OUT_DIR/DejaVuSans10.pf2" "$FONT_REG"echo -e " ${GREEN}DejaVuSans10.pf2${NC}"
# ── 3. Selection bar (nine-patch style) ──echo -e "${CYAN}[3/4] Creating selection bar...${NC}"
# Selected item highlight — semi-transparent magenta barconvert -size 10x52 "xc:#8855bb88" "$OUT_DIR/select_c.png"echo -e " ${GREEN}select_c.png${NC}"
# Menu background — very subtle dark overlayconvert -size 10x10 "xc:#1a0a2e00" "$OUT_DIR/menu_c.png"echo -e " ${GREEN}menu_c.png${NC}"
# ── 4. Summary ──echo ""echo -e "${CYAN}[4/4] Theme assets ready:${NC}"ls -la "$OUT_DIR"/*.png "$OUT_DIR"/*.pf2 2>/dev/nullecho ""echo -e "${GREEN}Done!${NC} Theme files are in $OUT_DIR"echo "These will be installed to the USB EFI partition by patch-usb.sh / make-usb.sh"