Pre-releaseFree and open source · GPLv3iPad with M1 or newer

A real Linux desktop
on your iPad.

Firefox, VS Code, a tiling window manager and the whole Alpine Linux package archive, running on the iPad itself. No VM. No jailbreak. One app.

The first public build is being prepared. Screenshots are from development builds in the iPad simulator.

LinPad desktop on an iPad: Firefox showing the LinPad GitHub page, a terminal and the Files app tiled side by side
Firefox, a terminal and Files, tiled side by side. Demo video coming with v1.0.

Apps that run on LinPad

firefoxcodethunarfootnode 22gitpython3vitevlcgimpbtopclaudeapk add …
How it works

Linux programs, iPad windows. One process.

LinPad is a single iPad app. It runs real ARM64 Linux binaries by translating their system calls to iPadOS, and it shows their windows as native windows next to its own.

Usermode Linux, not a VM

A fork of iSH and iSH-ARM64 runs unmodified aarch64 programs and implements the Linux kernel interface they expect: processes, signals, sockets, futexes, memfd, inotify, netlink.

A Wayland bridge

ishwl is a small Wayland compositor inside Linux. Each window's pixels are shared through memory-mapped files and handed to the native desktop, which sends input, text and clipboard back.

A native desktop

DesktopKit is a SwiftUI shell with one window manager for native apps and Linux windows: tiling, workspaces, overview, themes and the command menu.

A GPU path experimental

A virtio-gpu device feeds virglrenderer's Venus renderer, which runs on MoltenVK and Metal. Firefox still renders in software.

Features

The computer the iPad hardware already is

An M-series iPad with a keyboard and trackpad is a laptop in everything but software. LinPad fills that gap.

A native desktop

Windows you move, resize from any edge, snap, minimise and pin on top. Workspaces, an overview, a window switcher, a notification centre and a lock screen. Written in SwiftUI, so it feels like an iPad app, because it is one.

Tiling when you want it

Master-stack, columns, grid and monocle layouts, on or off per workspace. Float any window. Gaps, borders and rounding per theme, or turn them all off with one chord.

⌘K for everything

One fuzzy menu for windows, apps, commands, toggles, themes and looks, plus repair and reset. ⌘/ shows every shortcut. Desktop chords live on ⌃⌥ so ⌘ stays with your apps.

Themes that reach the apps

20 colour palettes from the Omarchy community plus era looks. A theme recolours the shell, the terminal, btop, GTK and Qt apps, VS Code and Firefox together.

Real Linux apps

Firefox, Visual Studio Code (Microsoft's build, downloaded on your iPad when you ask for it), Thunar, Mousepad, VLC and GIMP. Unmodified aarch64 Alpine Linux binaries with the full apk archive behind them.

A catalog, not bloat

The base system stays lean. Mail, PDF, office, image tools, media, extra browsers and developer toolchains are packs you tick in Settings › Apps.

Fast mode needs StikDebug

Hands off to StikDebug at launch and comes back with a native ARM64 JIT. About 4.8× faster than the interpreter in our Mac benchmarks; iPad numbers will be published once measured.

GPU path experimental

Linux Vulkan through Mesa Venus, a virtio-gpu device, virglrenderer and MoltenVK onto Metal. OpenGL through zink tops out at GL 2.1 today.

Windows apps via Wine experimental

ARM64 Windows programs like Notepad++, 7-Zip and PuTTY run in Wine 10. x86 programs work through Box64, slowly and with a big memory cost. Not for games.

Plays well with iPadOS

Clipboard and drag and drop both ways, iPad folders mounted into Linux, Quick Look on Space, text input for every language including CJK composition, and Linux audio through iOS.

Repair and updates

App updates through your sideloader. Linux system updates download in the background, are SHA-256 verified and keep /root and /home. Repair re-applies LinPad's files when a package upgrade breaks something.

Made to be shown

Screenshots of the screen, an area or a window, and screen recording, all from the keyboard. Share a theme or a whole look as a linpad:// link.

Screenshots

The real apps, as iPad windows

Visual Studio Code editing a TypeScript project with its integrated terminal
Visual Studio CodeA TypeScript project with git and the integrated terminal.
The foot terminal running fastfetch on Alpine Linux
foot and fastfetchAlpine Linux 3.21 with the full apk archive.
The keyboard-first tiling layout with gaps and borders
Keyboard-first tilingGaps, borders and a top bar, all themeable.
Workspace overview with live window thumbnails
Workspaces and overviewSwitch with keys or a three-finger swipe.
Themes

From Tokyo Night to the late 90s

Colour palettes compatible with Omarchy community themes, retro era looks with matching Linux app themes, icon packs, wallpapers and 14 desktop layouts. Mix them, then share the result as a link.

The Luna desktop look in LinPad
LunaInspired by the XP era: a blue taskbar, a green start button and rolling hills.
The Aero desktop look in LinPad
AeroInspired by the late-2000s glass era: glass title bars and a light glass taskbar.
The Aero Night desktop look in LinPad
Aero NightThe glass era after dark: glass windows over a black taskbar.
The Classic 98 desktop look in LinPad
Classic 98Inspired by the late-90s desktop: grey bevels, navy title bars, a teal backdrop.

Browse all themes

Honest limits

What LinPad is not, yet

  • Not on the App Store. You sideload it with your own Apple ID. A free Apple ID needs a refresh every 7 days, which SideStore can do for you.
  • Emulated, so heavier apps are slow. Without fast mode everything runs on an interpreter. Heavy web pages in Firefox can take many seconds to load.
  • Memory is the ceiling. VS Code alone wants about 2 GB or more. Running it with Firefox on an 8 GB iPad is the edge today.
  • US keyboard layout in Linux apps for now. Other layouts are the top item on the input backlog.
  • No Docker, no Steam, no x86 games. There are no namespaces or cgroups, and the GL path stops at 2.1.
  • Not yet measured on an iPad. Performance figures on this site come from a Mac or the simulator and are labelled that way. Device numbers come with v1.0.
Get started

Three steps once v1.0 ships

Add the source

Add the LinPad source to SideStore or AltStore, or download the IPA from GitHub Releases.

Install and open

LinPad unpacks its Linux system on first launch and walks you through a short setup.

Optional: fast mode

Set up StikDebug and LocalDevVPN once for the native JIT.

Read the full install guide →

LinPad first-run screen: Your iPad is a computer now
First launchSetup takes a couple of minutes, then you are at a desktop.
Join in

Built in the open by one developer, for now

LinPad is a full-time project. It needs testers with iPads, people who know emulators, Wayland or SwiftUI, theme makers, and sponsors who want it to exist.

Contribute

Good first issues are labelled, most work does not need an iPad, and themes are the easiest way in.

How to contribute

Support the project

Sponsorships pay for test iPads, the Apple developer account and the time to keep shipping.

Support LinPad