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

+5 -5
View File
@@ -1,8 +1,8 @@
.DS_Store .DS_Store
*.iso *.iso
*.o *.o
deskbar/skydeskbar deskbar/oriondeskbar
installer/skyinstall installer/orioninstall
installer/skyinstall-gui installer/orioninstall-gui
launcher/skylauncher launcher/orionlauncher
wm/skywm wm/orionwm
+14 -14
View File
@@ -1,4 +1,4 @@
# SkyOS — top-level build # OrionOS — top-level build
# Usage: # Usage:
# make — build all components # make — build all components
# make install — install binaries + theme to /usr/local # make install — install binaries + theme to /usr/local
@@ -29,26 +29,26 @@ clean:
install: all install: all
# binaries # binaries
install -Dm755 wm/skywm /usr/local/bin/skywm install -Dm755 wm/orionwm /usr/local/bin/orionwm
install -Dm755 deskbar/skydeskbar /usr/local/bin/skydeskbar install -Dm755 deskbar/oriondeskbar /usr/local/bin/oriondeskbar
install -Dm755 launcher/skylauncher /usr/local/bin/skylauncher install -Dm755 launcher/orionlauncher /usr/local/bin/orionlauncher
install -Dm755 themes/skywallpaper /usr/local/bin/skywallpaper install -Dm755 themes/orionwallpaper /usr/local/bin/orionwallpaper
# GTK theme # GTK theme
mkdir -p /usr/share/themes mkdir -p /usr/share/themes
cp -r themes/SkyOS /usr/share/themes/ cp -r themes/OrionOS /usr/share/themes/
# picom config # picom config
install -Dm644 themes/picom.conf /etc/skyos/picom.conf install -Dm644 themes/picom.conf /etc/orionos/picom.conf
# wallpaper # wallpaper
mkdir -p /usr/share/skyos/wallpapers mkdir -p /usr/share/orionos/wallpapers
bash themes/wallpapers/generate-default.sh || true bash themes/wallpapers/generate-default.sh || true
cp -f themes/wallpapers/skyos-default.png /usr/share/skyos/wallpapers/ 2>/dev/null || true cp -f themes/wallpapers/skyos-default.png /usr/share/orionos/wallpapers/ 2>/dev/null || true
@echo "" @echo ""
@echo "SkyOS installed. Add this to ~/.xinitrc to start:" @echo "OrionOS installed. Add this to ~/.xinitrc to start:"
@echo "" @echo ""
@echo " skywallpaper" @echo " orionwallpaper"
@echo " picom --config /etc/skyos/picom.conf &" @echo " picom --config /etc/orionos/picom.conf &"
@echo " skydeskbar &" @echo " oriondeskbar &"
@echo " exec skywm" @echo " exec orionwm"
iso: iso:
chmod +x build-iso.sh chmod +x build-iso.sh
+6 -6
View File
@@ -1,15 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# SkyOS ISO builder — run this on your Mac to produce a bootable ISO. # OrionOS ISO builder — run this on your Mac to produce a bootable ISO.
# Requires: Docker Desktop (https://docker.com/products/docker-desktop) # Requires: Docker Desktop (https://docker.com/products/docker-desktop)
# #
# Usage: ./build-iso.sh # Usage: ./build-iso.sh
# Output: dist/skyos-<date>.iso # Output: dist/orionos-<date>.iso
set -euo pipefail set -euo pipefail
REPO="$(cd "$(dirname "$0")" && pwd)" REPO="$(cd "$(dirname "$0")" && pwd)"
DIST="$REPO/dist" DIST="$REPO/dist"
IMAGE="skyos-builder" IMAGE="orionos-builder"
ISO_TAG="skyos-$(date +%Y%m%d)" ISO_TAG="orionos-$(date +%Y%m%d)"
# ── preflight ───────────────────────────────────────────────────────── # ── preflight ─────────────────────────────────────────────────────────
if ! command -v docker &>/dev/null; then if ! command -v docker &>/dev/null; then
@@ -33,7 +33,7 @@ fi
echo "" echo ""
echo "┌─────────────────────────────────────────────┐" echo "┌─────────────────────────────────────────────┐"
echo "│ SkyOS ISO Builder │" echo "│ OrionOS ISO Builder │"
echo "│ Building a BeOS-inspired Linux desktop... │" echo "│ Building a BeOS-inspired Linux desktop... │"
echo "└─────────────────────────────────────────────┘" echo "└─────────────────────────────────────────────┘"
echo "" echo ""
@@ -66,7 +66,7 @@ docker run \
# ── rename with date tag ────────────────────────────────────────────── # ── rename with date tag ──────────────────────────────────────────────
echo "" echo ""
echo "Step 3/3: Finalizing..." echo "Step 3/3: Finalizing..."
ISO="$(find "$DIST" -name "skyos*.iso" | head -1)" ISO="$(find "$DIST" -name "orionos*.iso" | head -1)"
if [[ -z "$ISO" ]]; then if [[ -z "$ISO" ]]; then
echo "ERROR: ISO not found in $DIST — check the build output above." echo "ERROR: ISO not found in $DIST — check the build output above."
exit 1 exit 1
+1 -1
View File
@@ -12,7 +12,7 @@ LDFLAGS = $(PKG_XFT_L)
SRC = src/deskbar.c SRC = src/deskbar.c
OBJ = $(SRC:.c=.o) OBJ = $(SRC:.c=.o)
BIN = skydeskbar BIN = oriondeskbar
.PHONY: all clean install .PHONY: all clean install
all: $(BIN) all: $(BIN)
+4 -4
View File
@@ -13,10 +13,10 @@
#include <unistd.h> #include <unistd.h>
/* /*
* SkyDeskbar — modern dark panel, docked top-right. * OrionDeskbar — modern dark panel, docked top-right.
* *
* ┌──────────────────────────┐ * ┌──────────────────────────┐
* │ [Sky ▾] │ 12:00 PM │ <- top strip: menu + clock * │ [Orion ▾]│ 12:00 PM │ <- top strip: menu + clock
* │ │ Wed Jul 23 │ <- date line * │ │ Wed Jul 23 │ <- date line
* ├──────────────────────────┤ * ├──────────────────────────┤
* │ [F] Firefox ▸ │ <- app entries (letter icon + name) * │ [F] Firefox ▸ │ <- app entries (letter icon + name)
@@ -34,7 +34,7 @@
/* ── layout ──────────────────────────────────────────────────────────── */ /* ── layout ──────────────────────────────────────────────────────────── */
#define DB_W 200 /* deskbar total width */ #define DB_W 200 /* deskbar total width */
#define DB_TOP_H 52 /* top strip height (menu + clock + date) */ #define DB_TOP_H 52 /* top strip height (menu + clock + date) */
#define DB_MENU_W 68 /* width of the Sky menu button */ #define DB_MENU_W 68 /* width of the Orion menu button */
#define DB_ITEM_H 26 /* app entry row height */ #define DB_ITEM_H 26 /* app entry row height */
#define DB_ICON_SZ 18 /* app icon square size */ #define DB_ICON_SZ 18 /* app icon square size */
#define DB_WS_H 28 /* workspace strip height */ #define DB_WS_H 28 /* workspace strip height */
@@ -54,7 +54,7 @@
/* ── modern dark palette ──────────────────────────────────────────────── */ /* ── modern dark palette ──────────────────────────────────────────────── */
#define DB_COL_BG 0x111520 /* dark navy body */ #define DB_COL_BG 0x111520 /* dark navy body */
#define DB_COL_MENU_BG 0x0E1A32 /* menu button bg */ #define DB_COL_MENU_BG 0x0E1A32 /* menu button bg */
#define DB_COL_LOGO_TEXT 0x90BBEE /* "Sky" text */ #define DB_COL_LOGO_TEXT 0x90BBEE /* "Orion" text */
#define DB_COL_ITEM_BG 0x141828 /* app row bg */ #define DB_COL_ITEM_BG 0x141828 /* app row bg */
#define DB_COL_ITEM_ALT 0x111520 /* alternate row */ #define DB_COL_ITEM_ALT 0x111520 /* alternate row */
#define DB_COL_ITEM_HOV 0x1E4878 /* hover — blue */ #define DB_COL_ITEM_HOV 0x1E4878 /* hover — blue */
+8 -8
View File
@@ -359,7 +359,7 @@ void db_draw(Deskbar *db) {
XSetForeground(db->dpy, db->gc, db_color(db, DB_COL_ACCENT)); XSetForeground(db->dpy, db->gc, db_color(db, DB_COL_ACCENT));
XFillRectangle(db->dpy, db->win, db->gc, 0, 0, DB_W, 2); XFillRectangle(db->dpy, db->win, db->gc, 0, 0, DB_W, 2);
/* Sky menu button — highlight when menu is open */ /* Orion menu button — highlight when menu is open */
unsigned long sky_bg = db->menu_win ? 0x1A3868 : DB_COL_MENU_BG; unsigned long sky_bg = db->menu_win ? 0x1A3868 : DB_COL_MENU_BG;
XSetForeground(db->dpy, db->gc, db_color(db, sky_bg)); XSetForeground(db->dpy, db->gc, db_color(db, sky_bg));
XFillRectangle(db->dpy, db->win, db->gc, 0, 2, DB_MENU_W, DB_TOP_H - 2); XFillRectangle(db->dpy, db->win, db->gc, 0, 2, DB_MENU_W, DB_TOP_H - 2);
@@ -368,9 +368,9 @@ void db_draw(Deskbar *db) {
XSetForeground(db->dpy, db->gc, db_color(db, DB_COL_ACCENT)); XSetForeground(db->dpy, db->gc, db_color(db, DB_COL_ACCENT));
XFillRectangle(db->dpy, db->win, db->gc, 0, DB_TOP_H - 2, DB_MENU_W, 2); XFillRectangle(db->dpy, db->win, db->gc, 0, DB_TOP_H - 2, DB_MENU_W, 2);
} }
/* "Sky \xe2\x96\xbe" = "Sky ▾" */ /* "Orion ▾" */
draw_str_centered(db, xd, db->font_menu, DB_COL_LOGO_TEXT, draw_str_centered(db, xd, db->font_menu, DB_COL_LOGO_TEXT,
0, 2, DB_MENU_W, DB_TOP_H - 2, "Sky \xe2\x96\xbe"); 0, 2, DB_MENU_W, DB_TOP_H - 2, "Orion \xe2\x96\xbe");
/* vertical divider */ /* vertical divider */
XSetForeground(db->dpy, db->gc, db_color(db, DB_COL_BORDER_D)); XSetForeground(db->dpy, db->gc, db_color(db, DB_COL_BORDER_D));
@@ -533,7 +533,7 @@ void db_draw(Deskbar *db) {
pos += snprintf(status + pos, sizeof(status) - pos, pos += snprintf(status + pos, sizeof(status) - pos,
" BAT %d%%%s", bat, arrow); " BAT %d%%%s", bat, arrow);
} }
if (pos == 0) snprintf(status, sizeof(status), "SkyOS"); if (pos == 0) snprintf(status, sizeof(status), "OrionOS");
draw_str_centered(db, xd, db->font_date, DB_COL_STATUS_TXT, draw_str_centered(db, xd, db->font_date, DB_COL_STATUS_TXT,
0, sy, DB_W, DB_STATUS_H, status); 0, sy, DB_W, DB_STATUS_H, status);
} }
@@ -569,12 +569,12 @@ static const char *S1_CMD[] = {
#define NS1 5 #define NS1 5
static const MI MENU[] = { static const MI MENU[] = {
{ "Install SkyOS...", "alacritty -e bash -c 'sudo skyinstall; exec bash' &", 0, 0,-1 }, { "Install OrionOS...", "alacritty -e bash -c 'sudo skyinstall; exec bash' &", 0, 0,-1 },
{ NULL, NULL, 1, 0,-1 }, { NULL, NULL, 1, 0,-1 },
{ "Applications", NULL, 0, 1, 0 }, { "Applications", NULL, 0, 1, 0 },
{ "Settings", NULL, 0, 1, 1 }, { "Settings", NULL, 0, 1, 1 },
{ NULL, NULL, 1, 0,-1 }, { NULL, NULL, 1, 0,-1 },
{ "About SkyOS", "alacritty -e bash -c 'fastfetch; read' &", 0, 0,-1 }, { "About OrionOS", "alacritty -e bash -c 'fastfetch; read' &", 0, 0,-1 },
{ "Lock Screen", "xscreensaver-command -lock &", 0, 0,-1 }, { "Lock Screen", "xscreensaver-command -lock &", 0, 0,-1 },
{ NULL, NULL, 1, 0,-1 }, { NULL, NULL, 1, 0,-1 },
{ "Restart", "systemctl reboot", 0, 0,-1 }, { "Restart", "systemctl reboot", 0, 0,-1 },
@@ -822,7 +822,7 @@ void db_click(Deskbar *db, int x, int y) {
int ay = db_apps_y(); int ay = db_apps_y();
int wy = db_ws_y(db); int wy = db_ws_y(db);
/* Sky menu button → toggle fly-out menu */ /* Orion menu button → toggle fly-out menu */
if (y < DB_TOP_H && x < DB_MENU_W) { if (y < DB_TOP_H && x < DB_MENU_W) {
if (db->menu_win) db_menu_close(db); if (db->menu_win) db_menu_close(db);
else db_menu_open(db); else db_menu_open(db);
@@ -870,7 +870,7 @@ void db_click(Deskbar *db, int x, int y) {
void db_init(Deskbar *db) { void db_init(Deskbar *db) {
db->dpy = XOpenDisplay(NULL); db->dpy = XOpenDisplay(NULL);
if (!db->dpy) { fprintf(stderr, "skydeskbar: cannot open display\n"); exit(1); } if (!db->dpy) { fprintf(stderr, "oriondeskbar: cannot open display\n"); exit(1); }
db->screen = DefaultScreen(db->dpy); db->screen = DefaultScreen(db->dpy);
db->root = RootWindow(db->dpy, db->screen); db->root = RootWindow(db->dpy, db->screen);
+3 -3
View File
@@ -2,10 +2,10 @@ CC = gcc
CFLAGS = -O2 -Wall -Wextra $(shell pkg-config --cflags x11 xft fontconfig) CFLAGS = -O2 -Wall -Wextra $(shell pkg-config --cflags x11 xft fontconfig)
LDFLAGS = $(shell pkg-config --libs 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) $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
clean: 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: * Steps:
* 0 Welcome * 0 Welcome
@@ -57,7 +57,7 @@
#define C_TXT_DIM 0x5A7090 /* dim text */ #define C_TXT_DIM 0x5A7090 /* dim text */
#define C_TXT_INP 0xD8E4F8 /* input text */ #define C_TXT_INP 0xD8E4F8 /* input text */
#define C_TXT_HDR 0xE8F0FF /* header 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_WARN 0xFFCC44 /* warning text */
#define C_ERR 0xFF5555 /* error text */ #define C_ERR 0xFF5555 /* error text */
#define C_OK 0x44CC77 /* success 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); 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); 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"); xft_text(s, xd, s->f_logo, C_TXT_LOGO, 20, 12, "OrionOS");
int lw = text_w(s, s->f_logo, "SkyOS"); 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); 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); 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; int y = BODY_Y + 30;
xft_text(s, xd, s->f_head, C_TXT_HDR, 40, y, xft_text(s, xd, s->f_head, C_TXT_HDR, 40, y,
"Welcome to the SkyOS Installer"); "Welcome to the OrionOS Installer");
y += 36; y += 36;
const char *lines[] = { const char *lines[] = {
"This wizard will guide you through installing SkyOS", "This wizard will guide you through installing OrionOS",
"onto your computer.", "onto your computer.",
"", "",
"What you will need:", "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); 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, 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 y = BODY_Y + 42;
int dw = WIN_W - 60; int dw = WIN_W - 60;
@@ -576,8 +576,8 @@ static void draw_user(Ins *s, XftDraw *xd) {
int fh = 32, gap = 48; int fh = 32, gap = 48;
struct { const char *label; TF *tf; const char *ph; } fields[] = { struct { const char *label; TF *tf; const char *ph; } fields[] = {
{ "Hostname:", &s->tf_host, "skyos" }, { "Hostname:", &s->tf_host, "orionos" },
{ "Username:", &s->tf_user, "sky" }, { "Username:", &s->tf_user, "orion" },
{ "Password:", &s->tf_pass, "••••••••" }, { "Password:", &s->tf_pass, "••••••••" },
{ "Confirm password:", &s->tf_pass2, "••••••••" }, { "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) { static void draw_install(Ins *s, XftDraw *xd) {
draw_header(s, xd, s->install_done ? "Installation Complete" : 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); fill_rect(s, 0, BODY_Y, WIN_W, BODY_H, C_BODY);
int y = BODY_Y + 16; 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; int cy = BODY_Y + BODY_H / 2 - 60;
xft_text(s, xd, s->f_logo, C_OK, xft_text(s, xd, s->f_logo, C_OK,
WIN_W/2 - text_w(s, s->f_logo, "✓ SkyOS Installed!")/2, WIN_W/2 - text_w(s, s->f_logo, "✓ OrionOS Installed!")/2,
cy, "✓ SkyOS Installed!"); cy, "✓ OrionOS Installed!");
cy += 48; 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."; const char *l2 = "Remove the USB drive and restart your computer.";
xft_text(s, xd, s->f_body, C_TXT, xft_text(s, xd, s->f_body, C_TXT,
WIN_W/2 - text_w(s, s->f_body, l1)/2, cy, l1); 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], STDOUT_FILENO);
dup2(pipefd[1], STDERR_FILENO); dup2(pipefd[1], STDERR_FILENO);
close(pipefd[1]); close(pipefd[1]);
execl("/usr/local/bin/skyinstall", "skyinstall", execl("/usr/local/bin/orioninstall", "orioninstall",
"--gui", "--gui",
s->disks[s->sel_disk].path, s->disks[s->sel_disk].path,
s->tf_host.buf, s->tf_host.buf,
s->tf_user.buf, s->tf_user.buf,
s->tf_pass.buf, s->tf_pass.buf,
NULL); NULL);
fprintf(stderr, "exec skyinstall failed: %s\n", strerror(errno)); fprintf(stderr, "exec orioninstall failed: %s\n", strerror(errno));
_exit(1); _exit(1);
} }
@@ -1027,7 +1027,7 @@ static void init(Ins *s) {
s->gc = XCreateGC(s->dpy, s->win, 0, NULL); s->gc = XCreateGC(s->dpy, s->win, 0, NULL);
/* window title + WM hints */ /* 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); Atom wm_del = XInternAtom(s->dpy, "WM_DELETE_WINDOW", False);
XSetWMProtocols(s->dpy, s->win, &wm_del, 1); XSetWMProtocols(s->dpy, s->win, &wm_del, 1);
/* fixed size */ /* fixed size */
@@ -1057,10 +1057,10 @@ static void init(Ins *s) {
s->install_fd = -1; s->install_fd = -1;
s->progress = 0; s->progress = 0;
snprintf(s->prog_msg, sizeof(s->prog_msg), "Starting…"); snprintf(s->prog_msg, sizeof(s->prog_msg), "Starting…");
snprintf(s->tf_host.buf, TF_MAX, "skyos"); snprintf(s->tf_host.buf, TF_MAX, "orionos");
s->tf_host.len = strlen("skyos"); s->tf_host.len = strlen("orionos");
snprintf(s->tf_user.buf, TF_MAX, "sky"); snprintf(s->tf_user.buf, TF_MAX, "orion");
s->tf_user.len = strlen("sky"); s->tf_user.len = strlen("orion");
s->tf_pass.password = 1; s->tf_pass.password = 1;
s->tf_pass2.password = 1; s->tf_pass2.password = 1;
+83 -83
View File
@@ -1,15 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Runs inside the Docker container. # Runs inside the Docker container.
# Produces /dist/skyos.iso using archiso's "releng" profile as a base. # Produces /dist/orionos.iso using archiso's "releng" profile as a base.
set -euo pipefail set -euo pipefail
DIST="${DIST:-/dist}" DIST="${DIST:-/dist}"
WORK=/tmp/skyos-work WORK=/tmp/orionos-work
PROFILE=/tmp/skyos-profile PROFILE=/tmp/orionos-profile
SRC=/skyos SRC=/orionos
echo "════════════════════════════════════════" echo "════════════════════════════════════════"
echo " SkyOS ISO Builder" echo " OrionOS ISO Builder"
echo "════════════════════════════════════════" echo "════════════════════════════════════════"
# ── 1. Start from archiso's releng profile ──────────────────────────── # ── 1. Start from archiso's releng profile ────────────────────────────
@@ -195,23 +195,23 @@ echo ">>> Live initramfs HOOKS: base udev microcode archiso block filesystems ke
# passwd / shadow / group # passwd / shadow / group
cat > "$AIROOTFS/etc/hostname" <<'EOF' cat > "$AIROOTFS/etc/hostname" <<'EOF'
skyos orionos
EOF EOF
# Create 'sky' user in the live environment # Create 'orion' user in the live environment
mkdir -p "$AIROOTFS/etc/sudoers.d" mkdir -p "$AIROOTFS/etc/sudoers.d"
echo "%wheel ALL=(ALL) ALL" > "$AIROOTFS/etc/sudoers.d/wheel" echo "%wheel ALL=(ALL) ALL" > "$AIROOTFS/etc/sudoers.d/wheel"
# ── 3b. OnlyOffice — create a local pacman repo so mkarchiso can find it # ── 3b. OnlyOffice — create a local pacman repo so mkarchiso can find it
if [[ -f /onlyoffice.pkg.tar.zst ]]; then if [[ -f /onlyoffice.pkg.tar.zst ]]; then
echo ">>> Setting up local OnlyOffice repo..." echo ">>> Setting up local OnlyOffice repo..."
mkdir -p /skyos-local-repo mkdir -p /orionos-local-repo
cp /onlyoffice.pkg.tar.zst /skyos-local-repo/ cp /onlyoffice.pkg.tar.zst /orionos-local-repo/
OO_PKG="$(find /skyos-local-repo -name '*.pkg.tar.zst' | head -1)" OO_PKG="$(find /orionos-local-repo -name '*.pkg.tar.zst' | head -1)"
repo-add /skyos-local-repo/skyos-local.db.tar.gz "$OO_PKG" repo-add /orionos-local-repo/orionos-local.db.tar.gz "$OO_PKG"
# Prepend [skyos-local] to the profile's pacman.conf # Prepend [orionos-local] to the profile's pacman.conf
sed -i 's/^\[core\]/[skyos-local]\nSigLevel = Never\nServer = file:\/\/\/skyos-local-repo\n\n[core]/' \ sed -i 's/^\[core\]/[orionos-local]\nSigLevel = Never\nServer = file:\/\/\/orionos-local-repo\n\n[core]/' \
"$PROFILE/pacman.conf" "$PROFILE/pacman.conf"
echo "onlyoffice-bin" >> "$PROFILE/packages.x86_64" echo "onlyoffice-bin" >> "$PROFILE/packages.x86_64"
@@ -220,33 +220,33 @@ else
echo ">>> OnlyOffice build not available — skipping." echo ">>> OnlyOffice build not available — skipping."
fi fi
# ── 4. Install SkyOS binaries ───────────────────────────────────────── # ── 4. Install OrionOS binaries ─────────────────────────────────────────
echo ">>> Installing SkyOS binaries..." echo ">>> Installing OrionOS binaries..."
mkdir -p "$AIROOTFS/usr/local/bin" mkdir -p "$AIROOTFS/usr/local/bin"
install -m755 "$SRC/wm/skywm" "$AIROOTFS/usr/local/bin/skywm" install -m755 "$SRC/wm/orionwm" "$AIROOTFS/usr/local/bin/orionwm"
install -m755 "$SRC/deskbar/skydeskbar" "$AIROOTFS/usr/local/bin/skydeskbar" install -m755 "$SRC/deskbar/oriondeskbar" "$AIROOTFS/usr/local/bin/oriondeskbar"
install -m755 "$SRC/launcher/skylauncher" "$AIROOTFS/usr/local/bin/skylauncher" install -m755 "$SRC/launcher/orionlauncher" "$AIROOTFS/usr/local/bin/orionlauncher"
install -m755 "$SRC/themes/skywallpaper" "$AIROOTFS/usr/local/bin/skywallpaper" install -m755 "$SRC/themes/orionwallpaper" "$AIROOTFS/usr/local/bin/orionwallpaper"
install -m755 "$SRC/installer/skyinstall" "$AIROOTFS/usr/local/bin/skyinstall" install -m755 "$SRC/installer/orioninstall" "$AIROOTFS/usr/local/bin/orioninstall"
# GUI installer (compiled binary; falls back gracefully if not built) # GUI installer (compiled binary; falls back gracefully if not built)
if [[ -f "$SRC/installer/skyinstall-gui" ]]; then if [[ -f "$SRC/installer/orioninstall-gui" ]]; then
install -m755 "$SRC/installer/skyinstall-gui" "$AIROOTFS/usr/local/bin/skyinstall-gui" install -m755 "$SRC/installer/orioninstall-gui" "$AIROOTFS/usr/local/bin/orioninstall-gui"
fi fi
# ── 5. GTK theme ────────────────────────────────────────────────────── # ── 5. GTK theme ──────────────────────────────────────────────────────
echo ">>> Installing GTK theme..." echo ">>> Installing GTK theme..."
mkdir -p "$AIROOTFS/usr/share/themes" mkdir -p "$AIROOTFS/usr/share/themes"
cp -r "$SRC/themes/SkyOS" "$AIROOTFS/usr/share/themes/" cp -r "$SRC/themes/OrionOS" "$AIROOTFS/usr/share/themes/"
# ── 6. picom config ─────────────────────────────────────────────────── # ── 6. picom config ───────────────────────────────────────────────────
mkdir -p "$AIROOTFS/etc/skyos" mkdir -p "$AIROOTFS/etc/orionos"
install -m644 "$SRC/themes/picom.conf" "$AIROOTFS/etc/skyos/picom.conf" install -m644 "$SRC/themes/picom.conf" "$AIROOTFS/etc/orionos/picom.conf"
# ── 7. Default wallpaper ────────────────────────────────────────────── # ── 7. Default wallpaper ──────────────────────────────────────────────
echo ">>> Generating default wallpaper..." echo ">>> Generating default wallpaper..."
mkdir -p "$AIROOTFS/usr/share/skyos/wallpapers" mkdir -p "$AIROOTFS/usr/share/orionos/wallpapers"
if convert -size 1920x1080 gradient:"#1E3A5A-#0E1A28" \ if convert -size 1920x1080 gradient:"#1E3A5A-#0E1A28" \
"$AIROOTFS/usr/share/skyos/wallpapers/skyos-default.png" 2>/dev/null; then "$AIROOTFS/usr/share/orionos/wallpapers/orionos-default.png" 2>/dev/null; then
echo " Wallpaper generated." echo " Wallpaper generated."
else else
echo " (ImageMagick unavailable in container — wallpaper skipped, solid color will be used)" echo " (ImageMagick unavailable in container — wallpaper skipped, solid color will be used)"
@@ -259,7 +259,7 @@ mkdir -p "$SKEL/.config/gtk-3.0"
cat > "$SKEL/.xinitrc" <<'XINITRC' cat > "$SKEL/.xinitrc" <<'XINITRC'
#!/bin/sh #!/bin/sh
# SkyOS session startup # OrionOS session startup
# Merge X resources if present # Merge X resources if present
[ -f "$HOME/.Xresources" ] && xrdb -merge "$HOME/.Xresources" [ -f "$HOME/.Xresources" ] && xrdb -merge "$HOME/.Xresources"
@@ -271,23 +271,23 @@ xset r rate 250 30
xrandr --dpi 96 xrandr --dpi 96
# Wallpaper # Wallpaper
skywallpaper orionwallpaper
# Create standard user directories (Desktop, Downloads, Pictures…) # Create standard user directories (Desktop, Downloads, Pictures…)
xdg-user-dirs-update 2>/dev/null || true xdg-user-dirs-update 2>/dev/null || true
# GTK theme # GTK theme
export GTK_THEME=SkyOS export GTK_THEME=OrionOS
mkdir -p "$HOME/.config/gtk-3.0" mkdir -p "$HOME/.config/gtk-3.0"
cat > "$HOME/.config/gtk-3.0/settings.ini" <<EOF cat > "$HOME/.config/gtk-3.0/settings.ini" <<EOF
[Settings] [Settings]
gtk-theme-name=SkyOS gtk-theme-name=OrionOS
gtk-font-name=Sans 10 gtk-font-name=Sans 10
gtk-icon-theme-name=Adwaita gtk-icon-theme-name=Adwaita
gtk-cursor-theme-name=Adwaita gtk-cursor-theme-name=Adwaita
EOF EOF
cat > "$HOME/.gtkrc-2.0" <<EOF cat > "$HOME/.gtkrc-2.0" <<EOF
include "/usr/share/themes/SkyOS/gtk-2.0/gtkrc" include "/usr/share/themes/OrionOS/gtk-2.0/gtkrc"
EOF EOF
# Audio session (pipewire + wireplumber) # Audio session (pipewire + wireplumber)
@@ -305,7 +305,7 @@ dunst &
nm-applet & nm-applet &
# Compositor # Compositor
picom --config /etc/skyos/picom.conf & picom --config /etc/orionos/picom.conf &
# Clipboard sync: keep PRIMARY and CLIPBOARD selections in sync # Clipboard sync: keep PRIMARY and CLIPBOARD selections in sync
if command -v xclip &>/dev/null; then if command -v xclip &>/dev/null; then
@@ -325,16 +325,16 @@ xfce4-power-manager &
xbindkeys & xbindkeys &
# Deskbar # Deskbar
skydeskbar & oriondeskbar &
# Window manager (must be last — controls the session) # Window manager (must be last — controls the session)
exec skywm exec orionwm
XINITRC XINITRC
chmod 755 "$SKEL/.xinitrc" chmod 755 "$SKEL/.xinitrc"
cat > "$SKEL/.xbindkeysrc" <<'XBK' cat > "$SKEL/.xbindkeysrc" <<'XBK'
# App launcher # App launcher
"skylauncher" "orionlauncher"
Mod1 + F1 Mod1 + F1
# Brightness (Mac Fn+F1/F2, also mapped as XF86 keys) # Brightness (Mac Fn+F1/F2, also mapped as XF86 keys)
@@ -383,7 +383,7 @@ FONTS
# ── .Xresources — nice dark xterm ──────────────────────────────────── # ── .Xresources — nice dark xterm ────────────────────────────────────
cat > "$SKEL/.Xresources" <<'XRES' cat > "$SKEL/.Xresources" <<'XRES'
! SkyOS dark terminal theme ! OrionOS dark terminal theme
XTerm*faceName: DejaVu Sans Mono XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 11 XTerm*faceSize: 11
XTerm*renderFont: true XTerm*renderFont: true
@@ -526,7 +526,7 @@ DUNST
cat > "$SKEL/.config/gtk-3.0/settings.ini" <<'GTK3' cat > "$SKEL/.config/gtk-3.0/settings.ini" <<'GTK3'
[Settings] [Settings]
gtk-theme-name=SkyOS gtk-theme-name=OrionOS
gtk-font-name=Sans 10 gtk-font-name=Sans 10
gtk-icon-theme-name=Adwaita gtk-icon-theme-name=Adwaita
gtk-cursor-theme-name=DMZ-White gtk-cursor-theme-name=DMZ-White
@@ -534,22 +534,22 @@ GTK3
# ── Plymouth dark navy boot splash ─────────────────────────────────── # ── Plymouth dark navy boot splash ───────────────────────────────────
echo ">>> Creating Plymouth theme..." echo ">>> Creating Plymouth theme..."
PLYM="$AIROOTFS/usr/share/plymouth/themes/skyos" PLYM="$AIROOTFS/usr/share/plymouth/themes/orionos"
mkdir -p "$PLYM" mkdir -p "$PLYM"
cat > "$PLYM/skyos.plymouth" <<'PLYMDEF' cat > "$PLYM/orionos.plymouth" <<'PLYMDEF'
[Plymouth Theme] [Plymouth Theme]
Name=SkyOS Name=OrionOS
Description=SkyOS dark navy boot splash Description=OrionOS dark navy boot splash
ModuleName=script ModuleName=script
[script] [script]
ImageDir=/usr/share/plymouth/themes/skyos ImageDir=/usr/share/plymouth/themes/orionos
ScriptFile=/usr/share/plymouth/themes/skyos/skyos.script ScriptFile=/usr/share/plymouth/themes/orionos/orionos.script
PLYMDEF PLYMDEF
cat > "$PLYM/skyos.script" <<'PLYMSCRIPT' cat > "$PLYM/orionos.script" <<'PLYMSCRIPT'
# SkyOS Plymouth boot splash — dark navy + accent blue progress bar # OrionOS Plymouth boot splash — dark navy + accent blue progress bar
W = Window.GetWidth(); W = Window.GetWidth();
H = Window.GetHeight(); H = Window.GetHeight();
@@ -594,11 +594,11 @@ PLYMSCRIPT
# Generate PNG assets (ImageMagick is used above for the wallpaper) # Generate PNG assets (ImageMagick is used above for the wallpaper)
if command -v convert &>/dev/null; then if command -v convert &>/dev/null; then
# Logo: "SkyOS" in accent blue on transparent background # Logo: "OrionOS" in accent blue on transparent background
convert -size 340x90 xc:none \ convert -size 340x90 xc:none \
-font DejaVu-Sans-Bold -pointsize 62 \ -font DejaVu-Sans-Bold -pointsize 62 \
-fill "#90BBEE" -gravity center \ -fill "#90BBEE" -gravity center \
-annotate 0 "SkyOS" \ -annotate 0 "OrionOS" \
"$PLYM/logo.png" 2>/dev/null \ "$PLYM/logo.png" 2>/dev/null \
&& echo " Plymouth logo generated." \ && echo " Plymouth logo generated." \
|| echo " Plymouth logo generation failed (non-fatal)." || echo " Plymouth logo generation failed (non-fatal)."
@@ -661,10 +661,10 @@ MODPROBE
# ── 9. profiledef.sh — archiso metadata ────────────────────────────── # ── 9. profiledef.sh — archiso metadata ──────────────────────────────
cat > "$PROFILE/profiledef.sh" <<'PROFILEDEF' cat > "$PROFILE/profiledef.sh" <<'PROFILEDEF'
#!/usr/bin/env bash #!/usr/bin/env bash
iso_name="skyos" iso_name="orionos"
iso_label="SKYOS_$(date +%Y%m)" iso_label="ORIONOS_$(date +%Y%m)"
iso_publisher="SkyOS Project" iso_publisher="OrionOS Project"
iso_application="SkyOS — BeOS-inspired Linux Desktop" iso_application="OrionOS — BeOS-inspired Linux Desktop"
iso_version="0.2" iso_version="0.2"
install_dir="arch" install_dir="arch"
buildmodes=('iso') buildmodes=('iso')
@@ -682,11 +682,11 @@ file_permissions=(
["/etc/shadow"]="0:0:400" ["/etc/shadow"]="0:0:400"
["/etc/skel/.xinitrc"]="0:0:755" ["/etc/skel/.xinitrc"]="0:0:755"
["/root/customize_airootfs.sh"]="0:0:755" ["/root/customize_airootfs.sh"]="0:0:755"
["/usr/local/bin/skywm"]="0:0:755" ["/usr/local/bin/orionwm"]="0:0:755"
["/usr/local/bin/skydeskbar"]="0:0:755" ["/usr/local/bin/oriondeskbar"]="0:0:755"
["/usr/local/bin/skylauncher"]="0:0:755" ["/usr/local/bin/orionlauncher"]="0:0:755"
["/usr/local/bin/skywallpaper"]="0:0:755" ["/usr/local/bin/orionwallpaper"]="0:0:755"
["/usr/local/bin/skyinstall"]="0:0:755" ["/usr/local/bin/orioninstall"]="0:0:755"
) )
PROFILEDEF PROFILEDEF
@@ -695,13 +695,13 @@ PROFILEDEF
# systemd-boot entry (UEFI) # systemd-boot entry (UEFI)
mkdir -p "$PROFILE/efiboot/loader/entries" mkdir -p "$PROFILE/efiboot/loader/entries"
cat > "$PROFILE/efiboot/loader/loader.conf" <<'LOADER' cat > "$PROFILE/efiboot/loader/loader.conf" <<'LOADER'
default skyos.conf default orionos.conf
timeout 5 timeout 5
editor no editor no
LOADER LOADER
cat > "$PROFILE/efiboot/loader/entries/skyos.conf" <<'ENTRY' cat > "$PROFILE/efiboot/loader/entries/orionos.conf" <<'ENTRY'
title SkyOS title OrionOS
linux /arch/boot/x86_64/vmlinuz-linux linux /arch/boot/x86_64/vmlinuz-linux
initrd /arch/boot/x86_64/initramfs-linux.img initrd /arch/boot/x86_64/initramfs-linux.img
options archisobasedir=arch archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3 options archisobasedir=arch archisolabel=%ARCHISO_LABEL% quiet splash loglevel=3
@@ -713,7 +713,7 @@ mkdir -p "$AIROOTFS/etc/systemd/system/getty@tty1.service.d"
cat > "$AIROOTFS/etc/systemd/system/getty@tty1.service.d/autologin.conf" <<'AUTOLOGIN' cat > "$AIROOTFS/etc/systemd/system/getty@tty1.service.d/autologin.conf" <<'AUTOLOGIN'
[Service] [Service]
ExecStart= ExecStart=
ExecStart=-/sbin/agetty --autologin sky --noclear %I $TERM ExecStart=-/sbin/agetty --autologin orion --noclear %I $TERM
AUTOLOGIN AUTOLOGIN
# bash_profile: startx automatically on tty1 (no exec — keep shell on failure) # bash_profile: startx automatically on tty1 (no exec — keep shell on failure)
@@ -736,9 +736,9 @@ echo "LANG=en_US.UTF-8" > /etc/locale.conf
# Timezone # Timezone
ln -sf /usr/share/zoneinfo/UTC /etc/localtime ln -sf /usr/share/zoneinfo/UTC /etc/localtime
# Create user 'sky' (live session user) # Create user 'orion' (live session user)
useradd -m -G wheel,audio,video,storage,input -s /bin/bash sky 2>/dev/null || true useradd -m -G wheel,audio,video,storage,input -s /bin/bash orion 2>/dev/null || true
echo "sky:skyos" | chpasswd echo "orion:orionos" | chpasswd
# sudoers # sudoers
echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/wheel echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/wheel
@@ -751,20 +751,20 @@ systemctl enable fstrim.timer 2>/dev/null || true
# MIME / default app associations # MIME / default app associations
if command -v xdg-mime &>/dev/null; then if command -v xdg-mime &>/dev/null; then
# Run as the sky user (xdg-mime needs $HOME) # Run as the orion user (xdg-mime needs $HOME)
sudo -u sky HOME=/home/sky XDG_DATA_HOME=/home/sky/.local/share \ sudo -u orion HOME=/home/orion XDG_DATA_HOME=/home/orion/.local/share \
xdg-mime default firefox.desktop x-scheme-handler/http \ xdg-mime default firefox.desktop x-scheme-handler/http \
x-scheme-handler/https \ x-scheme-handler/https \
text/html 2>/dev/null || true text/html 2>/dev/null || true
sudo -u sky HOME=/home/sky XDG_DATA_HOME=/home/sky/.local/share \ sudo -u orion HOME=/home/orion XDG_DATA_HOME=/home/orion/.local/share \
xdg-mime default evince.desktop application/pdf 2>/dev/null || true xdg-mime default evince.desktop application/pdf 2>/dev/null || true
sudo -u sky HOME=/home/sky XDG_DATA_HOME=/home/sky/.local/share \ sudo -u orion HOME=/home/orion XDG_DATA_HOME=/home/orion/.local/share \
xdg-mime default viewnior.desktop image/jpeg image/png \ xdg-mime default viewnior.desktop image/jpeg image/png \
image/gif image/webp 2>/dev/null || true image/gif image/webp 2>/dev/null || true
sudo -u sky HOME=/home/sky XDG_DATA_HOME=/home/sky/.local/share \ sudo -u orion HOME=/home/orion XDG_DATA_HOME=/home/orion/.local/share \
xdg-mime default mpv.desktop video/mp4 video/mkv \ xdg-mime default mpv.desktop video/mp4 video/mkv \
audio/mpeg audio/flac 2>/dev/null || true audio/mpeg audio/flac 2>/dev/null || true
sudo -u sky HOME=/home/sky XDG_DATA_HOME=/home/sky/.local/share \ sudo -u orion HOME=/home/orion XDG_DATA_HOME=/home/orion/.local/share \
xdg-mime default mousepad.desktop text/plain 2>/dev/null || true xdg-mime default mousepad.desktop text/plain 2>/dev/null || true
fi fi
update-desktop-database 2>/dev/null || true update-desktop-database 2>/dev/null || true
@@ -772,8 +772,8 @@ update-desktop-database 2>/dev/null || true
# Fontconfig cache # Fontconfig cache
fc-cache -f 2>/dev/null || true fc-cache -f 2>/dev/null || true
# Plymouth: set SkyOS as the default theme (archiso runs mkinitcpio after this) # Plymouth: set OrionOS as the default theme (archiso runs mkinitcpio after this)
plymouth-set-default-theme skyos 2>/dev/null || true plymouth-set-default-theme orionos 2>/dev/null || true
# xscreensaver config (screen lock) # xscreensaver config (screen lock)
mkdir -p /etc/skel mkdir -p /etc/skel
@@ -788,19 +788,19 @@ dpmsSuspend: 0:20:00
dpmsOff: 0:30:00 dpmsOff: 0:30:00
SS SS
# Copy skeleton to sky's home (ensure xinitrc is present) # Copy skeleton to orion's home (ensure xinitrc is present)
cp -r /etc/skel/. /home/sky/ 2>/dev/null || true cp -r /etc/skel/. /home/orion/ 2>/dev/null || true
chown -R sky:sky /home/sky chown -R orion:orion /home/orion
# Ensure SkyOS binaries are executable (permissions can be lost through squashfs build) # Ensure OrionOS binaries are executable (permissions can be lost through squashfs build)
chmod +x /usr/local/bin/skywm \ chmod +x /usr/local/bin/orionwm \
/usr/local/bin/skydeskbar \ /usr/local/bin/oriondeskbar \
/usr/local/bin/skylauncher \ /usr/local/bin/orionlauncher \
/usr/local/bin/skywallpaper \ /usr/local/bin/orionwallpaper \
/usr/local/bin/skyinstall 2>/dev/null || true /usr/local/bin/orioninstall 2>/dev/null || true
[ -f /usr/local/bin/skyinstall-gui ] && chmod +x /usr/local/bin/skyinstall-gui [ -f /usr/local/bin/orioninstall-gui ] && chmod +x /usr/local/bin/orioninstall-gui
echo "SkyOS customization complete." echo "OrionOS customization complete."
CUSTOMIZE CUSTOMIZE
chmod 755 "$PROFILE/airootfs/root/customize_airootfs.sh" chmod 755 "$PROFILE/airootfs/root/customize_airootfs.sh"
+1 -1
View File
@@ -11,7 +11,7 @@ CFLAGS = -Wall -Wextra -O2 $(PKG_XFT_C)
LDFLAGS = $(PKG_XFT_L) LDFLAGS = $(PKG_XFT_L)
SRC = src/launcher.c SRC = src/launcher.c
BIN = skylauncher BIN = orionlauncher
.PHONY: all clean install .PHONY: all clean install
all: $(BIN) all: $(BIN)
+2 -2
View File
@@ -305,7 +305,7 @@ static void draw(L *l) {
XSetForeground(l->dpy, l->gc, mkc(l, C_ACCENT)); XSetForeground(l->dpy, l->gc, mkc(l, C_ACCENT));
XFillRectangle(l->dpy, l->win, l->gc, 0, 0, WIN_W, 2); XFillRectangle(l->dpy, l->win, l->gc, 0, 0, WIN_W, 2);
ds(l, xd, l->font_logo, C_ACCENT, 14, 13, "SkyOS"); ds(l, xd, l->font_logo, C_ACCENT, 14, 13, "OrionOS");
/* search box */ /* search box */
{ {
@@ -462,7 +462,7 @@ int main(void) {
L l = {0}; l.sel_cat = 0; l.hov = -1; l.scroll = 0; L l = {0}; l.sel_cat = 0; l.hov = -1; l.scroll = 0;
l.dpy = XOpenDisplay(NULL); l.dpy = XOpenDisplay(NULL);
if (!l.dpy) { fprintf(stderr, "skylauncher: cannot open display\n"); return 1; } if (!l.dpy) { fprintf(stderr, "orionlauncher: cannot open display\n"); return 1; }
l.screen = DefaultScreen(l.dpy); l.screen = DefaultScreen(l.dpy);
l.root = RootWindow(l.dpy, l.screen); l.root = RootWindow(l.dpy, l.screen);
l.cmap = DefaultColormap(l.dpy, l.screen); l.cmap = DefaultColormap(l.dpy, l.screen);
File renamed without changes.
File renamed without changes.
File renamed without changes.
+2 -2
View File
@@ -1,6 +1,6 @@
# SkyOS picom compositor config # OrionOS picom compositor config
# Goal: subtle window shadows, no transparency, fast rendering. # Goal: subtle window shadows, no transparency, fast rendering.
# BeOS/SkyOS didn't have transparency — we keep it clean. # BeOS/OrionOS didn't have transparency — we keep it clean.
backend = "xrender"; # xrender works on all hardware; switch to glx for performance backend = "xrender"; # xrender works on all hardware; switch to glx for performance
vsync = false; vsync = false;
+3 -3
View File
@@ -1,9 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Generates the default SkyOS wallpaper as a PNG using ImageMagick. # Generates the default OrionOS wallpaper as a PNG using ImageMagick.
# On the live system: sudo pacman -S imagemagick # On the live system: sudo pacman -S imagemagick
# Output: skyos-default.png (1920x1080 — scales to any resolution via feh) # Output: orionos-default.png (1920x1080 — scales to any resolution via feh)
OUT="$(dirname "$0")/skyos-default.png" OUT="$(dirname "$0")/orionos-default.png"
if ! command -v convert &>/dev/null; then if ! command -v convert &>/dev/null; then
echo "ImageMagick not found. Install it, or place any PNG at:" echo "ImageMagick not found. Install it, or place any PNG at:"
+1 -1
View File
@@ -16,7 +16,7 @@ LDFLAGS = $(PKG_XFT_L)
SRC = src/wm.c src/client.c src/events.c src/draw.c src/color.c src/menu.c src/switcher.c SRC = src/wm.c src/client.c src/events.c src/draw.c src/color.c src/menu.c src/switcher.c
OBJ = $(SRC:.c=.o) OBJ = $(SRC:.c=.o)
BIN = skywm BIN = orionwm
.PHONY: all clean install .PHONY: all clean install
all: $(BIN) all: $(BIN)
+3 -3
View File
@@ -5,7 +5,7 @@
#define MENU_PADDING 5 #define MENU_PADDING 5
static const MenuItem MENU_ITEMS[] = { static const MenuItem MENU_ITEMS[] = {
{ "App Launcher", "skylauncher &" }, { "App Launcher", "orionlauncher &" },
{ "Terminal", "alacritty &" }, { "Terminal", "alacritty &" },
{ "File Manager", "thunar &" }, { "File Manager", "thunar &" },
{ "Text Editor", "mousepad &" }, { "Text Editor", "mousepad &" },
@@ -17,8 +17,8 @@ static const MenuItem MENU_ITEMS[] = {
{ "──────────────────", NULL }, { "──────────────────", NULL },
{ "Change Wallpaper", "skywallpaper --reset &" }, { "Change Wallpaper", "skywallpaper --reset &" },
{ "──────────────────", NULL }, { "──────────────────", NULL },
{ "Restart SkyWM", "pkill skywm; sleep 0.2; skywm &" }, { "Restart OrionWM", "pkill skywm; sleep 0.2; skywm &" },
{ "Quit SkyOS", "pkill skywm" }, { "Quit OrionOS", "pkill skywm" },
}; };
#define MENU_COUNT ((int)(sizeof(MENU_ITEMS) / sizeof(MENU_ITEMS[0]))) #define MENU_COUNT ((int)(sizeof(MENU_ITEMS) / sizeof(MENU_ITEMS[0])))
+4 -4
View File
@@ -5,19 +5,19 @@ static int x_error_handler(Display *dpy, XErrorEvent *e) {
return 0; return 0;
char buf[256]; char buf[256];
XGetErrorText(dpy, e->error_code, buf, sizeof(buf)); XGetErrorText(dpy, e->error_code, buf, sizeof(buf));
fprintf(stderr, "skywm: X error: %s (request %d)\n", buf, e->request_code); fprintf(stderr, "orionwm: X error: %s (request %d)\n", buf, e->request_code);
return 0; return 0;
} }
static int x_error_start(Display *dpy, XErrorEvent *e) { static int x_error_start(Display *dpy, XErrorEvent *e) {
(void)dpy; (void)e; (void)dpy; (void)e;
fprintf(stderr, "skywm: another window manager is already running\n"); fprintf(stderr, "orionwm: another window manager is already running\n");
exit(1); exit(1);
} }
void wm_init(WM *wm) { void wm_init(WM *wm) {
wm->dpy = XOpenDisplay(NULL); wm->dpy = XOpenDisplay(NULL);
if (!wm->dpy) { fprintf(stderr, "skywm: cannot open display\n"); exit(1); } if (!wm->dpy) { fprintf(stderr, "orionwm: cannot open display\n"); exit(1); }
wm->screen = DefaultScreen(wm->dpy); wm->screen = DefaultScreen(wm->dpy);
wm->root = RootWindow(wm->dpy, wm->screen); wm->root = RootWindow(wm->dpy, wm->screen);
@@ -121,7 +121,7 @@ void wm_init(WM *wm) {
if (children) XFree(children); if (children) XFree(children);
XSync(wm->dpy, False); XSync(wm->dpy, False);
fprintf(stderr, "skywm: started\n"); fprintf(stderr, "orionwm: started\n");
} }
void wm_run(WM *wm) { void wm_run(WM *wm) {