170 lines
4.6 KiB
Markdown
170 lines
4.6 KiB
Markdown
# SkyOS
|
||
|
||
A BeOS-inspired Linux desktop built from scratch in C. Custom window manager, deskbar, launcher, GTK theme, and graphical installer — all running on Arch Linux with a bootable ISO.
|
||
|
||

|
||
|
||
---
|
||
|
||
## What it is
|
||
|
||
SkyOS is a complete desktop environment built on X11/Xlib with a distinctive dark blue aesthetic. It ships as a bootable ISO you can try live or install to disk.
|
||
|
||
**Components**
|
||
|
||
| Component | Description |
|
||
|-----------|-------------|
|
||
| `skywm` | Stacking window manager — titlebars, 3-button close/maximize/minimize, snap-to-edge, double-click maximize |
|
||
| `skydeskbar` | Sidebar panel — clock, date, task list, CPU/RAM/battery status |
|
||
| `skylauncher` | App launcher — keyboard-driven grid of application shortcuts |
|
||
| `skyinstall-gui` | Graphical installer wizard — disk selection, user setup, live progress |
|
||
| `SkyOS GTK theme` | Matching dark theme for GTK 2/3 apps |
|
||
|
||
---
|
||
|
||
## Building the ISO
|
||
|
||
**Requirements:** Docker Desktop (Mac/Windows/Linux)
|
||
|
||
```bash
|
||
./build-iso.sh
|
||
```
|
||
|
||
Output: `dist/skyos-YYYYMMDD.iso`
|
||
|
||
The build runs entirely inside a Docker container — no Arch Linux install required on the host. First build downloads ~600 MB of packages and takes 10–20 minutes. Subsequent builds are fast thanks to Docker layer caching.
|
||
|
||
### What the build does
|
||
|
||
1. Starts from the official `archlinux:latest` Docker image
|
||
2. Installs `archiso` and build tools
|
||
3. Builds the SkyOS binaries (`skywm`, `skydeskbar`, `skylauncher`, `skyinstall-gui`)
|
||
4. Assembles an archiso profile with the full package set
|
||
5. Produces a hybrid ISO that boots on both UEFI and legacy BIOS hardware
|
||
|
||
---
|
||
|
||
## Flashing to USB
|
||
|
||
**Balena Etcher (recommended):** https://etcher.balena.io — drag the ISO, pick the USB, flash.
|
||
|
||
**Command line (Mac/Linux):**
|
||
```bash
|
||
# Find your USB drive first
|
||
diskutil list # macOS
|
||
lsblk # Linux
|
||
|
||
# Flash (replace diskN / sdX)
|
||
sudo dd if=dist/skyos-*.iso of=/dev/diskN bs=4m # macOS
|
||
sudo dd if=dist/skyos-*.iso of=/dev/sdX bs=4M # Linux
|
||
```
|
||
|
||
---
|
||
|
||
## Booting
|
||
|
||
Boot from the USB. SkyOS starts the live desktop automatically — no login required (user: `sky`, password: `skyos`).
|
||
|
||
**Intel Mac notes:**
|
||
- Hold `Option` at startup to select the USB boot device
|
||
- WiFi uses the `broadcom-wl` driver (loaded automatically)
|
||
- Trackpad: tap-to-click and two-finger scroll are enabled by default
|
||
- Audio uses PipeWire + SOF firmware for Intel HDA
|
||
|
||
---
|
||
|
||
## Installing to disk
|
||
|
||
Click **Install SkyOS** in the launcher, or run `sudo skyinstall-gui` from a terminal.
|
||
|
||
The graphical installer walks through:
|
||
|
||
1. Disk selection (shows all disks ≥ 4 GB with model and size)
|
||
2. Hostname, username, and password
|
||
3. Review screen with erase warning
|
||
4. Live installation with progress bar and log
|
||
5. Reboot
|
||
|
||
The installer auto-detects UEFI vs legacy BIOS and sets up the appropriate bootloader (`systemd-boot` for UEFI, `GRUB` for BIOS).
|
||
|
||
---
|
||
|
||
## Included software
|
||
|
||
| Category | Applications |
|
||
|----------|-------------|
|
||
| Browser | Firefox |
|
||
| Office | OnlyOffice |
|
||
| Files | Thunar |
|
||
| Terminal | XTerm |
|
||
| Video | mpv |
|
||
| Images | Viewnior |
|
||
| PDF | Evince |
|
||
| Text editor | Mousepad |
|
||
| Audio | PipeWire, pavucontrol |
|
||
| Network | NetworkManager, nm-applet |
|
||
| Bluetooth | bluez, blueman |
|
||
| Compositor | picom (GLX, xrender fallback) |
|
||
| Notifications | dunst |
|
||
|
||
---
|
||
|
||
## Building from source (without Docker)
|
||
|
||
Requires an Arch Linux system with `libx11`, `libxft`, `fontconfig` development headers.
|
||
|
||
```bash
|
||
make # build all components
|
||
make install # install to /usr/local (run as root)
|
||
```
|
||
|
||
Individual components:
|
||
|
||
```bash
|
||
make -C wm # skywm
|
||
make -C deskbar # skydeskbar
|
||
make -C launcher # skylauncher
|
||
make -C installer # skyinstall-gui
|
||
```
|
||
|
||
---
|
||
|
||
## Project layout
|
||
|
||
```
|
||
OS/
|
||
├── wm/ skywm window manager (C/Xlib)
|
||
├── deskbar/ skydeskbar panel (C/Xlib/Xft)
|
||
├── launcher/ skylauncher app grid (C/Xlib/Xft)
|
||
├── installer/ skyinstall-gui + skyinstall backend
|
||
├── themes/
|
||
│ ├── SkyOS/ GTK 2/3 theme
|
||
│ ├── picom.conf compositor config
|
||
│ └── skywallpaper wallpaper setter
|
||
├── iso/
|
||
│ └── docker/ Dockerfile + entrypoint.sh (ISO builder)
|
||
├── build-iso.sh one-command ISO build script
|
||
└── Makefile
|
||
```
|
||
|
||
---
|
||
|
||
## Keyboard shortcuts
|
||
|
||
| Shortcut | Action |
|
||
|----------|--------|
|
||
| `Alt + F1` | Open launcher |
|
||
| `Alt + F4` | Close window |
|
||
| `Alt + F10` | Toggle maximize |
|
||
| `Super + ←` | Snap window left |
|
||
| `Super + →` | Snap window right |
|
||
| `Alt + drag` | Move window |
|
||
| `XF86MonBrightness↑↓` | Screen brightness |
|
||
| `XF86Audio*` | Volume / mute |
|
||
|
||
---
|
||
|
||
## License
|
||
|
||
MIT
|