8000 GitHub - longtianxp/linpad: LinPad — Linux for iPad. A real Linux desktop on the iPad: native windowed desktop with tiling and workspaces, real Linux apps (Firefox, VS Code, Thunar, VLC) as native windows, ARM64 JIT, GPU via Venus/Metal, keyboard + trackpad + touch. · GitHub
[go: up one dir, main page]

Skip to content
longtianxpPublic
forked from fspecii/LinPad

About

LinPad — Linux for iPad. A real Linux desktop on the iPad: native windowed desktop with tiling and workspaces, real Linux apps (Firefox, VS Code, Thunar, VLC) as native windows, ARM64 JIT, GPU via Venus/Metal, keyboard + trackpad + touch.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

 
 

Latest commit

 

History

4,430 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LinPad

LinPad — Linux for iPad

A real Linux desktop on your iPad
Windows, tiling, 8000 workspaces and real Linux apps — Firefox, VS Code, Thunar, VLC, Node, git, Claude Code — running on the iPad itself. No VM. No jailbreak. One app.

Subscribe on YouTube Follow on X linpados.com valineagu.com

Screenshots • Why LinPad • Features • How it works • Quick start • Install & updates • Shortcuts • Roadmap

iPadOS 17+ Apple Silicon Alpine Linux SwiftUI Wayland Vulkan GPLv3


📸 Screenshots

LinPad OS Dot Matrix desktop with the file manager and foot terminal

LinPad OS with the monochrome Dot Matrix desktop. Development captures from the iPad simulator.

Visual Studio Code
Visual Studio Code editing a React and TypeScript project
Firefox
Firefox browsing Wikipedia
LinPad Store
LinPad Store with Linux apps and developer tools
Aqua desktop
Aqua desktop with files and terminal
Classic 98 desktop
Classic 98 desktop
Platinum desktop
Platinum desktop

🚀 Why LinPad?

The iPad Air M3 is as fast as a MacBook Air. Put a Logitech keyboard with a trackpad on it and it looks like a laptop — but it can't do laptop things. No real terminal. No VS Code. No Linux tools. A powerful machine that ends up as a Netflix screen.

LinPad turns it into the computer the hardware already is.

Stock iPadOS LinPad
Desktop Stage Manager Real windowed desktop with tiling, snapping, workspaces
Terminal Toy shells Full Alpine Linux — apk, bash, Node, Python, git
Code editor Web-based at best Visual Studio Code (the real one)
Browser engine WebKit only Firefox + Safari's engine side by side
Linux GUI apps ❌ Thunar, Mousepad, VLC, GTK & Qt apps
AI coding ❌ Claude Code in the terminal and VS Code
Keyboard + trackpad Partial Right-click, shortcuts, pointer everywhere
Cost — Free & open source

✨ Features

🖥️ Native Desktop

Feature Description
Window manager Move, resize from any edge, snap to halves and quarters, maximize, minimize to the taskbar
Auto-tiling Master-stack, columns, grid and monocle layouts — on or off per workspace, float any window
Workspaces Switch with keys or three-finger swipes, drag windows between them in the overview
Overview & switcher Exposé-style overview, ⌥Tab switcher with live thumbnails, taskbar hover previews
Notification center History, Do Not Disturb, swipe to dismiss
Quick settings Volume, brightness, appearance, style, tiling, battery, network, fast mode
Lock screen & session Lock, restart the desktop session, session restore on launch

🎨 Styles & Themes

Feature Description
Five desktop styles LinPad, Windows, macOS, Ubuntu, Kylin — each changes the layout, not just colours
Matching Linux themes GTK & Qt themes, cursors and fonts follow the style (Fluent, WhiteSur, Yaru, UKUI, Adwaita)
Icon packs Papirus, Fluent, WhiteSur, Yaru, UKUI and more — independent of the style
Light & dark Per style, or follow iPadOS
Wallpapers Photos, Files, ~/Pictures, or browse Wallhaven (SFW only) right from the desktop

🐧 Real Linux

Feature Description
Alpine Linux 3.21 Unmodified aarch64 binaries, full apk package manager
Linux GUI apps as native windows Built-in Wayland compositor — every Linux window is a real iPad window
Firefox The real thing, tuned for LinPad
Visual Studio Code Microsoft's official build, installed on first use, with extensions & the integrated terminal
Developer tools Node 22, npm, git, Python, Vite with hot reload, TypeScript, Claude Code
Lean by design Optional apps — mail, PDF viewer, office, image editor, VLC — are ticked by you, never preinstalled

⚡ Performance

Feature Description
Native ARM64 JIT ≈4.8× faster than the threaded-code engine — tsc 5.4×, Node 12×, vite build 3.5×
Fast mode in one tap Hands off to StikDebug at launch and comes back with JIT enabled
GPU acceleration Linux Vulkan & OpenGL ES on the Apple GPU (Venus → virglrenderer → MoltenVK → Metal)
Firefox Scrolling at 30–50 fps, URL bar in ~40 ms

⌨️ Input & Integration

Feature Description
Keyboard, trackpad, touch All first-class; touch-sized controls when no keyboard is attached
Right-click everywhere Desktop, Files, title bars, taskbar, and inside Linux apps
Text input for every language Accents, emoji, dictation, Japanese & Chinese composition — in Linux apps too
Clipboard & drag-and-drop Between Linux apps, native apps and iPadOS
Sound Linux audio plays through iOS
Files app Thunar-style manager with Trash, Open With, Properties, desktop as a real folder

🧠 How it works

LinPad does not run a virtual machine and needs no jailbreak — it is one iPad app.

flowchart TB
    subgraph app["LinPad app (one iOS process)"]
        desk["DesktopKit — SwiftUI desktop shell<br/>windows · tiling · workspaces · styles · apps"]
        bridge["Linux window bridge<br/>frames · input · clipboard · DnD · text input"]
        audio["Audio bridge → AVAudioEngine"]
        gpu["virglrenderer + MoltenVK → Metal"]
        emu["iSH-ARM64 emulator<br/>Linux syscall translation · ARM64 JIT"]
    end
    subgraph guest["Alpine Linux (aarch64)"]
        apps["Firefox · VS Code · Thunar · VLC · foot · node · git · claude"]
        ishwl["ishwl — Wayland compositor"]
        pulse["PulseAudio"]
        mesa["Mesa Venus / Zink"]
    end
    apps --> ishwl --> bridge --> desk
    apps --> pulse --> audio
    apps --> mesa --> gpu
    guest -. "runs on" .-> emu
Loading
Layer What it does
Emulator Fork of iSH / iSH-ARM64: translates Linux system calls to iOS; LinPad adds a native ARM64 JIT and dozens of kernel fixes (signals, sockets, memory, inotify, netlink, futexes, memfd, virtio-gpu)
ishwl A small Wayland compositor inside Linux; each window's pixels are shared through memory-mapped files, input goes back through FIFOs
DesktopKit The native SwiftUI desktop — one window manager for native apps and Linux windows
GPU A virtio-gpu device in the emulator feeds virglrenderer's Venus renderer, running on MoltenVK and Metal

⚡ Quick start

Requirement Specification
iPad Apple Silicon (M1 or newer) — developed on an iPad Air M3, iPadOS 27.2
Mac Xcode, Homebrew llvm lld meson ninja libarchive, libimobiledevice
Account An Apple developer account (LinPad is sideloaded, not on the App Store)
Optional StikDebug + LocalDevVPN for fast mode
export PATH=/opt/homebrew/opt/lld/bin:/opt/homebrew/opt/llvm/bin:$PATH

gpu/build-third-party.sh          # virglrenderer + MoltenVK (once)
release/build-rootfs.sh           # the Alpine system image (~50 min)

xcodebuild -project iSH.xcodeproj -target iSH-ARM64 -configuration Release -sdk iphoneos \
  -allowProvisioningUpdates SYMROOT=$PWD/build-ios-release IPHONEOS_DEPLOYMENT_TARGET=17.0 \
  DEVELOPMENT_TEAM=<your team> ISH_JIT_BUILD=enabled build

release/embed-rootfs.sh --device "build-ios-release/Release-iphoneos/iSH ARM64.app" \
  release/out/ish-linux-rootfs-arm64.tar.gz
ideviceinstaller install "build-ios-release/Release-iphoneos/iSH ARM64.app"

Full guide: release/INSTALL-DEVICE.md

Visual Studio Code is Microsoft's proprietary build. It is downloaded on your iPad when you choose to install it and is never redistributed by this project.


📲 Install & updates

LinPad is sideloaded with your own Apple ID. Each release has an IPA, and SideStore and AltStore can follow the LinPad source:

https://raw.githubusercontent.com/fspecii/LinPad/main/release/source.json
Sideloader Install Updates
SideStore / AltStore Add the source above, then install LinPad Offered by the sideloader, or Settings › Updates › Update via SideStore
iloader, Sideloadly, Xcode Download LinPad-<version>.ipa from the release Install the new IPA with the same Apple ID; your Linux system and files are kept
Inside LinPad What it does
App updates Checks GitHub at launch and every 6 hours (never on Low Data Mode), shows the release notes and opens your sideloader
Linux system updates Downloads the new system in the background, verifies its SHA-256 and installs it at the next launch — /root, /home and your packages are kept
Linux packages apk upgrade with one tap, weekly check

Cutting a release: release/RELEASING.md

Releases contain only redistributable software. Visual Studio Code and Claude Code are installed on your iPad from Settings › Apps when you choose them.


⌨️ Keyboard & trackpad

Shortcut Action
⌃⌥A Applications
⌃⌥T New terminal
⌃⌥W Close window
⌃⌥M Minimize
⌃⌥← ⌃⌥→ ⌃⌥↑ Snap left / right / maximize
⌃⌥U I J K Snap to quarters
⌃⌥⇧T Toggle auto-tiling
⌃⌥O Overview
⌥Tab Window switcher
⌃⌥1…9 Switch workspace
⌘ … Goes to the app (⌘S saves, ⌘W closes a tab, ⌘C/⌘V copy & paste)
Two-finger click Right-click
Three-finger swipe Overview / switch workspace

🗺️ Roadmap

  • Native desktop with tiling, snapping, workspaces, five styles
  • Real Firefox, VS Code, Thunar, VLC as native windows
  • Native ARM64 JIT with one-tap fast mode
  • GPU acceleration via Venus → Metal
  • Wallhaven wallpapers, icon packs, notification center
  • Optional app catalog: mail client, PDF viewer, office, image editor (tick to install)
  • iPad Files & Photos access from Linux
  • Quick Look with Space, like macOS
  • Faster Firefox page loads, lower memory

💻 Tech stack

Layer Technologies
Desktop Swift, SwiftUI, UIKit
Emulator C, ARM64 assembly, iSH, meson
Linux Alpine Linux 3.21, Mesa (Venus/Zink), PulseAudio, GTK, Qt
Graphics Wayland, virglrenderer, MoltenVK, Metal

👤 About the Author

LinPad is built and maintained by Vali Neagu (valineagu.com · @AmbsdOP on X · fspecii on GitHub).

I bought an iPad Air M3, attached a Logitech keyboard with a trackpad, and realised I owned a laptop-class machine that couldn't run a terminal, an editor or a real browser. LinPad is the fix.


🙏 Credits

  • iSH — the Linux shell for iOS that started it all
  • iSH-ARM64 — the native ARM64 guest backend LinPad builds on
  • Alpine Linux — the lightweight Linux underneath
  • Mesa, virglrenderer, MoltenVK — the GPU path
  • StikDebug — JIT on modern iPadOS
  • Wallhaven — wallpapers
  • The open-source themes and icon packs in themes/, each under its own license

📄 License

LinPad is licensed under the GPLv3, like iSH — see LICENSE.md. The original iSH README is kept at docs/README-iSH.md.

Source code for releases. Each release attaches linpad-source-<version>.tar.gz (this repository at the release tag) and SOURCES.md / sources-manifest.json, which list every package in the bundled Linux system with the exact source it was built from: the Alpine aports commit of each package, the Debian and Ubuntu theme source packages, and the pinned theme and icon repositories. SOURCES.md also carries the written offer of source for the GPL and LGPL components.


⭐ If LinPad turned your iPad into a real computer, please star this repo! ⭐

Made with ❤️ for everyone whose iPad deserves more than Netflix

Stop using your iPad as a TV. Start using it as a computer.

About

LinPad — Linux for iPad. A real Linux desktop on the iPad: native windowed desktop with tiling and workspaces, real Linux apps (Firefox, VS Code, Thunar, VLC) as native windows, ARM64 JIT, GPU via Venus/Metal, keyboard + trackpad + touch.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

0