Unofficial Microsoft Teams for Linux client
Branch: master
Clone or download
Pull request Compare This branch is 146 commits ahead, 6 commits behind JamieMagee:master.
Latest commit edab77b Feb 6, 2019


Build Status dependencies Status devDependencies Status

Unofficial Microsoft Teams client for Linux using Electron. It uses the Web App and wraps it as a standalone application using Electron.


You can download the tarball, rpm or deb from the releases page.

Run from source

yarn start

Build for linux

yarn run dist:linux

This will build an deb, rpm, snap, AppImage and tar.gz files in the dist folder. This files can be run in most popular linux distributions.

Is possible to specify the snap or AppImage build type using running this:

yarn run dist:linux:snap

Install using snap file

To install the snap file using the generated file use this command.

sudo snap install teams-for-linux_VERSION_amd64.snap --dangerous

Use camera using the Snap build

Snap uses confinement to provide more security, this restric the access to hardware or data on your device to prevent security issues.

The camera is a restricted device on Snap, so you need to allow the access to the camera on Teams For Linux to be able to do videocalls, to do that run this command after the installation of the snap to create an interface to the camera:

sudo snap connect teams:camera core:camera

Available starting arguments

Check in the config in the config folder.


This is a fairly small project. IMO, the ideal size for getting started with electron.

Just fork the repo and dive in. The app/index.js is the starting of all the application.

Once changes are made, just do a pull request to master.

Each subfolder has a file that explains the reason of existence and any extra required information.

Version number

Just increase the lower (last) number in the package.json version string number.

We are not following SemVer at the moment.

This is because of this fork history. Jamie expressed his desire to refactor the project (0.2.0 branch) in Typescript and to support it.


This branch is a child fork of JamieMagee teams-for-linux repo, that is itself a fork of Ivelkov teams-for-linux.

Jamie has express his desire to refactor this project in Typescript and to support it, but he doesn't have the time to support it at the moment. I have tried to contact Ivelkov for a few months but haven't receive any answers.

For that reason, decided to refork it and fix a few things that where not working. Mainly the notification and the gif animations, but the list is fairly big.

Ideally this project will die when Microsoft implements a desktop client for linux. Please do vote for it in the Microsoft Suggestions Forum

Known issues

Oauth services

Some services requires the app to open the windows in electron. An example is github that requires authentication using oauth.

We are defaulting in opening the links in a external browser, but links can be open ina electron windows by using the 'Crl+Click' combination.

No history

Switching the userAgent with the persistence turn on sometimes have the side effect of "loosing" the channels history. Removing the data under ~/.config/teams-for-linux should fix the issue.

Spellchecker not working

Details are in issue #28

In short, node_spellchecker only ships with en_US dictionary.

As a work around, only valid when running from source, you can enable the use of local dictionaries by following the next steps:

  1. Install hunspell and your locale dictionary as indicates in this link
  2. Run the following commands from the root of the app (where this file is located) node_modules/spellchecker/vendor/hunspell_dictionaries node_modules/spellchecker/vendor/hunspell_dictionaries.old mv the en_US dictionaries to another location. 2.ln -s /usr/share/hunspell/ node_modules/spellchecker/vendor/hunspell_dictionaries create a simbolic link to the hunspell dictionaries. Note, I am using the default location for hunspell.

Starting the app with yarn start, and if you have your system configured with the right dictionaries and locale, you should be able to see the spellchecker working.

Unfortunately, at this moment in time it is not possible to use local dictionaries with the packaged app. Fixing issue 51 in node-spellchecker should solve this issue.

No desktop notifications

Some notifications daemons in linux don't support the implementation that Microsoft implemented in the browser.

This project includes a desktop notification hack that can be enable by running the application with teams --enableDesktopNotificationsHack.