Teams for Linux

Unofficial open-source Microsoft Teams desktop app for Linux: an Electron wrapper around Teams on the web, with tray, notifications, profiles, Intune SSO and MQTT.

Teams for Linux is the closest thing Linux has to a Microsoft Teams desktop app. Microsoft retired its own Linux client at the end of 2022 and pointed Linux users to the Progressive Web App (PWA) in Edge or Chrome. Teams for Linux wraps the same Teams web app in Electron and adds what a browser tab can't: a tray icon with an unread badge, native notifications, separate work and personal profiles, Intune single sign-on and an MQTT bridge for home automation.

It is a community project, not affiliated with Microsoft. Whatever the Teams web app can't do, this app can't do either.

Teams for Linux window showing a team's General channel, with the Teams sidebar on the left and channel posts and a New conversation button on the right

Key facts

Maintainer Ismael Martinez, with 100+ contributors
Started October 2018, as a fork of earlier wrappers by ivelkov and Jamie Magee
Language JavaScript on Electron 43
Licence GPL-3.0
Traction About 5,100 GitHub stars and 1.08 million Flathub installs on 10th October 2026
Latest release v2.24.0, 3rd October 2026. A new version ships about every week
Platforms Linux (x64 and ARM), plus Windows and macOS builds
Price Free. Sponsored by Recall.ai

Why it exists

The project began as a stopgap. The plan was to let it die once Microsoft shipped a native Linux client, and Microsoft shipped a preview of one in December 2019. That client never matched the Windows and Mac versions, and Microsoft retired it in December 2022 in favour of the PWA. Teams for Linux carried on, because many users preferred an installable app to a browser tab. 8 years in, it is the de facto Teams client on Linux.

Features

  • Desktop integration: native notifications, tray icon with unread count, minimise to tray on close.
  • Screen sharing: a picker for screens and windows, plus an optional floating preview of what you share. Works on X11 and on Wayland through the desktop portal.
  • Custom backgrounds for video calls, and custom themes.
  • Multiple accounts: an experimental in-app profile switcher in 1 window, or fully separate instances with their own icon and data folder.
  • Enterprise sign-in: Intune single sign-on through Microsoft's Identity Broker, corporate CA certificates, proxy support.
  • MQTT bridge (off by default): publishes your presence and incoming calls to a broker, and accepts commands to toggle mute, camera and raised hand.
  • D-Bus controls and Teams state signals, new in v2.25.0 (pre-release).

For business people

For a company with Linux users, this is the practical way to give them Teams as an app rather than a tab. It behaves like a normal desktop program: it sits in the tray, notifies, keeps calls going in the background and remembers sign-in.

  • Cost: free and open source. No licence beyond the Microsoft 365 one the user already has.
  • Privacy: the app has no telemetry, no analytics and no servers of its own. Teams data flows between the device and Microsoft only, exactly as in a browser. The project documents this on a privacy page.
  • Support: none from Microsoft. Help comes from GitHub issues and a Matrix chat. Some IT departments won't approve an unofficial client for that reason alone.
  • Access policy still applies: if the company's Microsoft 365 setup blocks sign-in from unmanaged devices, no client gets around it. The Intune option helps only on Linux machines enrolled in Intune.
  • Feature ceiling: features missing from Teams on the web are missing here too.
  • When to choose it: daily Teams use on Linux, where notifications and a tray icon matter. For occasional calls, the Edge or Chrome PWA is enough and is Microsoft's supported route.

For technical people

Install

Pick the package for the distribution:

Distribution Command or source
Arch, Omarchy yay -S teams-for-linux (AUR)
Any, sandboxed flatpak install flathub com.github.IsmaelMartinez.teams_for_linux
Ubuntu sudo snap install teams-for-linux
Debian, Fedora, RHEL APT and RPM repos at teamsforlinux.de
Anything else AppImage, deb, rpm or tar.gz from GitHub Releases

Launch with teams-for-linux.

Configure

Settings live in a JSON file. A system-wide /etc/teams-for-linux/config.json is read first, and the user file wins.

Install User config path
deb, rpm, AppImage ~/.config/teams-for-linux/config.json
Snap ~/snap/teams-for-linux/current/.config/teams-for-linux/config.json
Flatpak ~/.var/app/com.github.IsmaelMartinez.teams_for_linux/config/teams-for-linux/config.json

A starting point, with the MQTT bridge on:

{
  "window": { "closeOnCross": false },
  "appearance": { "followSystemTheme": true },
  "tray": { "enabled": true },
  "mqtt": {
    "enabled": true,
    "brokerUrl": "mqtt://192.168.1.100:1883",
    "topicPrefix": "teams"
  }
}

Check the bridge with mosquitto_sub -h 192.168.1.100 -t "teams/status" -v.

Gotchas

  • It runs under XWayland by default. Every package launches with --ozone-platform=x11, because Electron 38+ shows blank windows in native Wayland mode. To try native Wayland, for sharp text with fractional scaling, launch with --ozone-platform=wayland.
  • GPU is off on Wayland sessions. That avoids rendering bugs but can make calls lag. Set "performance": { "disableGpu": false } to turn it back on.
  • Screen sharing on Wayland needs a working xdg-desktop-portal backend for the compositor, such as the Hyprland or wlroots portal.
  • Electron's sandbox is off. The app disables contextIsolation and the sandbox so it can read the Teams page. The project's advice: run the Flatpak or Snap, or wrap it in Firejail, for isolation at system level.
  • Some Teams features are gated by platform. platform.emulateWindowsChromium presents a Windows browser user agent as a workaround.
  • The profile switcher and Intune SSO exclude each other. Use separate instances with --user-data-dir if you need both.
  • Debug login problems with ELECTRON_ENABLE_LOGGING=true teams-for-linux.

Teams for Linux or the PWA

Teams for Linux Teams PWA (Edge or Chrome)
Made by Community, GPL-3.0 Microsoft
Support GitHub issues, Matrix Microsoft, through company IT
Tray and badge Yes Browser dependent
Multiple accounts Profiles or separate instances Browser profiles
Automation MQTT, D-Bus None
Isolation Flatpak, Snap or Firejail Browser sandbox
Features Teams web, plus desktop extras Teams web

Pros and cons

Pros

  • A real desktop app for Teams on Linux: tray, notifications, background calls.
  • Packaged for every major distribution, including Flatpak, Snap and the AUR.
  • No telemetry and no servers of its own.
  • Very active: weekly releases, fast fixes when Teams or Electron changes.
  • MQTT and D-Bus hooks make presence and mute scriptable.

Cons

  • Unofficial. Microsoft can break it with any change to the web app, and IT may refuse it.
  • Electron with its sandbox off: heavier than a browser tab, and the isolation is your job.
  • Wayland support still leans on XWayland and on per-session workarounds.
  • Limited to what Teams on the web supports.

My take

This is the answer to the one gap I listed when I looked at Omarchy: no native Teams client on Linux. On an Omarchy machine it is an yay -S away, and it gives Teams a tray icon and notifications that a Chromium web app doesn't. I'd still treat it as a convenience, not a work dependency. My work account lives on a company-managed laptop, and a company tenant decides which devices may sign in at all.

The part I like most is the MQTT bridge. My Teams presence published to MQTT is exactly the signal Home Assistant needs to switch an "on air" light or mute the room when a call starts. See Home Assistant.

Further reading

NicAI
Written by NicAI, Nic's AI assistant, for his personal knowledge base. Researched and drafted by the model, not hand-written by Nic. Verify anything you plan to act on.