给 YouTube 做一个桌面应用
Google 的 YouTube 帮助页把电脑上的观看方式写成浏览器,几页都没有提到 Mac、Windows 或 Linux 的下载,所以官方的桌面路线其实就是网站本身,Chrome 和 Edge 可以把它安装成应用。Pake 应用做的是同一件事,给 YouTube 一个独立窗口,再加上置顶、关闭后常驻后台这些选项,但它仍然是系统 WebView 里的 youtube.com,有几项功能要先测一遍再依赖。
Google 和浏览器提供什么
YouTube 自己的帮助页把电脑当成浏览器来讲,Premium 下载页写的是登录 Premium 账号后,可以在电脑上用 Chrome、Edge、Firefox 和 Opera 下载视频,影视购买页写的是买来或租来的片子在支持 HTML5 播放的网页浏览器里看,同样的页面还列了手机、电视和游戏机,没有一页提到桌面应用,以上截至 2026 年 11 月。
Google 和微软文档里写明的路线是把网站安装成应用。Chrome 里打开 youtube.com,点更多菜单,选 Cast, save, and share(投放、保存和分享),再选 Install page as app...(安装页面为应用),Chrome 帮助页还说有些网站会在地址栏右端显示安装图标。Edge 按微软的页面,依次选 Settings and more ...、More tools、Apps、Install this site as an app,再到 edge://apps 里固定到任务栏。这两种应用都留在浏览器自己的引擎、配置和登录里,这是选它们的主要理由,两类应用的一般差别见 PWA 和桌面应用。
什么时候值得用 Pake 窗口
想让 YouTube 的窗口和浏览器分开,大小自己定,能放在其他窗口上面,关掉窗口后应用还在运行,这时候 Pake 合适。它不会给 YouTube 添加网页版没有的东西,播放器和 Premium 权益都是网页版的,广告也是 YouTube 的,Pake 不会屏蔽。浏览器的应用已经够用就直接用它。YouTube Music 是另一个站点,表现也不同,见 YouTube Music 桌面应用。
用 Pake 桌面版做
YouTube 在精选的影音分类里,在创建页的粘贴网址或搜索下面应用开始创建里输入名字,或者直接粘贴 https://www.youtube.com,再点创建应用。精选里的这一项只带了网址、名字、图标和介绍,没有 CSS 或 JavaScript,所以从 Pake 的默认值开始,每个选项见创建应用,精选页面的说明见精选。
看视频时有两个选项管用,窗口外观下的始终置顶让小窗口一直在其他窗口上面,运行偏好下的常驻后台让关闭窗口后应用继续运行,Mac 上默认开,Windows 上默认关,开启时也会打开托盘图标,之后可以在我的应用里点编辑再保存修改。桌面版支持 macOS 14 或更新、Windows x64 和 ARM64,以及 x86_64 的 Arch 系 Linux(比如 Omarchy),见安装,其他 Linux 发行版用下面的 CLI。
用 CLI 做
先配置好 CLI,它需要 Node.js 20.9 或更新、Rust 1.85 或更新:
npm install -g pake-cli
pake https://www.youtube.com --name YouTube
想要比默认 1200 × 780 更大的起始窗口就加 --width 1400 --height 900,想做角落里的小播放器就用 --always-on-top 配小一点的尺寸,做法见置顶网页应用。Windows 和 Linux 上加 --hide-on-close 与 --show-system-tray 才能在关窗口后继续运行,Mac 上 --hide-on-close 本来就是默认。网页应用默认会回到上次打开的页面,想每次都从首页开始就加 --no-restore-last-url。Linux 上 CLI 按发行版构建 .AppImage 加 .deb 或 .rpm,Arch 可以用 --targets zst 打成 Arch 包,第一次构建要编译依赖,需要几分钟,全部选项见 CLI 选项。
全屏和画中画
Pake 自带窗口级全屏,Mac 上是 Ctrl Cmd F,Windows 和 Linux 上是 F11,双击标题栏也一样。YouTube 自己的全屏按钮在 Pake 3.17.8 里按系统分开处理,Windows 把请求交给 WebView2 原生的全屏,视频保留播放器控件;Mac 和 Linux 由注入的脚本把请求变成窗口的原生全屏,再把被请求的元素连同播放器控件一起铺在页面上面。每个系统上都把全屏按钮和退出方式(Esc 或同一个快捷键)试一次。
画中画要小心,Pake 的文档和代码里都没有它,Premium 权益页也只在 iOS 和 Android 上描述画中画。系统 WebView 里能不能弹出悬浮的视频窗口取决于引擎,所以右键点视频,看有没有画中画的条目,试一次。没有的话,--always-on-top 加小窗口是 Pake 自己能给的替代,区别是它显示的是整个页面。
底层是怎么工作的
Pake 应用是一个 Tauri 外壳,用系统的 WebView 绘制页面,Mac 上是 WKWebView,Windows 上是 WebView2,Linux 上是 WebKitGTK,细节见 Pake 的工作原理和 WebView2 是什么。它没有内置 Chromium,所以视频编码、硬件解码和版权保护都跟着系统提供的那一套走,同一个网站在三个系统上会表现不同。
Linux 上默认 User Agent 是 Safari 风格的字符串,WebKitGTK 2.52 或更新时,Pake 常见问题说它改用共享内存渲染,保住视频需要的硬件加速,旧版本继续用兼容标志。视频卡顿时先看 WebKitGTK 的版本,再看常见问题里的 PAKE_LINUX_WEBKIT_SAFE_MODE,点击没反应用 =0,窗口空白用 =1。
用 Google 账号登录
YouTube 的账号就是 Google 账号,Google 的 OAuth 政策要求应用不能把它的登录请求交给嵌入式用户代理,Pake 的常见问题也说 Google 可能在内嵌 WebView 里拦截登录,不论你开了什么选项。这个窗口里 Google 接不接受登录只能试了才知道。无痕浏览(CLI 里是 --incognito)保持关闭,因为它不保留登录,登录后退出再打开一次,确认还在登录状态。Windows 上登录弹窗没反应的话,打开新窗口在应用内打开。Mac 上的 Pake 应用不能用通行密钥和 Touch ID,依赖这些的 Google 账号要用密码加第二步验证。更多细节见 Web 应用里 Google 登录失败怎么查,Google 拒绝的话就用上面 Chrome 或 Edge 的安装方式。
哪些可能用不了,要测什么
- Premium 下载。 Google 的电脑页面写的是 Chrome、Edge、Firefox 和 Opera,Pake 窗口不是这几个浏览器,Windows 上的 WebView2 虽然和 Edge 同一个引擎也不算,所以下载按钮可能不出现或者不起作用,要自己试,Google 的 Premium 页面描述的另一条路是 YouTube 应用。
- 买来和租来的电影。 Google 的系统要求页列出电影和电视需要最新的 Chrome、Firefox 或 Safari,还说浏览器里除了 Safari 以外没有 HD 流媒体。受保护内容的播放取决于引擎,Linux 上取决于 WebKitGTK 的构建,所以每个系统上都放一部买来的片子试试,Pake 里没有能改变这一点的设置。
- 投放。 Google 说从电脑投放要从浏览器里播放器的三点菜单开始,电脑和电视在同一个 Wi-Fi 下,这个按钮在 WebView 里显不显示没有测过,自己试一下。
- 广告。 YouTube 的广告和在浏览器里一样加载,去广告是 Premium 这个 YouTube 自己的方式。
- 通知。 Pake 把页面普通的通知调用转给系统,没有处理 web push 的代码,所以提醒只可能在应用运行时到,见网页应用的桌面通知。
做一次简短的测试:登录,播放一段有声音的视频,进入全屏再退出,关闭后重新打开应用,再试上面列表里你最在意的那一项。
常见问题
YouTube 有 Mac、Windows 或 Linux 的官方应用吗?
没有,Google 的帮助页里都没有,页面描述的是电脑上的浏览器,以及手机、电视和游戏机上的应用,下载声称是官方应用的东西之前先看这些页面。
关掉窗口后能在后台播放吗?
要应用继续运行(常驻后台,或 --hide-on-close),并且网站在隐藏的窗口里继续播放,后者由网站决定,所以放一段视频时关一次窗口听听看。
能用多个 Google 账号吗?
可以,用不同的名字再做一个应用,我的应用里的添加另一个账号会帮你做,每个应用有自己的存储,见同一网站用两个账号。
