博客

iCloud 的 Linux 桌面版

常用网站 · · 约 7 分钟

Apple 没有 Linux 版的 iCloud 应用,第一方的入口只有浏览器里的 iCloud.com。Pake CLI 可以把 www.icloud.com 包成一个独立窗口,有自己的启动器入口和下载目录,构建只要一条命令。它依然是网站,邮件、日历、备忘录这些和网页上一样能用,但不会在后台同步任何东西,所以 Pake 窗口只是让 iCloud.com 用起来像个应用,不会多出文件同步。

Apple 官方提供什么

Apple 的 iCloud 系统要求里列了 iCloud.com 支持的浏览器:Mac 上是 Safari 13.1 或更新、Firefox 128 或更新、Chrome 130 或更新、Opera 或 Edge 130 或更新,PC 上是 Firefox 128 或更新、Chrome 130 或更新(仅桌面模式)或 Edge 130 或更新,页面没有提到 Linux,对其他系统只说部分 Android 设备可以用 iCloud.com,在 macOS、iOS、iPadOS 和 Windows 的受支持浏览器里效果最好。Linux 上的 Pake 窗口跑的是 WebKitGTK,不在这些名单里,所以 Apple 并没有承诺它能用。

Apple 的 iCloud 用户指南在 iCloud.com 一节列出的应用有邮件、日历、通讯录、备忘录、提醒事项、照片、iCloud 云盘、Pages、Numbers、Keynote、Apple Invites、隐藏邮件地址和查找设备,查找在网页上也能用。要同步文件夹,Apple 给的是 iCloud for Windows,Linux 上没有对应的东西。

网页做不到的事

iCloud.com 上的 iCloud 云盘只有上传和下载。Apple 的指南是点上传按钮或把文件拖进窗口,下载则用工具栏的下载按钮,下载的文件放在浏览器设置里指定的位置,本地改过的文件要重新上传,改动才会回到 iCloud。

这就是它和 iCloud for Windows 的差别,后者会把 iCloud 照片放进 C:\Users\[用户名]\Pictures\iCloud Photos\Photos,iCloud 云盘也会出现在文件资源管理器里。Linux 上的 Pake 窗口既没有挂载的云盘文件夹,也没有落在磁盘上的照片库。真要保持文件同步,可以看 rclone 的 iCloud Drive 后端,它能读写 iCloud 云盘,照片只读,文档把它标为 Experimental("expect gaps/changes"),需要用常规的 Apple 账号密码加双重认证,不接受 App 专用密码,信任令牌 30 天后过期,到时要重新连接。

什么时候值得用 Pake 窗口

主要是收邮件、看日历、记备忘录、偶尔取一个文件,一个独立窗口比把 iCloud 埋在三十个浏览器标签页里好找,有启动器入口,切换窗口时有自己的位置,登录状态也是独立的,浏览器自带的「安装为应用」已经够用的话,用它也一样。

准备工作

Pake CLI 需要 Node.js 20.9 或更新、Rust 1.85 或更新,以及你发行版的 WebKitGTK 开发包,清单在 CLI 常见问题里,其余步骤见快速开始,同样的构建和各种包格式在 Linux 上的 ChatGPT 和 Claude 里讲得更细。

构建

npm install -g pake-cli
pake https://www.icloud.com --name iCloud --width 1200 --height 800 --new-window --hide-on-close --download-dir '~/Downloads/iCloud'

--name 设置应用名,Linux 上会转成小写,所以包叫 icloud。--width 和 --height 是窗口起始大小,默认 1200 × 780。--new-window 允许网站打开新窗口,遇到靠弹窗完成的流程时有帮助。--hide-on-close 让关闭按钮隐藏窗口而不是退出,Linux 上它默认是关的。--download-dir 指定下载目录,用绝对路径或加引号的 ~/path,细节见 CLI 选项,目录不存在时会在第一次下载时创建,不加这个参数就下载到系统的下载文件夹。想只出一种包,加 --targets deb、--targets rpm 或 --targets appimage,Arch 上用 --targets zst。第一次构建要编译依赖,需要几分钟。

--multi-window 是另一回事,它在同一个进程里打开额外的窗口,适合把邮件和照片并排放着,文档说它能改善靠弹窗的登录流程,但绕不过服务商自己的限制。

Arch 和 Omarchy 用户

Pake 桌面版不需要 Node.js 和 Rust 就能做出同样的窗口,它支持 x86_64 的 Arch 系发行版比如 Omarchy,用 pacman 安装,见安装。在创建应用里粘贴 www.icloud.com,点从这个网址创建,填上名字,再点创建应用。对应的选项是关闭时隐藏到托盘(打开它会同时打开托盘图标)、多窗口和新窗口在应用内打开。它没有下载目录的设置,下载会进系统的下载文件夹。Ubuntu、Fedora 或其他发行版用 CLI。

底层是怎么工作的

Linux 上 Pake 应用是一个 Tauri 外壳,用系统的 WebKitGTK 绘制页面,没有内置 Chromium。窗口像普通页面一样加载 www.icloud.com,所以每个 iCloud 网页应用都是 Apple 做的样子,登录状态保存在这个应用自己的 WebView 配置里,和你的浏览器互相独立。退出再打开一次,确认它还保持登录,用 --incognito 构建的话每次都会要求重新登录。更完整的说明见 Pake 的工作原理。

登录并确认

打开应用,用 Apple 账号登录。Apple 的登录说明提到可能需要输入发到受信任设备或电话号码的验证码,或者使用安全密钥。然后按顺序测:打开邮件,新建一个日历事件,打开备忘录,往 iCloud 云盘传一个小文件再下载下来,最后打开照片滚动一下。

常见故障

  • 登录页拒绝这个窗口或者一直循环。 Apple 的名单里没有 WebKitGTK 浏览器,所以这有可能发生。--user-agent 可以改变应用对外报告的内容(说明),Pake 在 Linux 上默认发送 Safari 风格的字符串,改字符串不会换引擎,iCloud 仍然拒绝的话,就用 Firefox 或 Chrome。
  • 通行密钥登录。 Apple 的登录说明里也提供通行密钥登录,需要打开 iCloud 钥匙串,并有一台 iOS 17 或 iPadOS 17 以上的 iPhone 或 iPad,在设备上扫二维码完成。Pake 常见问题说 Pake 应用在 macOS 上不能用通行密钥和 Touch ID,没有说 Linux 也一样,所以需要自己测,不行就用密码加双重认证验证码。
  • 高级数据保护。 Apple 说开启它会关闭从 iCloud.com 访问数据,要重新进入,先在设备的 iCloud 设置里打开允许数据访问或在网页上访问 iCloud 数据,登录后在受信任设备上批准,接下来一小时里,你每打开一类新数据,比如照片、备忘录或文件,设备都会自动批准,过了这一小时再打开新的一类就要重新批准,已经打开过的那类在退出登录或关掉会话前都能一直用。健康数据和 iCloud 钥匙串密码根本不在 iCloud.com 上,查找设备仍然可以在 iCloud.com/find 用。
  • 弹窗和下载。 Pake 常见问题说 macOS 和 Linux 上多数登录弹窗会改在当前窗口打开,因为 WebKit 视图遇到它们可能崩溃或悄悄丢掉,这会改变云盘或照片里某些流程的表现,留意窗口跳走后回不来的情况。下载会进 --download-dir 或系统下载文件夹,目录不可写时下载会失败,不会悄悄存到别处。
  • Wayland 下窗口空白或点击没反应。 常见问题建议点击没反应时用 PAKE_LINUX_WEBKIT_SAFE_MODE=0,窗口空白时用 =1。

常见问题

iCloud 有官方的 Linux 应用吗?

Apple 没有,它的页面讲的是浏览器里的 iCloud.com 和 iCloud for Windows,没有 Linux,构建前可以再看一眼 Apple 的系统要求页有没有变化。

iCloud 云盘文件夹会同步吗?

不会。Pake 显示的是网站,网站只有上传和下载,要同步可以看 rclone 的 iCloud Drive 后端,它的文档自己标的是实验性。

能同时用两个 Apple 账号吗?

用另一个名字再构建一个应用,各自保存自己的数据,做法见同一网站用两个账号。