Skip to content

Commit 2c1c195

Browse files
Merge pull request #104 from IsmaelMartinez/develop
0.2.0
2 parents e023df6 + 1d9f27e commit 2c1c195

File tree

10 files changed

+365
-323
lines changed

10 files changed

+365
-323
lines changed

CONTRIBUTING.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Contributing
2+
3+
First of all, thanks for thinking about contributing. Hopefully the following guidelines will help you contributing. If you got any questions, do add a issue with your questions and we will try to help.
4+
5+
## Development
6+
7+
This is a fairly small project. IMO, the ideal size for getting started with electron.
8+
9+
Just fork the repo and dive in. The app/index.js is the starting of all the application.
10+
11+
Once changes are made, just do a pull request to develop.
12+
13+
Each subfolder has a README.md file that explains the reason of existence and any extra required information.
14+
15+
## Pre-requisites
16+
17+
To run this application from source, you will need yarn installed.
18+
19+
Please refer to the [yarn installation page](https://yarnpkg.com/en/docs/install)
20+
21+
## Run from source
22+
23+
To run the application from source:
24+
25+
```bash
26+
yarn start
27+
```
28+
29+
## Build for linux
30+
31+
We are using [electron-build](https://www.electron.build/) in conbination with [travis-ci](https://travis-ci.org/) to create our build files.
32+
33+
If you want to generate the build locally, you can run the following command:
34+
35+
```bash
36+
yarn run dist:linux
37+
```
38+
39+
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.
40+
41+
### Snap build
42+
43+
Is possible to specify the snap or AppImage build type using running this:
44+
45+
```bash
46+
# Standalone build
47+
yarn run dist:linux:snap
48+
49+
# Or, if you have docker installed, you can alternatively build there
50+
./dockerBuildSnap.sh
51+
```
52+
53+
This will build the snap into the `dist/` directory.
54+
55+
#### Install using locally built snap file
56+
57+
To install the snap file using the generated file use this command.
58+
59+
```bash
60+
cd dist
61+
sudo snap install teams-for-linux_VERSION_amd64.snap --dangerous
62+
```
63+
64+
#### Install using snap from store
65+
66+
```bash
67+
sudo snap install teams-for-linux
68+
```
69+
70+
#### Use camera using the Snap build
71+
72+
Snap uses confinement to provide more security, this restric the access to hardware or data on your device to prevent security issues.
73+
74+
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:
75+
76+
```bash
77+
sudo snap connect teams-for-linux:camera core:camera
78+
```
79+
80+
## Version number
81+
82+
We are following SemVer at the moment. The lower number in master will be increased after a release (basically, to avoid re-releasing stuff with some changes), but release number will be decided just before a release trying to use SemVer standards.

HISTORY.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# History
2+
3+
This branch was a child fork of [JamieMagee teams-for-linux](https://github.com/JamieMagee/teams-for-linux) repo, that was itself a fork of [Ivelkov teams-for-linux](https://github.com/ivelkov/teams-for-linux).
4+
5+
Jamie did express his desire to refactor this project in Typescript and to support it, but he has archive the project and I suspect that means he doesn't have the time to support it.
6+
7+
I have tried to contact Ivelkov for a few months but haven't receive any answers.
8+
9+
For that reason, decided to refork it and fix a few things that where not working. The list has grown since then to support many features and to fix most of the bugs.
10+
11+
To be able to use a few github functionalities, it was decided to unfork the project #87.
12+
13+
Ideally this project will die when Microsoft implements a desktop client for linux. Please do vote for it in the [Microsoft Suggestions Forum](https://microsoftteams.uservoice.com/forums/555103-public/suggestions/16911565-linux-client)
14+
15+
Currently, the project is in a stable condition, and should continue as long as needed. Non stable versions are released as pre-release.

KNOWN_ISSUES.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Known issues
2+
3+
## Oauth services
4+
5+
Some services requires the app to open the windows in electron. An example is github that requires authentication using oauth.
6+
7+
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.
8+
9+
## No history
10+
11+
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` or, if using snap `rm -rf /home/$HOME/snap/teams*`, should fix the issue.
12+
13+
## Spellchecker not working
14+
15+
Details are in issue [#28](https://github.com/IsmaelMartinez/teams-for-linux/issues/28)
16+
17+
In short, node_spellchecker only ships with en_US dictionary.
18+
19+
As a work around, only valid when running from source, you can enable the use of local dictionaries by following the next steps:
20+
21+
1. Install hunspell and your locale dictionary as indicates in this link [https://github.com/atom/spell-check#debian-ubuntu-and-mint](https://github.com/atom/spell-check#debian-ubuntu-and-mint)
22+
2. Run the following commands from the root of the app (where this README.md file is located)
23+
1.`mv node_modules/spellchecker/vendor/hunspell_dictionaries node_modules/spellchecker/vendor/hunspell_dictionaries.old` mv the en_US dictionaries to another location.
24+
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.
25+
26+
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.
27+
28+
Unfortunately, at this moment in time it is not possible to use local dictionaries with the packaged app. Fixing issue [51](https://github.com/atom/node-spellchecker/issues/51) in node-spellchecker should solve this issue.
29+
30+
## Strange link icon on snap app
31+
32+
Some snap installation show a non standard icon for links. If you suffer this, please use the deb package instead.
33+
34+
Please refer to the issue #99 for more info.
35+
36+
## No desktop notifications
37+
38+
Some notifications daemons in linux don't support the implementation that Microsoft implemented in the browser.
39+
40+
This project includes a desktop notification hack that can be enable by running the application with `teams-for-linux --enableDesktopNotificationsHack`.

README.md

Lines changed: 6 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -2,137 +2,28 @@
22

33
![](https://img.shields.io/github/release/IsmaelMartinez/teams-for-linux.svg?style=flat)
44
![](https://img.shields.io/github/downloads/IsmaelMartinez/teams-for-linux/total.svg?style=flat)
5-
6-
7-
[![Build Status](https://travis-ci.org/IsmaelMartinez/teams-for-linux.svg?branch=master)](https://travis-ci.org/IsmaelMartinez/teams-for-linux)
8-
[![dependencies Status](https://david-dm.org/IsmaelMartinez/teams-for-linux/status.svg)](https://david-dm.org/IsmaelMartinez/teams-for-linux)
5+
[![Build Status](https://travis-ci.org/IsmaelMartinez/teams-for-linux.svg?branch=develop)](https://travis-ci.org/IsmaelMartinez/teams-for-linux)
6+
[![dependencies Status](https://david-dm.org/IsmaelMartinez/teams-for-linux/status.svg)](https://david-dm.org/IsmaelMartinez/teams-for-linux)
97
[![devDependencies Status](https://david-dm.org/IsmaelMartinez/teams-for-linux/dev-status.svg)](https://david-dm.org/IsmaelMartinez/teams-for-linux?type=dev)
108

119
Unofficial Microsoft Teams client for Linux using [Electron](https://electronjs.org/).
1210
It uses the Web App and wraps it as a standalone application using Electron.
1311

14-
## Install
15-
16-
You can download the tarball, rpm or deb from the [releases page](https://github.com/IsmaelMartinez/teams-for-linux/releases).
17-
18-
## Run from source
19-
20-
```bash
21-
yarn start
22-
```
23-
24-
## Build for linux
25-
26-
```bash
27-
yarn run dist:linux
28-
```
29-
30-
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.
31-
32-
Is possible to specify the snap or AppImage build type using running this:
33-
34-
```bash
35-
# Standalone build
36-
yarn run dist:linux:snap
37-
38-
# Or, if you have docker installed, you can alternatively build there
39-
./dockerBuildSnap.sh
40-
```
41-
42-
This will build the snap into the `dist/` directory.
43-
44-
### Install using locally built snap file
45-
46-
To install the snap file using the generated file use this command.
47-
48-
```bash
49-
cd dist
50-
sudo snap install teams-for-linux_VERSION_amd64.snap --dangerous
51-
```
52-
53-
### Install using snap from store
54-
55-
56-
```bash
57-
sudo snap install teams-for-linux
58-
```
59-
60-
#### Use camera using the Snap build
61-
62-
Snap uses confinement to provide more security, this restric the access to hardware or data on your device to prevent security issues.
63-
64-
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:
65-
66-
```bash
67-
sudo snap connect teams-for-linux:camera core:camera
68-
```
69-
7012
## Available starting arguments
7113

7214
Check in the config [README.md](app/config/README.md) in the config folder.
7315

74-
## Development
75-
76-
This is a fairly small project. IMO, the ideal size for getting started with electron.
16+
## Contributing
7717

78-
Just fork the repo and dive in. The app/index.js is the starting of all the application.
79-
80-
Once changes are made, just do a pull request to master.
81-
82-
Each subfolder has a README.md file that explains the reason of existence and any extra required information.
83-
84-
### Version number
85-
86-
We are following SemVer at the moment. The lower number in master will be increased after a release (basically, to avoid re-releasing stuff with some changes), but release number will be decided just before a release trying to use SemVer standards.
18+
Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) file for more information about how to run this application from source, and/or how to contribute.
8719

8820
## History
8921

90-
This branch is a child fork of [JamieMagee teams-for-linux](https://github.com/JamieMagee/teams-for-linux) repo, that is itself a fork of [Ivelkov teams-for-linux](https://github.com/ivelkov/teams-for-linux).
91-
92-
Jamie did express his desire to refactor this project in Typescript and to support it, but he has archive the project and I suspect that means he doesn't have the time to support it.
93-
94-
I have tried to contact Ivelkov for a few months but haven't receive any answers.
95-
96-
For that reason, decided to refork it and fix a few things that where not working. The list has grown since then to support many features and to fix most of the bugs.
97-
98-
Ideally this project will die when Microsoft implements a desktop client for linux. Please do vote for it in the [Microsoft Suggestions Forum](https://microsoftteams.uservoice.com/forums/555103-public/suggestions/16911565-linux-client)
99-
100-
Currently, the project is in a stable condition, and should continue as long as needed. Non stable versions are released as pre-release.
22+
Read about the history about this project in the [HISTORY.md](HISTORY.md) file.
10123

10224
## Known issues
10325

104-
### Oauth services
105-
106-
Some services requires the app to open the windows in electron. An example is github that requires authentication using oauth.
107-
108-
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.
109-
110-
### No history
111-
112-
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` or, if using snap `rm -rf /home/$HOME/snap/teams*`, should fix the issue.
113-
114-
### Spellchecker not working
115-
116-
Details are in issue [#28](https://github.com/IsmaelMartinez/teams-for-linux/issues/28)
117-
118-
In short, node_spellchecker only ships with en_US dictionary.
119-
120-
As a work around, only valid when running from source, you can enable the use of local dictionaries by following the next steps:
121-
122-
1. Install hunspell and your locale dictionary as indicates in this link [https://github.com/atom/spell-check#debian-ubuntu-and-mint](https://github.com/atom/spell-check#debian-ubuntu-and-mint)
123-
2. Run the following commands from the root of the app (where this README.md file is located)
124-
1.`mv node_modules/spellchecker/vendor/hunspell_dictionaries node_modules/spellchecker/vendor/hunspell_dictionaries.old` mv the en_US dictionaries to another location.
125-
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.
126-
127-
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.
128-
129-
Unfortunately, at this moment in time it is not possible to use local dictionaries with the packaged app. Fixing issue [51](https://github.com/atom/node-spellchecker/issues/51) in node-spellchecker should solve this issue.
130-
131-
### No desktop notifications
132-
133-
Some notifications daemons in linux don't support the implementation that Microsoft implemented in the browser.
134-
135-
This project includes a desktop notification hack that can be enable by running the application with `teams-for-linux --enableDesktopNotificationsHack`.
26+
Known issues and workarounds can be found in the [KNOWN_ISSUES.md](KNOWN_ISSUES.md) file.
13627

13728
## License
13829

app/browser/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@
5151
injector.get('settingsService').appConfig.enableScreenSharingToolbar = true;
5252
injector.get('settingsService').appConfig.enableCallingScreenPreviewLabel = true;
5353
injector.get('settingsService').appConfig.callingEnableChromeOneToOneVideo = true;
54+
injector.get('settingsService').appConfig.enableMeetingStartedNotificationWeb = true;
55+
injector.get('settingsService').appConfig.enableMicOSUnmuteOnUnmute = true;
56+
injector.get('settingsService').appConfig.enableModeratorsSupport = true;
57+
injector.get('settingsService').appConfig.enableRecordPPTSharing = true;
5458
}
5559

5660
function disablePromoteStuff(injector) {

app/config/README.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Here is the list of available arguments and its usage:
1212
|:-:|:-:|:-:|
1313
| help | show the available commands | false |
1414
| version | show the version number | false |
15+
| onlineOfflineReload | Reload page when going from offline to online | true |
1516
| disableDesktopNotificationsHack | disable electron-desktop-notifications extension hack | false |
1617
| closeAppOnCross | Close the app when clicking the close (X) cross | false |
1718
| partition | [BrowserWindow](https://electronjs.org/docs/api/browser-window) webpreferences partition | persist:teams-4-linux |
@@ -37,24 +38,27 @@ Alternatively, you can use a file called `config.json` with the configuration op
3738

3839
## Getting custom CA Certs fingerprints
3940

40-
The expected fingerprints are of the form `sha256/<md5 encoded sha256sum>`. Tools like openssl usually deliver the sha256sum
41+
The expected fingerprints are of the form `sha256/<base64 encoded sha256sum>`. Tools like openssl usually deliver the sha256sum
4142
encoded in hexadecimal format. If you have access to the nodejs console, the fingerprint of the CA that cannot be validated
4243
will be printed out. You can then start teams-for-linux again with
44+
4345
```bash
4446
teams-for-linux --customCACertsFingerprints sha256//L/iiGIG9ysnWTyLBwKX4S12ntEO15MHBagJjv/BTRc= [--customCACertsFingerprints otherfingerprint]`
4547
```
4648

4749
If you already have the certificate in a file locally, you can calculate the expected fingerprint with the following command:
50+
4851
```bash
4952
echo sha256/$(openssl x509 -in /path/to/certificate -noout -fingerprint -sha256 | sed -e "s/^.*=//g" -e "s/://g" | xxd -r -p | base64)
5053
```
5154

5255
To have your custom certs recognized on every run, add them to your `~/.config/teams-for-linux/config.json`
56+
5357
```json
5458
{
55-
"customCACertsFingerprints": [
56-
"sha256//L/iiGIG9ysnWTyLBwKX4S12ntEO15MHBagJjv/BTRc=",
57-
"sha256/QNUEPU40JDSrRcW9CSWsPKJ5llVjGcc1AnsIkCF9KV4="
58-
]
59+
"customCACertsFingerprints": [
60+
"sha256//L/iiGIG9ysnWTyLBwKX4S12ntEO15MHBagJjv/BTRc=",
61+
"sha256/QNUEPU40JDSrRcW9CSWsPKJ5llVjGcc1AnsIkCF9KV4="
62+
]
5963
}
60-
```
64+
```

app/config/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ function argv(configPath) {
1212
describe: 'Close the app when clicking the close (X) cross',
1313
type: 'boolean',
1414
},
15+
onlineOfflineReload: {
16+
default: true,
17+
describe: 'Reload page when going from offline to online',
18+
type: 'boolean',
19+
},
1520
enableDesktopNotificationsHack: {
1621
default: false,
1722
describe: 'Enable electron-native-notifications hack',

app/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ if (!gotTheLock) {
5151
});
5252

5353
login.handleLoginDialogTry(window);
54-
onlineOffline.reloadPageWhenOfflineToOnline(window, config.url);
55-
54+
if (config.onlineOfflineReload) {
55+
onlineOffline.reloadPageWhenOfflineToOnline(window, config.url);
56+
}
57+
5658
window.webContents.setUserAgent(config.chromeUserAgent);
5759

5860
window.once('ready-to-show', () => window.show());

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "teams-for-linux",
3-
"version": "0.1.18",
3+
"version": "0.2.0",
44
"main": "app/index.js",
55
"description": "Unofficial client for Microsoft Teams for Linux",
66
"homepage": "https://github.com/IsmaelMartinez/teams-for-linux",
@@ -59,7 +59,9 @@
5959
"AppImage",
6060
"pacman"
6161
],
62-
"mimeTypes": ["application/sip"],
62+
"mimeTypes": [
63+
"application/sip"
64+
],
6365
"publish": {
6466
"provider": "github",
6567
"releaseType": "draft"

0 commit comments

Comments
 (0)