97 lines
2.9 KiB
Python
97 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Minimal Terminal-Style Boot Logo Generator
|
|
Nur Text, wie in einem echten Terminal
|
|
"""
|
|
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
import os
|
|
|
|
# Terminal-Farbschema
|
|
BG_BLACK = (12, 12, 15)
|
|
TEXT_GREEN = (0, 255, 100)
|
|
TEXT_WHITE = (230, 230, 230)
|
|
TEXT_GRAY = (120, 120, 120)
|
|
TEXT_CYAN = (100, 200, 255)
|
|
|
|
# Bildgröße
|
|
WIDTH = 800
|
|
HEIGHT = 600
|
|
|
|
# Erstelle Bild
|
|
img = Image.new('RGB', (WIDTH, HEIGHT), BG_BLACK)
|
|
draw = ImageDraw.Draw(img)
|
|
|
|
# Versuche Monospace-Font zu laden
|
|
try:
|
|
font_paths = [
|
|
'/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf',
|
|
'/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf',
|
|
'/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf',
|
|
'/usr/share/fonts/truetype/liberation2/LiberationMono-Regular.ttf',
|
|
]
|
|
|
|
font_large = None
|
|
font_medium = None
|
|
font_small = None
|
|
|
|
for font_path in font_paths:
|
|
if os.path.exists(font_path):
|
|
font_large = ImageFont.truetype(font_path, 56)
|
|
font_medium = ImageFont.truetype(font_path, 28)
|
|
font_small = ImageFont.truetype(font_path, 22)
|
|
break
|
|
|
|
if not font_large:
|
|
raise Exception("No font found")
|
|
|
|
except:
|
|
print("Monospace font nicht gefunden, nutze Default-Font")
|
|
font_large = ImageFont.load_default()
|
|
font_medium = ImageFont.load_default()
|
|
font_small = ImageFont.load_default()
|
|
|
|
# Start-Position
|
|
x_offset = 60
|
|
y_offset = 120
|
|
line_height = 40
|
|
|
|
# Terminal-Output simulieren
|
|
lines = [
|
|
("Booting system...", TEXT_GRAY, font_medium),
|
|
("", TEXT_GRAY, font_medium),
|
|
("RDP THIN CLIENT SYSTEM", TEXT_WHITE, font_large),
|
|
("", TEXT_GRAY, font_medium),
|
|
("[ OK ] Remote Desktop Protocol initialized", TEXT_GREEN, font_medium),
|
|
("[ OK ] Graphics subsystem ready", TEXT_GREEN, font_medium),
|
|
("[ OK ] Audio redirection enabled", TEXT_GREEN, font_medium),
|
|
("[ OK ] USB device support active", TEXT_GREEN, font_medium),
|
|
("[ OK ] Network services started", TEXT_GREEN, font_medium),
|
|
("", TEXT_GRAY, font_medium),
|
|
]
|
|
|
|
current_y = y_offset
|
|
for line_text, color, font in lines:
|
|
if line_text: # Leere Zeilen überspringen
|
|
draw.text((x_offset, current_y), line_text, font=font, fill=color)
|
|
# Größere Abstände für Title
|
|
if font == font_large:
|
|
current_y += 80
|
|
else:
|
|
current_y += line_height
|
|
|
|
# Cursor am Ende
|
|
cursor_y = current_y
|
|
draw.rectangle([x_offset, cursor_y, x_offset + 12, cursor_y + 22], fill=TEXT_GREEN)
|
|
|
|
# Footer (rechts neben dem Cursor, zentriert)
|
|
footer_text = "HackerSoft · Hacker-Net Telekommunikation"
|
|
footer_x = x_offset + 20 # 20px rechts vom Cursor
|
|
draw.text((footer_x, cursor_y), footer_text, font=font_small, fill=TEXT_GRAY)
|
|
|
|
# Speichern
|
|
output_path = os.path.join(os.path.dirname(__file__), 'boot-logo.png')
|
|
img.save(output_path, 'PNG')
|
|
print(f"Minimal Terminal Boot-Logo erstellt: {output_path}")
|
|
print(f"Größe: {WIDTH}x{HEIGHT}")
|