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:
1 parent
803ffe991f
commit
61fa1194db
20 files changed
+452
-160
No files matched your search
+5
-5
@@ -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
|
||||||
@@ -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
@@ -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
@@ -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)
|
||||||
|
|||||||
@@ -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 */
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
@@ -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
@@ -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
@@ -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)
|
||||||
|
|||||||
@@ -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
@@ -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;
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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) {
|
||||||
|
|||||||
Reference in new issue
Block a user