Phase 7: rename SkyOS → OrionOS across entire codebase

- Rename all binaries: skywm→orionwm, skydeskbar→oriondeskbar,
  skylauncher→orionlauncher, skyinstall/skyinstall-gui→orioninstall*
- Rename theme directory: themes/SkyOS/ → themes/OrionOS/
- Update all string literals, window titles, menu labels, and comments
- Update ISO build: hostname→orionos, user→orion, all paths/labels
- Add Plymouth boot splash theme (orionos) with Navy+Blue palette
- Update GTK2/GTK3 theme names, wallpaper output name
- Update .gitignore, root Makefile, build-iso.sh for new binary names

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 4.6 committed 2026-07-23 13:42:18 -04:00
1 parent 803ffe991f
commit 61fa1194db
20 files changed
+452 -160

No files matched your search

+3 -3
View File
@@ -2,10 +2,10 @@ CC = gcc
CFLAGS = -O2 -Wall -Wextra $(shell pkg-config --cflags x11 xft fontconfig)
LDFLAGS = $(shell pkg-config --libs x11 xft fontconfig)
all: skyinstall-gui
all: orioninstall-gui
skyinstall-gui: skyinstall-gui.c
orioninstall-gui: orioninstall-gui.c
$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
clean:
rm -f skyinstall-gui
rm -f orioninstall-gui
+292
View File
@@ -0,0 +1,292 @@
#!/usr/bin/env bash
# orioninstall — OrionOS installer (terminal + GUI-backend mode)
#
# Terminal mode: sudo orioninstall
# GUI mode: sudo orioninstall --gui /dev/sdX HOSTNAME USERNAME PASSWORD
# Emits PROGRESS:N:message lines for the GUI to display.
set -euo pipefail
LOGFILE=/tmp/orioninstall.log
exec > >(tee -a "$LOGFILE") 2>&1
# ── mode detection ────────────────────────────────────────────────────
GUI_MODE=0
if [[ "${1:-}" == "--gui" ]]; then
GUI_MODE=1
DISK="${2:?missing disk argument}"
HOSTNAME="${3:?missing hostname}"
USERNAME="${4:?missing username}"
PASSWORD="${5:?missing password}"
shift 5 2>/dev/null || true
fi
# ── output helpers ────────────────────────────────────────────────────
RED='\033[0;31m'; YEL='\033[1;33m'; GRN='\033[0;32m'
BLU='\033[1;34m'; BOLD='\033[1m'; NC='\033[0m'
progress() { # N "message"
if [[ $GUI_MODE -eq 1 ]]; then
echo "PROGRESS:${1}:${2}"
else
echo -e "${BLU}[${1}%] ${2}${NC}"
fi
}
info() {
if [[ $GUI_MODE -eq 1 ]]; then echo ">>> $*";
else echo -e "${BLU}>>> $*${NC}"; fi
}
ok() {
if [[ $GUI_MODE -eq 1 ]]; then echo " ✓ $*";
else echo -e "${GRN} ✓ $*${NC}"; fi
}
warn() {
if [[ $GUI_MODE -eq 1 ]]; then echo " ! $*";
else echo -e "${YEL} ! $*${NC}"; fi
}
die() {
if [[ $GUI_MODE -eq 1 ]]; then echo "ERROR: $*";
else echo -e "${RED}ERROR: $*${NC}"; fi
exit 1
}
[[ $EUID -ne 0 ]] && die "Run with sudo: sudo orioninstall"
# ── terminal mode: interactive prompts ───────────────────────────────
if [[ $GUI_MODE -eq 0 ]]; then
clear
echo -e "${BOLD}"
cat <<'BANNER'
╔════════════════════════════════════════════╗
║ OrionOS Installer ║
╚════════════════════════════════════════════╝
BANNER
echo -e "${NC}"
echo "This will install OrionOS to a disk on this computer."
echo "The target disk will be ERASED."
echo ""
info "Available disks:"
lsblk -d -o NAME,SIZE,MODEL --noheadings | grep -v "^loop" | \
awk '{printf " /dev/%-10s %6s %s\n", $1, $2, $3}'
echo ""
read -rp "$(echo -e "${BOLD}Target disk (e.g. sda, nvme0n1): /dev/${NC}")" DISK_NAME
DISK="/dev/${DISK_NAME}"
[[ -b "$DISK" ]] || die "Not a block device: $DISK"
echo ""
echo -e "${RED}${BOLD}WARNING: ALL DATA ON $DISK WILL BE ERASED!${NC}"
read -rp "Type YES to confirm: " CONFIRM
[[ "$CONFIRM" == "YES" ]] || die "Aborted."
echo ""
read -rp "Hostname [skyos]: " HOSTNAME; HOSTNAME="${HOSTNAME:-skyos}"
read -rp "Username [sky]: " USERNAME; USERNAME="${USERNAME:-sky}"
while true; do
read -rsp "Password for $USERNAME: " PASSWORD; echo
read -rsp "Confirm password: " PASSWORD2; echo
[[ "$PASSWORD" == "$PASSWORD2" ]] && break
warn "Passwords don't match, try again."
done
fi
# ── detect boot mode ──────────────────────────────────────────────────
if [[ -d /sys/firmware/efi ]]; then
BOOT_MODE="uefi"
else
BOOT_MODE="bios"
fi
# ── partition names helper ────────────────────────────────────────────
part_name() { # disk suffix(1 or 2)
local disk="$1" n="$2"
if [[ "$disk" == *nvme* || "$disk" == *mmcblk* ]]; then
echo "${disk}p${n}"
else
echo "${disk}${n}"
fi
}
progress 2 "Detected boot mode: $BOOT_MODE"
info "Installing OrionOS to $DISK (boot: $BOOT_MODE)"
# ── 1. Partition ──────────────────────────────────────────────────────
progress 5 "Partitioning $DISK…"
info "Partitioning $DISK..."
if [[ "$BOOT_MODE" == "uefi" ]]; then
parted -s "$DISK" \
mklabel gpt \
mkpart ESP fat32 1MiB 513MiB \
set 1 esp on \
mkpart root ext4 513MiB 100%
sleep 1; partprobe "$DISK" 2>/dev/null || true; sleep 1
EFI_PART="$(part_name "$DISK" 1)"
ROOT_PART="$(part_name "$DISK" 2)"
else
parted -s "$DISK" \
mklabel msdos \
mkpart primary ext4 1MiB 100% \
set 1 boot on
sleep 1; partprobe "$DISK" 2>/dev/null || true; sleep 1
ROOT_PART="$(part_name "$DISK" 1)"
EFI_PART=""
fi
ok "Partitioned."
# ── 2. Format ─────────────────────────────────────────────────────────
progress 10 "Formatting partitions…"
info "Formatting..."
if [[ "$BOOT_MODE" == "uefi" ]]; then
mkfs.fat -F32 -n SKYEFI "$EFI_PART"
ok "EFI: FAT32 ($EFI_PART)"
fi
mkfs.ext4 -L OrionOS "$ROOT_PART"
ok "Root: ext4 ($ROOT_PART)"
# ── 3. Mount ──────────────────────────────────────────────────────────
progress 14 "Mounting partitions…"
info "Mounting..."
mount "$ROOT_PART" /mnt
if [[ "$BOOT_MODE" == "uefi" ]]; then
mkdir -p /mnt/boot/efi
mount "$EFI_PART" /mnt/boot/efi
fi
ok "Mounted."
# ── 4. Copy live system ───────────────────────────────────────────────
progress 18 "Copying live system (this takes a few minutes)…"
info "Copying live system to disk..."
rsync -ax \
--exclude={/proc,/sys,/dev,/run,/mnt,/media,/tmp,/lost+found} \
/ /mnt/
ok "Files copied."
# ── 5. fstab ─────────────────────────────────────────────────────────
progress 75 "Writing fstab…"
info "Writing fstab..."
mkdir -p /mnt/etc
genfstab -U /mnt > /mnt/etc/fstab
ok "fstab written."
# ── 6. Chroot configuration ───────────────────────────────────────────
progress 80 "Configuring installed system…"
info "Configuring system..."
arch-chroot /mnt /bin/bash -s "$HOSTNAME" "$USERNAME" "$PASSWORD" \
"$BOOT_MODE" "$ROOT_PART" \
<<'CHROOT'
HOSTNAME="$1"; USERNAME="$2"; PASSWORD="$3"
BOOT_MODE="$4"; ROOT_PART="$5"
# Hostname
echo "$HOSTNAME" > /etc/hostname
cat > /etc/hosts <<EOF
127.0.0.1 localhost
::1 localhost
127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}
EOF
# Locale
sed -i 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen 2>/dev/null || true
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
# Timezone
ln -sf /usr/share/zoneinfo/UTC /etc/localtime
hwclock --systohc 2>/dev/null || true
# Remove live-only archiso package to prevent mkinitcpio confusion
pacman -Rns --noconfirm archiso 2>/dev/null || true
# Create user
if ! id "$USERNAME" &>/dev/null; then
useradd -m -G wheel,audio,video,storage,input,network -s /bin/bash "$USERNAME"
fi
echo "${USERNAME}:${PASSWORD}" | chpasswd
echo "root:${PASSWORD}" | chpasswd
# sudoers
echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/wheel
chmod 440 /etc/sudoers.d/wheel
# Remove live autologin (installed system should prompt login)
rm -f /etc/systemd/system/getty@tty1.service.d/autologin.conf
# Auto-startx on tty1
HOME_DIR="/home/$USERNAME"
cat > "$HOME_DIR/.bash_profile" <<'BP'
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
BP
chown "$USERNAME:$USERNAME" "$HOME_DIR/.bash_profile"
# Rebuild initramfs with standard hooks (no archiso hooks on installed system)
cat > /etc/mkinitcpio.conf <<'MKCONF'
MODULES=()
BINARIES=()
FILES=()
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block filesystems fsck)
MKCONF
mkinitcpio -P
# Bootloader
if [[ "$BOOT_MODE" == "uefi" ]]; then
bootctl install 2>/dev/null || true
ROOT_UUID="$(blkid -s UUID -o value "$ROOT_PART")"
mkdir -p /boot/efi/loader/entries
cat > /boot/efi/loader/loader.conf <<'LC'
default skyos.conf
timeout 5
editor no
LC
cat > /boot/efi/loader/entries/skyos.conf <<ENTRY
title OrionOS
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=UUID=${ROOT_UUID} rw quiet loglevel=3
ENTRY
else
# Find the whole disk (strip trailing partition number)
DISK="${ROOT_PART%[0-9]}"
# Handle nvme/mmcblk: strip trailing 'p' + digit
[[ "$DISK" == *p ]] && DISK="${DISK%p}"
grub-install --target=i386-pc "$DISK" || true
grub-mkconfig -o /boot/grub/grub.cfg
fi
systemctl enable NetworkManager 2>/dev/null || true
systemctl enable bluetooth 2>/dev/null || true
echo "Chroot configuration complete."
CHROOT
ok "System configured."
# ── 7. Unmount ────────────────────────────────────────────────────────
progress 97 "Unmounting…"
info "Unmounting..."
sync
[[ "$BOOT_MODE" == "uefi" ]] && umount /mnt/boot/efi 2>/dev/null || true
umount /mnt
ok "Done."
progress 100 "Installation complete!"
if [[ $GUI_MODE -eq 0 ]]; then
echo ""
echo -e "${GRN}${BOLD}"
cat <<'DONE'
╔════════════════════════════════════════════╗
║ OrionOS installed successfully! ║
║ Remove the USB drive and reboot. ║
╚════════════════════════════════════════════╝
DONE
echo -e "${NC}"
echo "Log saved to: $LOGFILE"
echo ""
read -rp "Reboot now? [y/N] " REBOOT
[[ "$REBOOT" =~ ^[Yy]$ ]] && reboot
fi
@@ -1,5 +1,5 @@
/*
* SkyOS GUI Installer — Xlib/Xft wizard
* OrionOS GUI Installer — Xlib/Xft wizard
*
* Steps:
* 0 Welcome
@@ -57,7 +57,7 @@
#define C_TXT_DIM 0x5A7090 /* dim text */
#define C_TXT_INP 0xD8E4F8 /* input text */
#define C_TXT_HDR 0xE8F0FF /* header text */
#define C_TXT_LOGO 0x88AADD /* "SkyOS" accent */
#define C_TXT_LOGO 0x88AADD /* "OrionOS" accent */
#define C_WARN 0xFFCC44 /* warning text */
#define C_ERR 0xFF5555 /* error text */
#define C_OK 0x44CC77 /* success text */
@@ -408,8 +408,8 @@ static void draw_header(Ins *s, XftDraw *xd, const char *title) {
fill_rect(s, 0, 0, WIN_W, 3, C_HDR_ACCENT);
draw_line(s, 0, HDR_H-1, WIN_W, HDR_H-1, C_BORDER);
xft_text(s, xd, s->f_logo, C_TXT_LOGO, 20, 12, "SkyOS");
int lw = text_w(s, s->f_logo, "SkyOS");
xft_text(s, xd, s->f_logo, C_TXT_LOGO, 20, 12, "OrionOS");
int lw = text_w(s, s->f_logo, "OrionOS");
draw_line(s, 20 + lw + 12, HDR_H/2, WIN_W - 20, HDR_H/2, C_SEP);
xft_text(s, xd, s->f_head, C_TXT_HDR, 20 + lw + 20, 18, title);
}
@@ -500,11 +500,11 @@ static void draw_welcome(Ins *s, XftDraw *xd) {
int y = BODY_Y + 30;
xft_text(s, xd, s->f_head, C_TXT_HDR, 40, y,
"Welcome to the SkyOS Installer");
"Welcome to the OrionOS Installer");
y += 36;
const char *lines[] = {
"This wizard will guide you through installing SkyOS",
"This wizard will guide you through installing OrionOS",
"onto your computer.",
"",
"What you will need:",
@@ -539,7 +539,7 @@ static void draw_disk(Ins *s, XftDraw *xd) {
fill_rect(s, 0, BODY_Y, WIN_W, BODY_H, C_BODY);
xft_text(s, xd, s->f_body, C_TXT_DIM, 30, BODY_Y + 16,
"Choose the disk where SkyOS will be installed. It will be erased.");
"Choose the disk where OrionOS will be installed. It will be erased.");
int y = BODY_Y + 42;
int dw = WIN_W - 60;
@@ -576,8 +576,8 @@ static void draw_user(Ins *s, XftDraw *xd) {
int fh = 32, gap = 48;
struct { const char *label; TF *tf; const char *ph; } fields[] = {
{ "Hostname:", &s->tf_host, "skyos" },
{ "Username:", &s->tf_user, "sky" },
{ "Hostname:", &s->tf_host, "orionos" },
{ "Username:", &s->tf_user, "orion" },
{ "Password:", &s->tf_pass, "••••••••" },
{ "Confirm password:", &s->tf_pass2, "••••••••" },
};
@@ -659,7 +659,7 @@ static void draw_review(Ins *s, XftDraw *xd) {
static void draw_install(Ins *s, XftDraw *xd) {
draw_header(s, xd, s->install_done ? "Installation Complete" :
"Installing SkyOS…");
"Installing OrionOS…");
fill_rect(s, 0, BODY_Y, WIN_W, BODY_H, C_BODY);
int y = BODY_Y + 16;
@@ -721,10 +721,10 @@ static void draw_done(Ins *s, XftDraw *xd) {
int cy = BODY_Y + BODY_H / 2 - 60;
xft_text(s, xd, s->f_logo, C_OK,
WIN_W/2 - text_w(s, s->f_logo, "✓ SkyOS Installed!")/2,
cy, "✓ SkyOS Installed!");
WIN_W/2 - text_w(s, s->f_logo, "✓ OrionOS Installed!")/2,
cy, "✓ OrionOS Installed!");
cy += 48;
const char *l1 = "SkyOS has been installed successfully.";
const char *l1 = "OrionOS has been installed successfully.";
const char *l2 = "Remove the USB drive and restart your computer.";
xft_text(s, xd, s->f_body, C_TXT,
WIN_W/2 - text_w(s, s->f_body, l1)/2, cy, l1);
@@ -787,14 +787,14 @@ static void start_install(Ins *s) {
dup2(pipefd[1], STDOUT_FILENO);
dup2(pipefd[1], STDERR_FILENO);
close(pipefd[1]);
execl("/usr/local/bin/skyinstall", "skyinstall",
execl("/usr/local/bin/orioninstall", "orioninstall",
"--gui",
s->disks[s->sel_disk].path,
s->tf_host.buf,
s->tf_user.buf,
s->tf_pass.buf,
NULL);
fprintf(stderr, "exec skyinstall failed: %s\n", strerror(errno));
fprintf(stderr, "exec orioninstall failed: %s\n", strerror(errno));
_exit(1);
}
@@ -1027,7 +1027,7 @@ static void init(Ins *s) {
s->gc = XCreateGC(s->dpy, s->win, 0, NULL);
/* window title + WM hints */
XStoreName(s->dpy, s->win, "SkyOS Installer");
XStoreName(s->dpy, s->win, "OrionOS Installer");
Atom wm_del = XInternAtom(s->dpy, "WM_DELETE_WINDOW", False);
XSetWMProtocols(s->dpy, s->win, &wm_del, 1);
/* fixed size */
@@ -1057,10 +1057,10 @@ static void init(Ins *s) {
s->install_fd = -1;
s->progress = 0;
snprintf(s->prog_msg, sizeof(s->prog_msg), "Starting…");
snprintf(s->tf_host.buf, TF_MAX, "skyos");
s->tf_host.len = strlen("skyos");
snprintf(s->tf_user.buf, TF_MAX, "sky");
s->tf_user.len = strlen("sky");
snprintf(s->tf_host.buf, TF_MAX, "orionos");
s->tf_host.len = strlen("orionos");
snprintf(s->tf_user.buf, TF_MAX, "orion");
s->tf_user.len = strlen("orion");
s->tf_pass.password = 1;
s->tf_pass2.password = 1;