博客

Outlook 的 Linux 桌面版

常用网站 · · 约 7 分钟

微软做了 Windows 和 Mac 版的 Outlook,没有列出 Linux 版,所以 Linux 上用的是网页版 Outlook,工作或学校账号走 outlook.office.com,个人账号走 outlook.live.com。想要一个独立窗口,可以在 Edge 或 Chrome 里把它安装成应用,也可以用 Pake CLI 把同一个网站包成带托盘图标和桌面提醒的应用,两种做法用的都是网页版客户端,设备能不能登录进去,仍然由你所在组织的登录策略决定。

微软在 Linux 上提供什么

Windows 版新 Outlook 的部署概述把系统要求写成 Windows 10 2004 或更新版本以及 Windows Server 2022,Outlook for Mac 页面列的是 macOS 的要求,两页都没有提到 Linux。支持的浏览器页面说网页版 Outlook 在 Linux 上可以用 Firefox 或 Chrome,但部分功能可能不可用,Edge 只列在 Windows 11 和 macOS 下面。

微软自己的把网页版 Outlook 当桌面应用用一文写明,网页版 Outlook 和 Outlook.com 可以在 Microsoft Edge 和 Google Chrome 里安装成渐进式网页应用,再固定到任务栏,文中没有提到 Linux。

账号地址
Microsoft 365 工作或学校账号outlook.office.com
个人账号(Outlook.com、Hotmail)outlook.live.com/mail

微软在新版 Outlook 的报错文字里,把不支持的工作账号引到第一个地址,Outlook.com 的登录说明指向的是 outlook.live.com。登录之后网站可能落到另一个地址,构建之前先看一眼地址栏最后停在哪里。

登录,以及组织说了算的部分

个人账号就是微软账号登录,一般不会有问题。工作或学校账号不一样,管理员可以加条件,微软的条件访问文档列出的授权控制包括多重身份验证和由 Intune 标记为合规的设备,并且说合规设备这一项支持的是注册到 Microsoft Entra ID 并加入 Intune 的 Windows 10 及更新版本、iOS、Android、macOS 和 Linux Ubuntu 设备。

所以租户要求受管设备时,管理员的策略说了算,Pake 窗口可能会被拒绝,文档没有说 WebKitGTK 窗口能不能通过这类检查。如果同一台机器上的普通浏览器能进、Pake 窗口进不去,原因就在登录这一步,该问的是管你们 Microsoft 365 租户的人。Pake 怎么处理登录链接见登录指南,同样的微软登录在 Linux 上的 Microsoft Teams 里讲得更细。

Edge 或 Chrome 的应用、Pake,还是邮件客户端

微软的 Edge 帮助页给的路径是 Settings and more、More tools、Apps、Install this site as an app,并且提到可以让这类应用在设备登录时自动启动,页面没有提到 Linux,所以要确认你的 Edge 版本有这个入口。Chrome 里,Google 的帮助页写的是 More、Cast, save, and share、Install page as app...。这是最先该试的做法,因为 Chrome 在微软的 Linux 浏览器列表里,两者的取舍见 PWA 和桌面应用的区别。

Pake 构建出来的是同一个网站,只是跑在系统的 WebKitGTK 上。想要固定的窗口大小、托盘图标,或者一个 .deb、.rpm、.AppImage、Arch 包,好在几台机器上重复安装,它就合适。PWA 已经好用的话没有必要换,因为 WebKitGTK 不在微软的浏览器列表里。

要真正的邮件客户端,Thunderbird 145 通过 Exchange Web Services 加入了原生 Exchange 支持,官方公告写明邮件已支持,日历和通讯录尚未实现,Microsoft 365 在使用微软标准 OAuth2 端点时可用。Evolution 的 EWS 插件可以对 Office 365 组织账号使用 OAuth2,前提是GNOME 维基里说的,组织管理员允许这个应用访问。这两条路也要过同一道租户的关。

构建窗口

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

npm install -g pake-cli
pake https://outlook.office.com --name Outlook --width 1300 --height 850 --show-system-tray --hide-on-close --safe-domain outlook.office.com,microsoftonline.com,office.com

个人账号就把地址换成 https://outlook.live.com/mail,--safe-domain 里用 live.com 代替 Microsoft 365 的那几个域名。--name 在 Linux 上会变成 outlook。--show-system-tray 加托盘图标,--hide-on-close 让关闭按钮隐藏窗口,Linux 上它默认是关的,两个一起用应用才会一直在后台,新邮件才能提醒你。--safe-domain 让这些域名留在窗口里,这个列表会取代 Pake 默认的同站规则,所以 Outlook 自己的地址也要写进去。想只出一种包就用 --targets 指定 deb、rpm、appimage 或 zst,见 CLI 选项。下载默认存到系统的下载文件夹,想换位置就用 --download-dir '~/Documents/Outlook'。第一次构建要几分钟。

窗口在底层是怎么工作的

Linux 上 Pake 应用是一个 Tauri 外壳,用 WebKitGTK 绘制页面,没有内置 Chromium,引擎版本就是你发行版带的那个。Pake 会把页面的 Notification API 换成自己的实现,权限报告为已授予,每条提醒交给桌面的通知服务,路径见网页应用的桌面通知。对邮件有三个限制,提醒只在应用运行时才能到达,所以要有托盘和 --hide-on-close;Pake 桥接的是 new Notification,不处理 Web Push,依赖 Service Worker 的提醒可能收不到;桥接只在配置的那个来源上生效,登录后 Outlook 落到别的地址,提醒就没有了。

日历在同一个网站里,微软的策略文档提到了网页版 Outlook 里的日历,所以不需要第二个应用。附件和链接的表现和网页版客户端一样。CLI 没有把 Pake 应用注册成系统邮件处理程序的选项,别的程序里点 mailto: 链接,打开的仍是你系统的默认程序。

确认它能用

  1. 登录,退出再打开,如果每次都要重新登录,检查构建时是不是带了 --incognito。
  2. 把窗口隐藏到托盘,用另一台设备给自己发一封邮件,看有没有提醒。
  3. 下载一个附件,再打开一个微软用网页查看器显示的附件,如果它跳到了浏览器而不是留在窗口里,把它的域名加进 --safe-domain。
  4. 打开一封会议邀请和日历视图。

Wayland 下点击和输入没反应,试试 PAKE_LINUX_WEBKIT_SAFE_MODE=0 ./outlook.AppImage,窗口空白就用 =1。页面提示浏览器不受支持时,--user-agent 能改应用对外报告的内容,换不了引擎,见自定义 User Agent。租户拦下了这台设备的话,任何参数都改变不了。

Arch 和 Omarchy 上的 Pake 桌面版

Pake 桌面版不需要 Node.js 和 Rust 就能做出同样的应用。它在 Linux 上支持 Omarchy 这类基于 Arch 的发行版,x86_64,用 pacman 安装,见安装页。在创建应用里粘贴 outlook.office.com 或 outlook.live.com/mail,确认应用名称,打开常驻后台让应用在关窗口后继续运行,再点创建应用。手册没有写 Linux 上有哪些行为选项,以应用里的运行偏好部分为准。Ubuntu、Fedora 等其他系统用 CLI。

常见问题

Outlook 有官方的 Linux 应用吗?

没有,微软做了 Windows 和 Mac 版,支持的浏览器页面里,Linux 只写了用 Firefox 或 Chrome 打开网页版 Outlook。

窗口关着也能收到邮件提醒吗?

只有应用还在运行时才行,用 --hide-on-close 和 --show-system-tray 构建,然后关窗口而不是退出。

工作账号要求受管设备怎么办?

这是管理员的决定,构建之前先问他们,合规要求可能会直接拒绝这个窗口。