# 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. ![SkyOS Desktop](docs/screenshot.png) --- ## 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