LinPad

fspecii活跃维护

在 iPad 上跑完整 Linux 桌面,用原生窗口管理、平铺和虚拟工作区运行 Firefox、VS Code 等真实 Linux 应用,靠 ARM64 JIT 和 Venus/Metal GPU 加速。

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.

v1.5.0发布于 2026-10-03 18:14 UTC306star +2 / 7 天25fork同步于 2026-11-10 12:02 UTC

怎么上手

由 README 提炼,执行前请确认
export PATH=/opt/homebrew/opt/lld/bin:/opt/homebrew/opt/llvm/bin:$PATH
gpu/build-third-party.sh
release/build-rootfs.sh
硬件要求按 README 说明

需要 Apple Silicon iPad(M1 或更新),开发机为 iPad Air M3、iPadOS 27.2;构建需 Mac 与 Xcode。README 未提及显存要求。

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

在 iPad 上直接跑真实 Linux 桌面,无需越狱或虚拟机,一个 App 搞定

在 iPad 上跑完整 Linux 桌面,用原生窗口管理、平铺和虚拟工作区运行 Firefox、VS Code 等真实 Linux 应用,靠 ARM64 JIT 和 Venus/Metal GPU 加速。

核心能力

  • 用 SwiftUI 原生窗口管理器统一管理 Linux 窗口
  • 内置 Wayland 合成器,Linux GUI 应用以原生窗口显示
  • 原生 ARM64 JIT,比线程解释引擎快约 4.8 倍
  • 通过 Venus→virglrenderer→MoltenVK→Metal 启用 GPU 加速
  • 支持平铺布局、工作区、概览与 Alt-Tab 切换器

容易踩的坑

需自备 Apple 开发者账号侧载,不上架 App Store;构建前需安装 Homebrew 的 llvm、lld、meson、ninja、libarchive、libimobiledevice;VS Code 为微软专有构建,首次使用时在 iPad 上下载,项目不随包分发。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

1 个版本v1.5.0
  1. v1.5.0LinPad 1.5.0最新正式版2026-10-03 · 2026-10-03 18:14 UTC

    LinPad 1.5.0

    LinPad runs a real Alpine Linux desktop on Apple Silicon iPads: Linux apps open as native windows, and there is no VM and no jailbreak. This is an early, pre-1.0-quality release. Expect rough edges, and back up anything important first.

    Install or update

    • SideStore / AltStore: add the source https://raw.githubusercontent.com/fspecii/LinPad/main/release/source.json. LinPad updates from there afterwards.
    • iloader, Sideloadly or Xcode: download LinPad-1.5.0.ipa below. Install it with the same Apple ID as before; that keeps your Linux system and files.
    • Linux system only: Settings › Updates downloads linpad-rootfs-1.5.0.tar.gz and installs it at the next launch. /root, /home and the packages you added are kept. The previous system stays available for rollback.

    Visual Studio Code, Claude Code and the other optional apps are not in the download. Install them on the iPad from Settings › Apps or the LinPad Store.

    New in 1.5.0

    • LinPad Store. Browse about 800 Alpine desktop apps with collections, search, real install progress and updates.
    • Keyboard layouts. Linux apps follow the iPad's keyboard layout, including dead keys, Option as AltGr and the on-screen keyboard's text.
    • Looks and themes. Paired light/dark themes, era looks (Aero, Aqua, Luna, Platinum, Classic, Berry and more), wallpaper matching, and icon packs applied everywhere.
    • Firefox. Fullscreen works and renders at scale 1, which halves the CPU used by fullscreen video. Video and audio are steadier, and memory use is lower.
    • Staying alive on iPadOS.
      • LinPad survives locking the screen, switching apps and being terminated: sessions are restored and unsaved editor text is recovered.
      • A low-memory policy closes the right Linux process before iOS would kill the whole app.
      • The "0xDEAD10CC" kills at suspension are fixed.
    • System tools. Screensaver and idle lock, clipboard history, a sectioned command menu, backup/restore, diagnostics, Repair System, and linpad update / linpad version in a terminal.
    • Hardware bridges. The camera and microphone are available to Linux apps, and Now Playing media controls work through playerctl.
    • Emulator.
      • System V IPC (shared memory, semaphores, message queues) and membarrier.
      • Correct file locking on arm64 and fixed socket edge cases.
      • The CPU interpreter matches real ARM64 on the conformance suite.
    • Linux system. Alpine 3.21 base with Mesa 26.2.4 from edge for the GPU path, CJK and emoji fonts, and FFmpeg decoders for Firefox.

    Experimental

    • Native JIT ("fast mode"). It needs StikDebug, and it has not been verified on every TXM device. Without it LinPad runs in compatibility mode, which is slower.
    • GPU acceleration (Venus/zink on MoltenVK): GL 2.1 / GLES 2.0 only. Firefox stays on software rendering.
    • Optional packs: Wine, Wine x86 (Box64), LibreOffice, the extra browsers and developer extras.
    • VS Code: heavy on memory. Large projects may be closed by iPadOS on 8 GB iPads.

    Known issues

    • Page loads and app launches are much slower than on a real Linux machine, especially without the JIT.
    • After a style switch, Linux apps keep their old theme until they are restarted.
    • A drag of several files to another iPad app carries only the first file.

    Source code (GPL)

    LinPad is GPLv3. linpad-source-1.5.0.tar.gz is the source of this release (also at tag v1.5.0). SOURCES.md and sources-manifest.json list every package in the Linux system with the exact source it was built from, and carry the written offer of source.

    Checksums (SHA-256)

    9e79e12a109a52131177c20caa69180d5b23c989690b80b0670d33125402e3b2  LinPad-1.5.0.ipa
    b5e852cfe2d9763863323895a6f94194ac980b226926a6f6aba27c5f5e41ea9b  linpad-rootfs-1.5.0.tar.gz
    

    Linux system version: 202610031701

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    📸 Screenshots

    Visual Studio CodeVisual Studio Code editing a React and TypeScript projectFirefoxFirefox browsing Wikipedia
    LinPad StoreLinPad Store with Linux apps and developer toolsAqua desktopAqua desktop with files and terminal
    Classic 98 desktopClassic 98 desktopPlatinum desktopPlatinum 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 iPadOSLinPad
    DesktopStage ManagerReal windowed desktop with tiling, snapping, workspaces
    TerminalToy shellsFull Alpine Linux — apk, bash, Node, Python, git
    Code editorWeb-based at bestVisual Studio Code (the real one)
    Browser engineWebKit onlyFirefox + 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 + trackpadPartialRight-click, shortcuts, pointer everywhere
    Cost—Free & open source

    ✨ Features

    🖥️ Native Desktop

    FeatureDescription
    Window managerMove, resize from any edge, snap to halves and quarters, maximize, minimize to the taskbar
    Auto-tilingMaster-stack, columns, grid and monocle layouts — on or off per workspace, float any window
    WorkspacesSwitch with keys or three-finger swipes, drag windows between them in the overview
    Overview & switcherExposé-style overview, ⌥Tab switcher with live thumbnails, taskbar hover previews
    Notification centerHistory, Do Not Disturb, swipe to dismiss
    Quick settingsVolume, brightness, appearance, style, tiling, battery, network, fast mode
    Lock screen & sessionLock, restart the desktop session, session restore on launch

    🎨 Styles & Themes

    FeatureDescription
    Five desktop stylesLinPad, Windows, macOS, Ubuntu, Kylin — each changes the layout, not just colours
    Matching Linux themesGTK & Qt themes, cursors and fonts follow the style (Fluent, WhiteSur, Yaru, UKUI, Adwaita)
    Icon packsPapirus, Fluent, WhiteSur, Yaru, UKUI and more — independent of the style
    Light & darkPer style, or follow iPadOS
    WallpapersPhotos, Files, ~/Pictures, or browse Wallhaven (SFW only) right from the desktop

    🐧 Real Linux

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

    ⚡ Performance

    FeatureDescription
    Native ARM64 JIT≈4.8× faster than the threaded-code engine — tsc 5.4×, Node 12×, vite build 3.5×
    Fast mode in one tapHands off to StikDebug (iPadOS 17.4+) or, for a copy installed with TrollStore (iPadOS 14.0–16.6.1, 16.7 RC, 17.0), to TrollStore at launch and comes back with JIT enabled
    GPU accelerationLinux Vulkan & OpenGL ES on the Apple GPU (Venus → virglrenderer → MoltenVK → Metal)
    FirefoxScrolling at 30–50 fps, URL bar in ~40 ms

    ⌨️ Input & Integration

    FeatureDescription
    Keyboard, trackpad, touchAll first-class; touch-sized controls when no keyboard is attached
    Right-click everywhereDesktop, Files, title bars, taskbar, and inside Linux apps
    Text input for every languageAccents, emoji, dictation, Japanese & Chinese composition — in Linux apps too
    Clipboard & drag-and-dropBetween Linux apps, native apps and iPadOS
    SoundLinux audio plays through iOS
    Files appThunar-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
    
    LayerWhat it does
    EmulatorFork 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)
    ishwlA small Wayland compositor inside Linux; each window's pixels are shared through memory-mapped files, input goes back through FIFOs
    DesktopKitThe native SwiftUI desktop — one window manager for native apps and Linux windows
    GPUA virtio-gpu device in the emulator feeds virglrenderer's Venus renderer, running on MoltenVK and Metal

    ⚡ Quick start

    RequirementSpecification
    iPadApple Silicon (M1 or newer) — developed on an iPad Air M3, iPadOS 27.2
    MacXcode, Homebrew llvm lld meson ninja libarchive, libimobiledevice
    AccountAn Apple developer account (LinPad is sideloaded, not on the App Store)
    OptionalStikDebug + LocalDevVPN for fast mode, or TrollStore 2.0.12+ with its URL scheme turned on
    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 -skipMacroValidation -project iSH.xcodeproj -scheme iSH-ARM64 -configuration Release -destination generic/platform=iOS \
      -allowProvisioningUpdates SYMROOT=$PWD/build-ios-release IPHONEOS_DEPLOYMENT_TARGET=16.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
    
    SideloaderInstallUpdates
    SideStore / AltStoreAdd the source above, then install LinPadOffered by the sideloader, or Settings › Updates › Update via SideStore
    iloader, Sideloadly, XcodeDownload LinPad-<version>.ipa from the releaseInstall the new IPA with the same Apple ID; your Linux system and files are kept
    Inside LinPadWhat it does
    App updatesChecks GitHub at launch and every 6 hours (never on Low Data Mode), shows the release notes and opens your sideloader
    Linux system updatesDownloads 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 packagesapk 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

    ShortcutAction
    ⌃⌥AApplications
    ⌃⌥TNew terminal
    ⌃⌥WClose window
    ⌃⌥MMinimize
    ⌃⌥← ⌃⌥→ ⌃⌥↑Snap left / right / maximize
    ⌃⌥U I J KSnap to quarters
    ⌃⌥⇧TToggle auto-tiling
    ⌃⌥OOverview
    ⌥TabWindow switcher
    ⌃⌥1…9Switch workspace
    ⌘ …Goes to the app (⌘S saves, ⌘W closes a tab, ⌘C/⌘V copy & paste)
    Two-finger clickRight-click
    Three-finger swipeOverview / 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

    LayerTechnologies
    DesktopSwift, SwiftUI, UIKit
    EmulatorC, ARM64 assembly, iSH, meson
    LinuxAlpine Linux 3.21, Mesa (Venus/Zink), PulseAudio, GTK, Qt
    GraphicsWayland, 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.