Skip to content

OblivionOS/phone

Repository files navigation

OblivionOS Phone

A Linux From Scratch (LFS) based mobile distribution inspired by Android's approach but with an iOS-like interface.

Overview

This project aims to build a custom Linux distribution from scratch, tailored for mobile devices. It combines the flexibility of LFS with mobile-specific features like touchscreen support, gesture-based navigation, and a clean, intuitive user interface reminiscent of iOS.

Features

  • LFS Base: Built entirely from source using Linux From Scratch methodology
  • Mobile Kernel: Linux kernel configured with touchscreen, sensors, and mobile hardware support
  • Graphical Stack: Wayland-based display server with touchscreen drivers
  • iOS-like UI: Custom user interface with launcher, gestures, and modern design
  • Mobile Apps: Integrated applications optimized for touch interaction
  • Package Management: System for managing software packages

Project Structure

  • sources/: Downloaded source packages for LFS build
  • tools/: Build tools and scripts
  • ui/: TypeScript-based user interface (React)
  • apps/: Mobile applications
  • config/: Configuration files for kernel, initramfs, etc.

Building

  1. Follow the LFS guide to build the base system
  2. Configure the kernel with mobile features
  3. Install graphical stack and drivers
  4. Build and install the custom UI
  5. Integrate mobile applications

User Interface

The system features an authentic iOS-like interface that replicates Apple's design language with pixel-perfect accuracy:

Authentic iOS Features

  • Status Bar: Carrier name, real-time clock, signal/wifi/battery indicators (iOS 15+ style)
  • Home Screen: 4x6 app grid (24 apps per page) with multiple pages
  • Page Navigation: Swipe gestures to navigate between pages with page indicators
  • Dock: 4 favorite apps with notification badges and spring animations
  • Control Strip: Bottom strip with Notification Center, Control Center, and App Switcher access
  • Notification Center: Pull-down notification panel with message previews
  • Control Center: Quick toggles for WiFi, Bluetooth, brightness, volume, etc.
  • App Switcher: Card-based multitasking interface for open applications
  • Window Management: Full desktop windowing with drag, minimize, maximize, close
  • Animations: Authentic iOS spring animations, bounce effects, and micro-interactions

iOS Design Language

  • Typography: SF Pro Display simulation with Inter font
  • Colors: Authentic iOS color palette with proper contrast ratios
  • Blur Effects: Backdrop filters and glass morphism throughout
  • Rounded Corners: Consistent 16px border radius for app icons, 20px for panels
  • Shadows: Subtle depth with proper elevation hierarchy
  • Spacing: Apple's 8px grid system and proper margins
  • Gestures: Touch-first interactions with swipe navigation

Running the Interface

cd ui
./start.sh

This will start a development server at http://localhost:3000.

Interface Components

  • Status Bar: Carrier, time, signal, WiFi, battery (iOS 15+ design)
  • App Grid: 4x6 layout with 24 apps per page, multiple pages support
  • Page Indicators: Dots showing current page and total pages
  • Dock: 4 apps with notification badges and spring hover effects
  • Control Strip: Bottom access to system controls
  • Notification Center: Full-featured notification management
  • Control Center: System toggles and sliders
  • App Switcher: iOS-style card-based multitasking
  • Window Manager: Desktop-quality window management
  • Animations: Pixel-perfect iOS spring animations

Technical Stack

  • React 18: Component-based UI with hooks for state management
  • Express.js: REST API for system integration and app launching
  • Touch Gestures: Custom touch event handling for swipe navigation
  • CSS Animations: Hardware-accelerated animations with cubic-bezier curves
  • Responsive Design: Mobile-first with proper viewport handling
  • Webpack: Optimized bundling with code splitting
  • Babel: Modern JavaScript transpilation for broad compatibility
  • Wayland: Display server integration for native window management

Installation

Complete System Installation

For a full system installation with kernel integration:

# Run the complete installation script
sudo ./install.sh

This will:

  • Install the interface to /usr/share/oblivionos/
  • Configure Wayland integration
  • Create system user and services
  • Set up systemd service for auto-start

Manual Installation

  1. Build the interface:

    cd ui
    npm install
    npm run build
  2. Configure Wayland:

    sudo ./config/wayland-setup.sh
  3. Start the server:

    cd ui
    node server.js

Testing

Window Management Demo

./demo-windows.sh

This demonstrates the window management capabilities with drag-and-drop, minimize/maximize, and multiple window support.

QEMU Testing

Use QEMU to emulate mobile hardware for testing the complete distribution:

qemu-system-x86_64 \
  -kernel linux-6.16.1 \
  -initrd initramfs.img \
  -append "console=ttyS0 root=/dev/sda1" \
  -drive file=oblivionos.img,if=virtio \
  -net nic -net user \
  -m 2G

Contributing

Contributions are welcome! Please see the issues for current tasks and feature requests.