mirror of
https://github.com/agam778/MS-365-Electron.git
synced 2026-02-17 09:02:10 +00:00
Compare commits
102 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4cc4f71535 | ||
|
|
6f49a5554f | ||
|
|
aaa862364e | ||
|
|
0a3e4514a9 | ||
|
|
701d63c900 | ||
|
|
8f24d0184a | ||
|
|
34fdc82b50 | ||
|
|
48bab03708 | ||
|
|
af448cac3d | ||
|
|
102126d6d3 | ||
|
|
0b308b066f | ||
|
|
e60ffc52c9 | ||
|
|
ed0e90c451 | ||
|
|
3f67f7575f | ||
|
|
9fac90d90b | ||
|
|
36e42e311b | ||
|
|
bffa016eb9 | ||
|
|
c85ae12648 | ||
|
|
bc7968978a | ||
|
|
058711af45 | ||
|
|
179c52c28b | ||
|
|
acdae139d6 | ||
|
|
9a0bdc8fae | ||
|
|
81fe8c3ec0 | ||
|
|
8887d8a365 | ||
|
|
83ecdcd09b | ||
|
|
191876de3d | ||
|
|
56ab9b5007 | ||
|
|
7de220f5c6 | ||
|
|
7c295c51e6 | ||
|
|
34fc4ede8d | ||
|
|
dc23b1a58d | ||
|
|
664ddf81bf | ||
|
|
705f0447e7 | ||
|
|
69565c589a | ||
|
|
75d032248f | ||
|
|
7bd0ad2462 | ||
|
|
dc64f14fcb | ||
|
|
6e7a551d86 | ||
|
|
477f534049 | ||
|
|
25ac26214b | ||
|
|
e884d01cb1 | ||
|
|
729e9e276d | ||
|
|
df135f9578 | ||
|
|
e333196dc2 | ||
|
|
77c7cb08c0 | ||
|
|
96a4020e1e | ||
|
|
cbe9194a35 | ||
|
|
e238550568 | ||
|
|
e942b06a10 | ||
|
|
affc7bb676 | ||
|
|
4d0d742520 | ||
|
|
686d3ac491 | ||
|
|
6a706a96f4 | ||
|
|
bcd15e05cd | ||
|
|
c9ea1d2d3b | ||
|
|
c094b28f74 | ||
|
|
62932046e4 | ||
|
|
6ff03b85b9 | ||
|
|
83a1084e06 | ||
|
|
2db6bb827c | ||
|
|
9faa1cde1f | ||
|
|
6d209c1a5b | ||
|
|
ec2421da96 | ||
|
|
09ef206be5 | ||
|
|
e12e5b39b4 | ||
|
|
8dceb827d6 | ||
|
|
92a7b9376d | ||
|
|
a13d790df3 | ||
|
|
09d24e3948 | ||
|
|
2cc3d0c953 | ||
|
|
d5eba0741f | ||
|
|
102746ec3c | ||
|
|
529147bf01 | ||
|
|
39bd965a90 | ||
|
|
d203b214ec | ||
|
|
2b0eb255eb | ||
|
|
876ad5dfb7 | ||
|
|
796c4f63fd | ||
|
|
a3ee81bc32 | ||
|
|
0800464da5 | ||
|
|
03e009b301 | ||
|
|
805f5e1587 | ||
|
|
643b2c134c | ||
|
|
37754a6168 | ||
|
|
45b287dba6 | ||
|
|
10bf359f15 | ||
|
|
69fd40ba07 | ||
|
|
38359f68d1 | ||
|
|
942115fab9 | ||
|
|
9647ca2214 | ||
|
|
cd7ba5d5b4 | ||
|
|
13d5a51c67 | ||
|
|
225f8b2b63 | ||
|
|
3c758d6332 | ||
|
|
4dd73fc13c | ||
|
|
7f7b759706 | ||
|
|
b586c1c48c | ||
|
|
eda2165706 | ||
|
|
075ddf615e | ||
|
|
2f42a345bf | ||
|
|
b08c91a50e |
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
@@ -12,10 +12,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
|
||||
|
||||
- name: Install Node.js, NPM and Yarn
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: latest
|
||||
|
||||
|
||||
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -12,10 +12,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
|
||||
|
||||
- name: Install Node.js, NPM and Yarn
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: latest
|
||||
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
shell: bash
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.os }}-dist
|
||||
path: |
|
||||
|
||||
2
.github/workflows/stale.yml
vendored
2
.github/workflows/stale.yml
vendored
@@ -7,7 +7,7 @@ jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v8
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
stale-issue-message: 'Message to comment on stale issues. If none provided, will not mark issues stale'
|
||||
stale-pr-message: 'Message to comment on stale PRs. If none provided, will not mark PRs stale'
|
||||
|
||||
Binary file not shown.
BIN
.yarn/cache/@cliqz-adblocker-content-npm-1.26.12-3d830a12e1-941d6195a8.zip
vendored
Normal file
BIN
.yarn/cache/@cliqz-adblocker-content-npm-1.26.12-3d830a12e1-941d6195a8.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@cliqz-adblocker-electron-npm-1.26.12-d2b809d772-d106a0046e.zip
vendored
Normal file
BIN
.yarn/cache/@cliqz-adblocker-electron-npm-1.26.12-d2b809d772-d106a0046e.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@cliqz-adblocker-electron-preload-npm-1.26.12-98c7b7ec60-9730fa49df.zip
vendored
Normal file
BIN
.yarn/cache/@cliqz-adblocker-electron-preload-npm-1.26.12-98c7b7ec60-9730fa49df.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@cliqz-adblocker-extended-selectors-npm-1.26.12-1172b29ea2-0f50c02dbe.zip
vendored
Normal file
BIN
.yarn/cache/@cliqz-adblocker-extended-selectors-npm-1.26.12-1172b29ea2-0f50c02dbe.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@cliqz-adblocker-npm-1.26.12-c5692d440d-05cfb455ad.zip
vendored
Normal file
BIN
.yarn/cache/@cliqz-adblocker-npm-1.26.12-c5692d440d-05cfb455ad.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@electron-notarize-npm-2.1.0-300931d556-ac58f39f4b.zip
vendored
Normal file
BIN
.yarn/cache/@electron-notarize-npm-2.1.0-300931d556-ac58f39f4b.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@electron-osx-sign-npm-1.0.5-22146fb2fe-6c662e8bb4.zip
vendored
Normal file
BIN
.yarn/cache/@electron-osx-sign-npm-1.0.5-22146fb2fe-6c662e8bb4.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@electron-universal-npm-1.4.1-4989028044-257f3a25a4.zip
vendored
Normal file
BIN
.yarn/cache/@electron-universal-npm-1.4.1-4989028044-257f3a25a4.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@eslint-community-regexpp-npm-4.6.2-0fc083c210-a3c341377b.zip
vendored
Normal file
BIN
.yarn/cache/@eslint-community-regexpp-npm-4.6.2-0fc083c210-a3c341377b.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@eslint-eslintrc-npm-2.1.4-1ff4b5f908-10957c7592.zip
vendored
Normal file
BIN
.yarn/cache/@eslint-eslintrc-npm-2.1.4-1ff4b5f908-10957c7592.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@humanwhocodes-object-schema-npm-2.0.1-c23364bbfc-24929487b1.zip
vendored
Normal file
BIN
.yarn/cache/@humanwhocodes-object-schema-npm-2.0.1-c23364bbfc-24929487b1.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/@npmcli-agent-npm-2.2.0-cf04e8a830-3b25312edb.zip
vendored
Normal file
BIN
.yarn/cache/@npmcli-agent-npm-2.2.0-cf04e8a830-3b25312edb.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@types-chrome-npm-0.0.248-50cc65ab10-3e3c193af1.zip
vendored
Normal file
BIN
.yarn/cache/@types-chrome-npm-0.0.248-50cc65ab10-3e3c193af1.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@types-firefox-webext-browser-npm-111.0.5-61aee8163c-8e61fb65d0.zip
vendored
Normal file
BIN
.yarn/cache/@types-firefox-webext-browser-npm-111.0.5-61aee8163c-8e61fb65d0.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/@ungap-structured-clone-npm-1.2.0-648f0b82e0-4f656b7b46.zip
vendored
Normal file
BIN
.yarn/cache/@ungap-structured-clone-npm-1.2.0-648f0b82e0-4f656b7b46.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/@xhayper-discord-rpc-npm-1.1.1-8538219719-f3e6e3337a.zip
vendored
Normal file
BIN
.yarn/cache/@xhayper-discord-rpc-npm-1.1.1-8538219719-f3e6e3337a.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/abbrev-npm-2.0.0-0eb38a17e5-0e994ad2aa.zip
vendored
Normal file
BIN
.yarn/cache/abbrev-npm-2.0.0-0eb38a17e5-0e994ad2aa.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/agent-base-npm-7.1.0-4b12ba5111-f7828f9914.zip
vendored
Normal file
BIN
.yarn/cache/agent-base-npm-7.1.0-4b12ba5111-f7828f9914.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/axios-npm-1.6.2-2334cb6eee-4a7429e2b7.zip
vendored
Normal file
BIN
.yarn/cache/axios-npm-1.6.2-2334cb6eee-4a7429e2b7.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/builder-util-runtime-npm-9.2.3-3905baa738-f25d6f1235.zip
vendored
Normal file
BIN
.yarn/cache/builder-util-runtime-npm-9.2.3-3905baa738-f25d6f1235.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/cacache-npm-18.0.1-11c6564db0-5a0b3b2ea4.zip
vendored
Normal file
BIN
.yarn/cache/cacache-npm-18.0.1-11c6564db0-5a0b3b2ea4.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/dmg-license-npm-1.0.11-e97c20b75a-8.zip
vendored
BIN
.yarn/cache/dmg-license-npm-1.0.11-e97c20b75a-8.zip
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/electron-dl-npm-3.5.1-9463e218c9-3d176b2005.zip
vendored
Normal file
BIN
.yarn/cache/electron-dl-npm-3.5.1-9463e218c9-3d176b2005.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/electron-log-npm-5.0.1-598c753e33-f7e0266171.zip
vendored
Normal file
BIN
.yarn/cache/electron-log-npm-5.0.1-598c753e33-f7e0266171.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/electron-npm-28.0.0-d90b8e0071-5e0da4f3a8.zip
vendored
Normal file
BIN
.yarn/cache/electron-npm-28.0.0-d90b8e0071-5e0da4f3a8.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-36e9ef87fc.zip
vendored
Normal file
BIN
.yarn/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-36e9ef87fc.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip
vendored
Normal file
BIN
.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/glob-npm-10.3.10-da1ef8b112-4f2fe2511e.zip
vendored
Normal file
BIN
.yarn/cache/glob-npm-10.3.10-da1ef8b112-4f2fe2511e.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/http-proxy-agent-npm-7.0.0-106a57cc8c-48d4fac997.zip
vendored
Normal file
BIN
.yarn/cache/http-proxy-agent-npm-7.0.0-106a57cc8c-48d4fac997.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/https-proxy-agent-npm-7.0.2-83ea6a5d42-088969a0dd.zip
vendored
Normal file
BIN
.yarn/cache/https-proxy-agent-npm-7.0.2-83ea6a5d42-088969a0dd.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/isexe-npm-3.1.1-9c0061eead-7fe1931ee4.zip
vendored
Normal file
BIN
.yarn/cache/isexe-npm-3.1.1-9c0061eead-7fe1931ee4.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/jackspeak-npm-2.3.6-42e1233172-57d43ad11e.zip
vendored
Normal file
BIN
.yarn/cache/jackspeak-npm-2.3.6-42e1233172-57d43ad11e.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/lru-cache-npm-10.1.0-f3d3a0f0ab-58056d33e2.zip
vendored
Normal file
BIN
.yarn/cache/lru-cache-npm-10.1.0-f3d3a0f0ab-58056d33e2.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/make-fetch-happen-npm-13.0.0-f87a92bb87-7c7a6d381c.zip
vendored
Normal file
BIN
.yarn/cache/make-fetch-happen-npm-13.0.0-f87a92bb87-7c7a6d381c.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/minipass-collect-npm-2.0.1-73d3907e40-b251bceea6.zip
vendored
Normal file
BIN
.yarn/cache/minipass-collect-npm-2.0.1-73d3907e40-b251bceea6.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/minipass-npm-7.0.4-eacb4e042e-87585e258b.zip
vendored
Normal file
BIN
.yarn/cache/minipass-npm-7.0.4-eacb4e042e-87585e258b.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/node-gyp-npm-10.0.1-48708ce70b-60a74e66d3.zip
vendored
Normal file
BIN
.yarn/cache/node-gyp-npm-10.0.1-48708ce70b-60a74e66d3.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/nopt-npm-7.2.0-dd734b678d-a9c0f57fb8.zip
vendored
Normal file
BIN
.yarn/cache/nopt-npm-7.2.0-dd734b678d-a9c0f57fb8.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/path-scurry-npm-1.10.1-52bd946f2e-e2557cff3a.zip
vendored
Normal file
BIN
.yarn/cache/path-scurry-npm-1.10.1-52bd946f2e-e2557cff3a.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/proc-log-npm-3.0.0-a8c21c2f0f-02b64e1b39.zip
vendored
Normal file
BIN
.yarn/cache/proc-log-npm-3.0.0-a8c21c2f0f-02b64e1b39.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/socks-proxy-agent-npm-8.0.2-df165543cf-4fb165df08.zip
vendored
Normal file
BIN
.yarn/cache/socks-proxy-agent-npm-8.0.2-df165543cf-4fb165df08.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/tldts-core-npm-6.1.0-151f8f4d4b-e7cb17397e.zip
vendored
Normal file
BIN
.yarn/cache/tldts-core-npm-6.1.0-151f8f4d4b-e7cb17397e.zip
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
.yarn/cache/tldts-experimental-npm-6.1.0-d0c2c007a3-a4b0058635.zip
vendored
Normal file
BIN
.yarn/cache/tldts-experimental-npm-6.1.0-d0c2c007a3-a4b0058635.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/which-npm-4.0.0-dd31cd4928-f17e84c042.zip
vendored
Normal file
BIN
.yarn/cache/which-npm-4.0.0-dd31cd4928-f17e84c042.zip
vendored
Normal file
Binary file not shown.
BIN
.yarn/cache/ws-npm-8.13.0-26ffa3016a-53e991bbf9.zip
vendored
BIN
.yarn/cache/ws-npm-8.13.0-26ffa3016a-53e991bbf9.zip
vendored
Binary file not shown.
BIN
.yarn/cache/ws-npm-8.14.2-b339ac47a2-3ca0dad26e.zip
vendored
Normal file
BIN
.yarn/cache/ws-npm-8.14.2-b339ac47a2-3ca0dad26e.zip
vendored
Normal file
Binary file not shown.
541
.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
vendored
541
.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
vendored
File diff suppressed because one or more lines are too long
874
.yarn/releases/yarn-3.6.1.cjs
vendored
874
.yarn/releases/yarn-3.6.1.cjs
vendored
File diff suppressed because one or more lines are too long
894
.yarn/releases/yarn-4.2.1.cjs
vendored
Executable file
894
.yarn/releases/yarn-4.2.1.cjs
vendored
Executable file
File diff suppressed because one or more lines are too long
@@ -1,7 +1,3 @@
|
||||
nodeLinker: node-modules
|
||||
|
||||
plugins:
|
||||
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
|
||||
spec: "@yarnpkg/plugin-interactive-tools"
|
||||
|
||||
yarnPath: .yarn/releases/yarn-3.6.1.cjs
|
||||
yarnPath: .yarn/releases/yarn-4.2.1.cjs
|
||||
|
||||
90
README.md
90
README.md
@@ -1,5 +1,5 @@
|
||||
<p align="center"><img src="https://github.com/agam778/MS-365-Electron/blob/main/assets/banner.png?raw=true" alt="Intro Image"></p>
|
||||
<p align="center">Thanks a lot to <a href="https://t.me/NextWorksGFX">@NextWorksGFX</a> for this amazing banner!</p>
|
||||
<p align="center"><img src="https://github.com/agam778/MS-365-Electron/blob/main/assets/banner.png?raw=true" alt="Credits: "></p>
|
||||
<p align="center">Thanks to <a href="https://t.me/NextWorksGFX">@NextWorksGFX</a> for this amazing banner!</p>
|
||||
<p align="center">Unofficial Microsoft 365 Web Desktop Wrapper made with Electron</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -18,9 +18,6 @@
|
||||
<a href="https://github.com/agam778/MS-365-Electron/releases/">
|
||||
<img align="center" src="https://img.shields.io/github/downloads/agam778/MS-365-Electron/total?label=Downloads&style=style=flat">
|
||||
</a>
|
||||
<a href="https://github.com/agam778/MS-365-Electron/releases/latest/">
|
||||
<img align="center" src="https://img.shields.io/github/downloads/agam778/MS-365-Electron/latest/total?label=Downloads%40Latest">
|
||||
</a>
|
||||
<a href="https://github.com/agam778/MS-365-Electron/actions/workflows/build.yml">
|
||||
<img align="center" src="https://github.com/agam778/MS-365-Electron/actions/workflows/build.yml/badge.svg">
|
||||
</a>
|
||||
@@ -42,43 +39,43 @@
|
||||
- [💿 Installation on Linux](#-installation-on-linux)
|
||||
- [Installation on Ubuntu/Debian based distributions](#installation-on-ubuntudebian-based-distributions)
|
||||
- [Installation on Red Hat/Fedora based distributions](#installation-on-red-hatfedora-based-distributions)
|
||||
- [Installation on Arch/Manjaro Linux based distributions](#installation-on-archmanjaro-linux-based-distributions)
|
||||
- [Installation on Gentoo Linux](#installation-on-gentoo-linux)
|
||||
- [Installation on Arch Linux based distributions](#installation-on-arch-linux-based-distributions)
|
||||
- [Installation on Void Linux](#installation-on-void-linux)
|
||||
- [Maintained by: @xHyroM](#maintained-by-xhyrom)
|
||||
- [Installation on Gentoo Linux (Unmaintained)](#installation-on-gentoo-linux-unmaintained)
|
||||
- [💻 Developing Locally](#-developing-locally)
|
||||
- [📃 MIT License](#-mit-license)
|
||||
- [*Disclaimer: Not affiliated with Microsoft. Office, the name, website, images/icons are the intellectual properties of Microsoft.*](#disclaimer-not-affiliated-with-microsoft-office-the-name-website-imagesicons-are-the-intellectual-properties-of-microsoft)
|
||||
|
||||
# Introduction
|
||||
|
||||
This project is basically a Desktop wrapper for the web version of [Microsoft 365](https://microsoft365.com), which is free but with some basic limits.
|
||||
MS-365-Electron streamlines your workflow by offering a dedicated desktop interface for the free, web-based version of [Microsoft 365](https://microsoft365.com). Think of it as a convenient launchpad for web applications like Word, Excel, and PowerPoint, eliminating the need to navigate through browser tabs.
|
||||
|
||||
I initially made this project because I wanted to use Microsoft 365 on my Linux system with a native experience. Later, I decided to make it public so that others can enjoy this too!
|
||||
|
||||
Don't expect this to be a full-fledged Microsoft 365 Desktop Suite (like we have for Windows/macOS), it's just a wrapper of the web version of Microsoft 365.
|
||||
This is not a full-fledged Microsoft 365 Suite, but just a web wrapper for Microsoft 365 Web, made with Electron.
|
||||
|
||||
Note - Windows Hello or Sign in with Security key is **not** supported and will show you an error. You will have to manually sign in with your E-Mail and Password.
|
||||
|
||||
***Do Expect bugs***
|
||||
***Do expect bugs***
|
||||
|
||||
Supported Platforms
|
||||
|
||||
1. Windows x64 (EXE File)
|
||||
2. macOS x64 (DMG File)
|
||||
1. Windows - x64 (EXE File)
|
||||
2. macOS - x64 and M-series Macs (DMG File)
|
||||
3. Ubuntu/Debian based distributions (DEB File)
|
||||
4. Red Hat Linux/Fedora based distributions (RPM File)
|
||||
5. Arch/Manjaro Linux based distributions (Uploaded on AUR)
|
||||
6. Gentoo Linux (Unofficial overlay)
|
||||
7. All Distributions supporting AppImage (AppImage File); and
|
||||
8. All Distributions supporting Snap (Uploaded on Snap Store)
|
||||
5. Arch Linux based distributions (Uploaded on AUR)
|
||||
6. Void Linux (Maintained by: [@xHyroM](https://github.com/xHyroM))
|
||||
7. Gentoo Linux (Unofficial overlay) **[MAINTAINER NEEDED]**
|
||||
8. All Distributions supporting AppImage (AppImage File); and
|
||||
9. All Distributions supporting Snap (Uploaded on Snap Store)
|
||||
|
||||
# List of Features
|
||||
|
||||
- Discord RPC
|
||||
- Dynamic Icons:
|
||||
- For macOS: Change icon in dock according to the app you've opened [[Preview]](https://github-production-user-asset-6210df.s3.amazonaws.com/68941022/245203309-3d0dfc1b-02e9-43a8-85d7-9493a2b86b56.mp4)
|
||||
- For Windows: Set overlay icon [[Preview]](https://github.com/agam778/MS-365-Electron/assets/68941022/791b661b-2b7d-43a6-96df-ee9c30c9b18a)
|
||||
- For macOS: App's icon in dock changes according to the app you've opened [[Preview]](https://github-production-user-asset-6210df.s3.amazonaws.com/68941022/245203309-3d0dfc1b-02e9-43a8-85d7-9493a2b86b56.mp4)
|
||||
- For Windows: Sets overlay icon [[Preview]](https://github.com/agam778/MS-365-Electron/assets/68941022/791b661b-2b7d-43a6-96df-ee9c30c9b18a)
|
||||
- For Linux: Nothing, yet
|
||||
- Block Ads within the app
|
||||
- Block Ads and Trackers within the app, preventing ads in websites like Outlook
|
||||
- Directly open apps from the menu
|
||||
- Ability to use useragent strings of Windows, macOS or Linux
|
||||
- Switch between normal and enterprise/education/developer account in the same app
|
||||
@@ -153,9 +150,9 @@ For Installing in Red Hat/Fedora based distribution :-
|
||||
2) Scroll down and click the `.rpm` file to download it.
|
||||
3) Then run the rpm file and click Install to install the App. Launch it from the Applications Menu.
|
||||
|
||||
### Installation on Arch/Manjaro Linux based distributions
|
||||
### Installation on Arch Linux based distributions
|
||||
|
||||
1. Install any AUR helper like [`yay`](https://github.com/Jguer/yay)
|
||||
1. Install any AUR helper like [`yay`](https://github.com/Jguer/yay) or [paru](https://github.com/Morganamilo/paru)
|
||||
|
||||
2. There are 2 packages in the AUR
|
||||
- `ms-365-electron-bin`: For installing pre-built releases
|
||||
@@ -169,7 +166,32 @@ For Installing in Red Hat/Fedora based distribution :-
|
||||
|
||||
4. Wait for it to install and tada! The app is installed.
|
||||
|
||||
### Installation on Gentoo Linux
|
||||
### Installation on Void Linux
|
||||
#### Maintained by: [@xHyroM](https://github.com/xHyroM)
|
||||
|
||||
1. In order to install the package, create a new .conf file in the /etc/xbps.d directory containing the repository URL:
|
||||
|
||||
```bash
|
||||
$ sudo nano /etc/xbps.d/99-xhyrom-dev.conf
|
||||
|
||||
repository=https://void-repo.xhyrom.dev
|
||||
```
|
||||
|
||||
2. Synchronize the repository and import the RSA key:
|
||||
|
||||
```bash
|
||||
sudo xbps-install -S
|
||||
```
|
||||
|
||||
3. Install the package:
|
||||
|
||||
```bash
|
||||
sudo xbps-install -S ms-365-electron
|
||||
```
|
||||
|
||||
### Installation on Gentoo Linux (Unmaintained)
|
||||
|
||||
_Maintainer needed_
|
||||
|
||||
1. This is supported by an ebuild uploaded on my unofficial overlay. First, enable the overlay on your system:
|
||||
|
||||
@@ -194,16 +216,10 @@ yarn install
|
||||
```
|
||||
```bash
|
||||
$ yarn run
|
||||
yarn run v1.22.18
|
||||
info Commands available from binary scripts: asar, dircompare, ejs, electron, electron-builder, electron-osx-flat, electron-osx-sign, extract-zip, install-app-deps, is-ci, jake, js-yaml, json5, mime, mkdirp, node-which, rc, rimraf, semver
|
||||
info Project commands
|
||||
- dist
|
||||
electron-builder
|
||||
- pack
|
||||
electron-builder --dir
|
||||
- start
|
||||
electron .
|
||||
question Which command would you like to run?:
|
||||
➤ YN0000: start 'electron .'
|
||||
➤ YN0000: pack 'electron-builder --dir'
|
||||
➤ YN0000: dist 'electron-builder'
|
||||
➤ YN0000: Done in 0s 2ms
|
||||
```
|
||||
|
||||
To start the app, run `yarn start`<br>
|
||||
@@ -211,4 +227,6 @@ To build the app, run `yarn dist`
|
||||
|
||||
# 📃 MIT License
|
||||
|
||||
#### *Disclaimer: Not affiliated with Microsoft. Office, the name, website, images/icons are the intellectual properties of Microsoft.*
|
||||
View the [LICENSE](./LICENSE)
|
||||
|
||||
*Disclaimer: Not affiliated with Microsoft. Office, the name, website, images/icons are the intellectual properties of Microsoft.*
|
||||
|
||||
127
app/main.js
127
app/main.js
@@ -1,57 +1,68 @@
|
||||
const { app, Menu, BrowserWindow, dialog, nativeImage } = require("electron");
|
||||
const { autoUpdater } = require("electron-updater");
|
||||
const checkInternetConnected = require("check-internet-connected");
|
||||
const ElectronDl = require("electron-dl");
|
||||
const contextMenu = require("electron-context-menu");
|
||||
const path = require("path");
|
||||
const log = require("electron-log");
|
||||
const { setActivity, loginToRPC, clearActivity } = require("./rpc");
|
||||
const useragents = require("./useragents.json");
|
||||
const { ElectronBlocker } = require("@cliqz/adblocker-electron");
|
||||
const { getValue } = require("./store");
|
||||
const { menulayout } = require("./menu");
|
||||
import { app, Menu, BrowserWindow, dialog, nativeImage } from "electron";
|
||||
import { clearActivity, setActivity, loginToRPC } from './rpc.js';
|
||||
import { initialize, trackEvent } from "@aptabase/electron/main";
|
||||
import { ElectronBlocker } from "@cliqz/adblocker-electron";
|
||||
import { getValue } from './store.js';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { dirname } from 'path';
|
||||
import { join } from "path";
|
||||
|
||||
log.transports.file.level = "verbose";
|
||||
console.log = log.log;
|
||||
Object.assign(console, log.functions);
|
||||
import Windows from "./useragents.json" with { type: "json" };
|
||||
import checkInternetConnected from "check-internet-connected";
|
||||
import contextMenu from "electron-context-menu";
|
||||
import updaterpkg from "electron-updater";
|
||||
import ElectronDl from "electron-dl";
|
||||
import menulayout from './menu.js'
|
||||
import logpkg from 'electron-log';
|
||||
|
||||
const { transports, log: _log, functions } = logpkg;
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
const { autoUpdater } = updaterpkg;
|
||||
|
||||
transports.file.level = "verbose";
|
||||
console.log = _log;
|
||||
Object.assign(console, functions);
|
||||
|
||||
initialize("A-US-2528580917");
|
||||
|
||||
function createWindow() {
|
||||
const enterpriseOrNormal = getValue("enterprise-or-normal");
|
||||
const custompage = getValue("custompage");
|
||||
const partition = enterpriseOrNormal === "?auth=1" ? "persist:personal" : "persist:work";
|
||||
|
||||
const win = new BrowserWindow({
|
||||
width: 1181,
|
||||
height: 670,
|
||||
icon: path.join(__dirname, "/assets/icons/png/1024x1024.png"),
|
||||
icon: join(__dirname, "/assets/icons/png/1024x1024.png"),
|
||||
show: false,
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
devTools: true,
|
||||
partition: partition,
|
||||
},
|
||||
});
|
||||
|
||||
if (getValue("autohide-menubar") === "true") {
|
||||
win.setAutoHideMenuBar(true);
|
||||
} else {
|
||||
win.setAutoHideMenuBar(false);
|
||||
}
|
||||
});
|
||||
|
||||
win.setAutoHideMenuBar(getValue("autohide-menubar") === "true");
|
||||
|
||||
const splash = new BrowserWindow({
|
||||
width: 810,
|
||||
height: 610,
|
||||
transparent: true,
|
||||
frame: false,
|
||||
icon: path.join(__dirname, "/assets/icons/png/1024x1024.png"),
|
||||
icon: join(__dirname, "/assets/icons/png/1024x1024.png"),
|
||||
});
|
||||
|
||||
splash.loadURL(`https://agam778.github.io/MS-365-Electron/loading`);
|
||||
win.loadURL(
|
||||
`${getValue("enterprise-or-normal") || "https://microsoft365.com/?auth=1"}`,
|
||||
{
|
||||
userAgent: getValue("useragentstring") || useragents.Windows,
|
||||
}
|
||||
);
|
||||
|
||||
win.loadURL(`https://microsoft365.com/${custompage}/${enterpriseOrNormal}`, {
|
||||
userAgent: getValue("useragentstring") || Windows,
|
||||
});
|
||||
|
||||
win.webContents.on("did-finish-load", () => {
|
||||
splash.destroy();
|
||||
win.show();
|
||||
trackEvent("app_started");
|
||||
if (getValue("discordrpcstatus") === "true") {
|
||||
setActivity(`On "${win.webContents.getTitle()}"`);
|
||||
}
|
||||
@@ -126,7 +137,7 @@ app.on("web-contents-created", (event, contents) => {
|
||||
`On "${BrowserWindow.getFocusedWindow().webContents.getTitle()}"`
|
||||
);
|
||||
}
|
||||
return { action: "allow" };
|
||||
return { action: "allow", overrideBrowserWindowOptions: { width: 1081, height: 610 } };
|
||||
}
|
||||
});
|
||||
contents.on("did-finish-load", () => {
|
||||
@@ -142,11 +153,11 @@ app.on("web-contents-created", (event, contents) => {
|
||||
) {
|
||||
if (process.platform === "darwin") {
|
||||
app.dock.setIcon(
|
||||
path.join(__dirname, "../assets/icons/apps/powerpoint-mac.png")
|
||||
join(__dirname, "../assets/icons/apps/powerpoint-mac.png")
|
||||
);
|
||||
} else if (process.platform === "win32") {
|
||||
let nimage = nativeImage.createFromPath(
|
||||
path.join(__dirname, "../assets/icons/apps/powerpoint.png")
|
||||
join(__dirname, "../assets/icons/apps/powerpoint.png")
|
||||
);
|
||||
BrowserWindow.getAllWindows().forEach((window) => {
|
||||
window.setOverlayIcon(nimage, "PowerPoint");
|
||||
@@ -162,11 +173,11 @@ app.on("web-contents-created", (event, contents) => {
|
||||
) {
|
||||
if (process.platform === "darwin") {
|
||||
app.dock.setIcon(
|
||||
path.join(__dirname, "../assets/icons/apps/word-mac.png")
|
||||
join(__dirname, "../assets/icons/apps/word-mac.png")
|
||||
);
|
||||
} else if (process.platform === "win32") {
|
||||
let nimage = nativeImage.createFromPath(
|
||||
path.join(__dirname, "../assets/icons/apps/word.png")
|
||||
join(__dirname, "../assets/icons/apps/word.png")
|
||||
);
|
||||
BrowserWindow.getAllWindows().forEach((window) => {
|
||||
window.setOverlayIcon(nimage, "Word");
|
||||
@@ -182,11 +193,11 @@ app.on("web-contents-created", (event, contents) => {
|
||||
) {
|
||||
if (process.platform === "darwin") {
|
||||
app.dock.setIcon(
|
||||
path.join(__dirname, "../assets/icons/apps/excel-mac.png")
|
||||
join(__dirname, "../assets/icons/apps/excel-mac.png")
|
||||
);
|
||||
} else if (process.platform === "win32") {
|
||||
let nimage = nativeImage.createFromPath(
|
||||
path.join(__dirname, "../assets/icons/apps/excel.png")
|
||||
join(__dirname, "../assets/icons/apps/excel.png")
|
||||
);
|
||||
BrowserWindow.getAllWindows().forEach((window) => {
|
||||
window.setOverlayIcon(nimage, "Excel");
|
||||
@@ -202,11 +213,11 @@ app.on("web-contents-created", (event, contents) => {
|
||||
) {
|
||||
if (process.platform === "darwin") {
|
||||
app.dock.setIcon(
|
||||
path.join(__dirname, "../assets/icons/apps/outlook-mac.png")
|
||||
join(__dirname, "../assets/icons/apps/outlook-mac.png")
|
||||
);
|
||||
} else if (process.platform === "win32") {
|
||||
let nimage = nativeImage.createFromPath(
|
||||
path.join(__dirname, "../assets/icons/apps/outlook.png")
|
||||
join(__dirname, "../assets/icons/apps/outlook.png")
|
||||
);
|
||||
BrowserWindow.getAllWindows().forEach((window) => {
|
||||
window.setOverlayIcon(nimage, "Outlook");
|
||||
@@ -222,11 +233,11 @@ app.on("web-contents-created", (event, contents) => {
|
||||
) {
|
||||
if (process.platform === "darwin") {
|
||||
app.dock.setIcon(
|
||||
path.join(__dirname, "../assets/icons/apps/onedrive-mac.png")
|
||||
join(__dirname, "../assets/icons/apps/onedrive-mac.png")
|
||||
);
|
||||
} else if (process.platform === "win32") {
|
||||
let nimage = nativeImage.createFromPath(
|
||||
path.join(__dirname, "../assets/icons/apps/onedrive.png")
|
||||
join(__dirname, "../assets/icons/apps/onedrive.png")
|
||||
);
|
||||
BrowserWindow.getAllWindows().forEach((window) => {
|
||||
window.setOverlayIcon(nimage, "OneDrive");
|
||||
@@ -239,11 +250,11 @@ app.on("web-contents-created", (event, contents) => {
|
||||
) {
|
||||
if (process.platform === "darwin") {
|
||||
app.dock.setIcon(
|
||||
path.join(__dirname, "../assets/icons/apps/teams-mac.png")
|
||||
join(__dirname, "../assets/icons/apps/teams-mac.png")
|
||||
);
|
||||
} else if (process.platform === "win32") {
|
||||
let nimage = nativeImage.createFromPath(
|
||||
path.join(__dirname, "../assets/icons/apps/teams.png")
|
||||
join(__dirname, "../assets/icons/apps/teams.png")
|
||||
);
|
||||
BrowserWindow.getAllWindows().forEach((window) => {
|
||||
window.setOverlayIcon(nimage, "Teams");
|
||||
@@ -256,11 +267,11 @@ app.on("web-contents-created", (event, contents) => {
|
||||
) {
|
||||
if (process.platform === "darwin") {
|
||||
app.dock.setIcon(
|
||||
path.join(__dirname, "../assets/icons/apps/onenote-mac.png")
|
||||
join(__dirname, "../assets/icons/apps/onenote-mac.png")
|
||||
);
|
||||
} else if (process.platform === "win32") {
|
||||
let nimage = nativeImage.createFromPath(
|
||||
path.join(__dirname, "../assets/icons/apps/onenote.png")
|
||||
join(__dirname, "../assets/icons/apps/onenote.png")
|
||||
);
|
||||
BrowserWindow.getAllWindows().forEach((window) => {
|
||||
window.setOverlayIcon(nimage, "OneNote");
|
||||
@@ -277,10 +288,36 @@ app.on("web-contents-created", (event, contents) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
contents.insertCSS(
|
||||
`
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: transparent;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: #555;
|
||||
}
|
||||
`
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
app.on("browser-window-created", (event, window) => {
|
||||
if (getValue("autohide-menubar") === "true") {
|
||||
window.setAutoHideMenuBar(true);
|
||||
} else {
|
||||
window.setAutoHideMenuBar(false);
|
||||
}
|
||||
window.webContents.on("did-finish-load", () => {
|
||||
if (getValue("discordrpcstatus") === "true") {
|
||||
setActivity(`On "${window.webContents.getTitle()}"`);
|
||||
|
||||
450
app/menu.js
450
app/menu.js
@@ -1,20 +1,21 @@
|
||||
const useragents = require("./useragents.json");
|
||||
const {
|
||||
app,
|
||||
dialog,
|
||||
BrowserWindow,
|
||||
ShareMenu,
|
||||
clipboard,
|
||||
} = require("electron");
|
||||
const axios = require("axios");
|
||||
const { clearActivity, setActivity } = require("./rpc");
|
||||
const { shell } = require("electron");
|
||||
const { autoUpdater } = require("electron-updater");
|
||||
const { ElectronBlocker } = require("@cliqz/adblocker-electron");
|
||||
const fetch = require("cross-fetch");
|
||||
const openAboutWindow = require("about-window").default;
|
||||
const path = require("path");
|
||||
const { getValue, setValue, getValueOrDefault } = require("./store");
|
||||
import { app, dialog, BrowserWindow, ShareMenu, clipboard } from "electron";
|
||||
import { getValue, setValue, getValueOrDefault } from './store.js';
|
||||
import { ElectronBlocker } from "@cliqz/adblocker-electron";
|
||||
import { clearActivity, setActivity } from './rpc.js';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { shell } from "electron";
|
||||
import { dirname } from 'path';
|
||||
|
||||
import useragents from "./useragents.json" with { type: "json" }
|
||||
import updaterpkg from "electron-updater";
|
||||
import fetch from "cross-fetch";
|
||||
import axios from "axios";
|
||||
import path from "path";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
const { autoUpdater } = updaterpkg;
|
||||
|
||||
|
||||
async function checkForUpdates() {
|
||||
try {
|
||||
@@ -65,12 +66,10 @@ async function checkForUpdates() {
|
||||
}
|
||||
|
||||
async function openExternalLink(url) {
|
||||
const { shell } = require("electron");
|
||||
await shell.openExternal(url);
|
||||
}
|
||||
|
||||
async function openLogsFolder() {
|
||||
const { shell } = require("electron");
|
||||
if (process.platform === "win32") {
|
||||
await shell.openPath(
|
||||
"C:\\Users\\" +
|
||||
@@ -102,13 +101,24 @@ function setUserAgent(useragent) {
|
||||
}
|
||||
}
|
||||
|
||||
getValueOrDefault("enterprise-or-normal", "https://microsoft365.com/?auth=1");
|
||||
getValueOrDefault("enterprise-or-normal", "?auth=1");
|
||||
getValueOrDefault("websites-in-new-window", "true");
|
||||
getValueOrDefault("autohide-menubar", "false");
|
||||
getValueOrDefault("useragentstring", useragents.Windows);
|
||||
getValueOrDefault("discordrpcstatus", "false");
|
||||
getValueOrDefault("blockadsandtrackers", "false");
|
||||
getValueOrDefault("dynamicicons", "true");
|
||||
getValueOrDefault("autoupdater", "true");
|
||||
getValueOrDefault("custompage", "home");
|
||||
|
||||
// temporary code to change the value of enterprise-or-normal to the new values for the update, will be removed in the next update.
|
||||
if (getValue("enterprise-or-normal") === "https://microsoft365.com/?auth=1") {
|
||||
setValue("enterprise-or-normal", "?auth=1");
|
||||
} else if (
|
||||
getValue("enterprise-or-normal") === "https://microsoft365.com/?auth=2"
|
||||
) {
|
||||
setValue("enterprise-or-normal", "?auth=2");
|
||||
}
|
||||
|
||||
const menulayout = [
|
||||
...(process.platform === "darwin"
|
||||
@@ -118,19 +128,10 @@ const menulayout = [
|
||||
submenu: [
|
||||
{
|
||||
label: "About MS-365-Electron",
|
||||
click: () => {
|
||||
openAboutWindow({
|
||||
icon_path: path.join(__dirname, "../assets/about.png"),
|
||||
product_name: "MS-365-Electron",
|
||||
copyright:
|
||||
"Copyright (c) 2021-2023 Agampreet Singh\nMicrosoft 365, the name, website, images/icons\nare the intellectual properties of Microsoft.",
|
||||
package_json_dir: __dirname + "/../",
|
||||
bug_report_url:
|
||||
"https://github.com/agam778/MS-365-Electron/issues/",
|
||||
bug_link_text: "Report an issue",
|
||||
adjust_window_size: "2",
|
||||
show_close_button: "Close",
|
||||
});
|
||||
click: async () => {
|
||||
await openExternalLink(
|
||||
"https://github.com/agam778/MS-365-Electron"
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -141,14 +142,6 @@ const menulayout = [
|
||||
},
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Learn More",
|
||||
click: async () => {
|
||||
await openExternalLink(
|
||||
"https://github.com/agam778/MS-365-Electron"
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Open Logs Folder",
|
||||
click: async () => {
|
||||
@@ -160,44 +153,44 @@ const menulayout = [
|
||||
label: "Preferences",
|
||||
submenu: [
|
||||
{
|
||||
label: "Open Normal version of MS 365",
|
||||
label: "Open MS 365 with Personal Account",
|
||||
type: "radio",
|
||||
click() {
|
||||
setValue(
|
||||
"enterprise-or-normal",
|
||||
"https://microsoft365.com/?auth=1"
|
||||
"?auth=1"
|
||||
);
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Normal version of MS 365",
|
||||
title: "MS 365 with Personal Account",
|
||||
message:
|
||||
"The normal version of MS 365 will be opened.\n\nPlease restart the app to apply the changes.",
|
||||
"MS 365 will now open with your Personal Account.\n\nPlease restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked:
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=1",
|
||||
"?auth=1",
|
||||
},
|
||||
{
|
||||
label: "Open Enterprise version of MS 365",
|
||||
label: "Open MS 365 with Work/School Account",
|
||||
type: "radio",
|
||||
click() {
|
||||
setValue(
|
||||
"enterprise-or-normal",
|
||||
"https://microsoft365.com/?auth=2"
|
||||
"?auth=2"
|
||||
);
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Enterprise version of MS 365",
|
||||
title: "MS 365 with Work/School Account",
|
||||
message:
|
||||
"The enterprise version of MS 365 will be opened.\n\nPlease restart the app to apply the changes.",
|
||||
"MS 365 will now open with your Work/School account.\n\nPlease restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked:
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=2",
|
||||
"?auth=2",
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
@@ -231,6 +224,72 @@ const menulayout = [
|
||||
checked: getValue("websites-in-new-window") === "false",
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Custom Home Page",
|
||||
submenu: [
|
||||
{
|
||||
label: "Home (Default)",
|
||||
type: "radio",
|
||||
click: () => {
|
||||
setValue("custompage", "home");
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Custom Home Page",
|
||||
message:
|
||||
"You have set the home page to the default home page. Please restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked: getValue("custompage") === "home",
|
||||
},
|
||||
{
|
||||
label: "Create",
|
||||
type: "radio",
|
||||
click: () => {
|
||||
setValue("custompage", "create");
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Custom Home Page",
|
||||
message:
|
||||
"You have set the home page to the \"Create\" page. Please restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked: getValue("custompage") === "create",
|
||||
},
|
||||
{
|
||||
label: "My Content",
|
||||
type: "radio",
|
||||
click: () => {
|
||||
setValue("custompage", "mycontent");
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Custom Home Page",
|
||||
message:
|
||||
"You have set the home page to the \"My Content\" page. Please restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked: getValue("custompage") === "mycontent",
|
||||
},
|
||||
{
|
||||
label: "Apps",
|
||||
type: "radio",
|
||||
click: () => {
|
||||
setValue("custompage", "apps");
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Custom Home Page",
|
||||
message:
|
||||
"You have set the home page to the \"Apps\" page. Please restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked: getValue("custompage") === "apps",
|
||||
},
|
||||
],
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Enable Discord RPC",
|
||||
type: "checkbox",
|
||||
@@ -335,13 +394,15 @@ const menulayout = [
|
||||
message: "Ads and trackers will no longer be blocked.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then(
|
||||
(blocker) => {
|
||||
blocker.disableBlockingInSession(
|
||||
BrowserWindow.getFocusedWindow().webContents.session
|
||||
);
|
||||
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
|
||||
BrowserWindow.getAllWindows().forEach(window => {
|
||||
blocker.disableBlockingInSession(window.webContents.session);
|
||||
});
|
||||
}).catch((error) => {
|
||||
if (error.message !== "Trying to disable blocking which was not enabled") {
|
||||
console.error(error);
|
||||
}
|
||||
);
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (
|
||||
@@ -349,11 +410,10 @@ const menulayout = [
|
||||
getValue("blockadsandtrackers") === undefined
|
||||
) {
|
||||
setValue("blockadsandtrackers", "true");
|
||||
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then(
|
||||
(blocker) => {
|
||||
blocker.enableBlockingInSession(
|
||||
BrowserWindow.getFocusedWindow().webContents.session
|
||||
);
|
||||
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
|
||||
BrowserWindow.getAllWindows().forEach(window => {
|
||||
blocker.enableBlockingInSession(window.webContents.session);
|
||||
})
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Block Ads and Trackers",
|
||||
@@ -428,19 +488,10 @@ const menulayout = [
|
||||
submenu: [
|
||||
{
|
||||
label: "About MS-365-Electron",
|
||||
click: () => {
|
||||
openAboutWindow({
|
||||
icon_path: path.join(__dirname, "../assets/about.png"),
|
||||
product_name: "MS-365-Electron",
|
||||
copyright:
|
||||
"Copyright (c) 2021-2023 Agampreet Singh\nMicrosoft 365, the name, website, images/icons\nare the intellectual properties of Microsoft.",
|
||||
package_json_dir: __dirname + "/../",
|
||||
bug_report_url:
|
||||
"https://github.com/agam778/MS-365-Electron/issues/",
|
||||
bug_link_text: "Report an issue",
|
||||
adjust_window_size: "2",
|
||||
show_close_button: "Close",
|
||||
});
|
||||
click: async () => {
|
||||
await openExternalLink(
|
||||
"https://github.com/agam778/MS-365-Electron"
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -450,14 +501,6 @@ const menulayout = [
|
||||
},
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Learn More",
|
||||
click: async () => {
|
||||
await openExternalLink(
|
||||
"https://github.com/agam778/MS-365-Electron"
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Open Logs Folder",
|
||||
click: async () => {
|
||||
@@ -466,44 +509,44 @@ const menulayout = [
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Open Normal version of MS 365",
|
||||
label: "Open MS 365 with Personal Account",
|
||||
type: "radio",
|
||||
click() {
|
||||
setValue(
|
||||
"enterprise-or-normal",
|
||||
"https://microsoft365.com/?auth=1"
|
||||
"?auth=1"
|
||||
);
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Normal version of MS 365",
|
||||
title: "MS 365 with Personal Account",
|
||||
message:
|
||||
"The normal version of MS 365 will be opened.\n\nPlease restart the app to apply the changes.",
|
||||
"MS 365 will now open with your Personal Account.\n\nPlease restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked:
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=1",
|
||||
"?auth=1",
|
||||
},
|
||||
{
|
||||
label: "Open Enterprise version of MS 365",
|
||||
label: "Open MS 365 with Work/School Account",
|
||||
type: "radio",
|
||||
click() {
|
||||
setValue(
|
||||
"enterprise-or-normal",
|
||||
"https://microsoft365.com/?auth=2"
|
||||
"?auth=2"
|
||||
);
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Enterprise version of MS 365",
|
||||
title: "MS 365 with Work/School Account",
|
||||
message:
|
||||
"The enterprise version of MS 365 will be opened.\n\nPlease restart the app to apply the changes.",
|
||||
"MS 365 will now open with your Work/School account.\n\nPlease restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked:
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=2",
|
||||
"?auth=2",
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
@@ -537,6 +580,72 @@ const menulayout = [
|
||||
checked: getValue("websites-in-new-window") === "false",
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Custom Home Page",
|
||||
submenu: [
|
||||
{
|
||||
label: "Home (Default)",
|
||||
type: "radio",
|
||||
click: () => {
|
||||
setValue("custompage", "home");
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Custom Home Page",
|
||||
message:
|
||||
"You have set the home page to the default home page. Please restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked: getValue("custompage") === "home",
|
||||
},
|
||||
{
|
||||
label: "Create",
|
||||
type: "radio",
|
||||
click: () => {
|
||||
setValue("custompage", "create");
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Custom Home Page",
|
||||
message:
|
||||
"You have set the home page to the \"Create\" page. Please restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked: getValue("custompage") === "create",
|
||||
},
|
||||
{
|
||||
label: "My Content",
|
||||
type: "radio",
|
||||
click: () => {
|
||||
setValue("custompage", "mycontent");
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Custom Home Page",
|
||||
message:
|
||||
"You have set the home page to the \"My Content\" page. Please restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked: getValue("custompage") === "mycontent",
|
||||
},
|
||||
{
|
||||
label: "Apps",
|
||||
type: "radio",
|
||||
click: () => {
|
||||
setValue("custompage", "apps");
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Custom Home Page",
|
||||
message:
|
||||
"You have set the home page to the \"Apps\" page. Please restart the app to apply the changes.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
},
|
||||
checked: getValue("custompage") === "apps",
|
||||
},
|
||||
],
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Enable Discord RPC",
|
||||
type: "checkbox",
|
||||
@@ -641,13 +750,15 @@ const menulayout = [
|
||||
message: "Ads and trackers will no longer be blocked.",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then(
|
||||
(blocker) => {
|
||||
blocker.disableBlockingInSession(
|
||||
BrowserWindow.getFocusedWindow().webContents.session
|
||||
);
|
||||
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
|
||||
BrowserWindow.getAllWindows().forEach(window => {
|
||||
blocker.disableBlockingInSession(window.webContents.session);
|
||||
});
|
||||
}).catch((error) => {
|
||||
if (error.message !== "Trying to disable blocking which was not enabled") {
|
||||
console.error(error);
|
||||
}
|
||||
);
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (
|
||||
@@ -655,11 +766,10 @@ const menulayout = [
|
||||
getValue("blockadsandtrackers") === undefined
|
||||
) {
|
||||
setValue("blockadsandtrackers", "true");
|
||||
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then(
|
||||
(blocker) => {
|
||||
blocker.enableBlockingInSession(
|
||||
BrowserWindow.getFocusedWindow().webContents.session
|
||||
);
|
||||
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
|
||||
BrowserWindow.getAllWindows().forEach(window => {
|
||||
blocker.enableBlockingInSession(window.webContents.session);
|
||||
})
|
||||
dialog.showMessageBoxSync({
|
||||
type: "info",
|
||||
title: "Block Ads and Trackers",
|
||||
@@ -722,18 +832,35 @@ const menulayout = [
|
||||
label: "File",
|
||||
submenu: [
|
||||
{
|
||||
label: "New Window",
|
||||
label: "New Window (Personal)",
|
||||
accelerator: "CmdOrCtrl+N",
|
||||
click: () => {
|
||||
let newWindow = new BrowserWindow({
|
||||
width: 1181,
|
||||
height: 670,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
devTools: true,
|
||||
partition: "persist:personal",
|
||||
},
|
||||
});
|
||||
newWindow.loadURL(getValue("enterprise-or-normal"));
|
||||
newWindow.loadURL(`https://microsoft365.com/${getValue("custompage")}/?auth=1`);
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "New Window (Work/School)",
|
||||
accelerator: "CmdOrCtrl+Shift+N",
|
||||
click: () => {
|
||||
let newWindow = new BrowserWindow({
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
devTools: true,
|
||||
partition: "persist:work",
|
||||
},
|
||||
});
|
||||
newWindow.loadURL(`https://microsoft365.com/${getValue("custompage")}/?auth=2`);
|
||||
},
|
||||
},
|
||||
{ type: "separator" },
|
||||
@@ -741,7 +868,11 @@ const menulayout = [
|
||||
label: "Close Window",
|
||||
accelerator: "CmdOrCtrl+W",
|
||||
click: () => {
|
||||
BrowserWindow.getFocusedWindow().close();
|
||||
try {
|
||||
BrowserWindow.getFocusedWindow().close();
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -859,15 +990,16 @@ const menulayout = [
|
||||
click: () => {
|
||||
if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=2"
|
||||
"?auth=2"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let wordwindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:work",
|
||||
},
|
||||
});
|
||||
wordwindow.loadURL("https://microsoft365.com/launch/word?auth=2");
|
||||
@@ -878,15 +1010,16 @@ const menulayout = [
|
||||
}
|
||||
} else if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=1"
|
||||
"?auth=1"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let wordwindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:personal",
|
||||
},
|
||||
});
|
||||
wordwindow.loadURL("https://microsoft365.com/launch/word?auth=1");
|
||||
@@ -903,15 +1036,16 @@ const menulayout = [
|
||||
click: () => {
|
||||
if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=2"
|
||||
"?auth=2"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let excelwindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:work",
|
||||
},
|
||||
});
|
||||
excelwindow.loadURL(
|
||||
@@ -924,15 +1058,16 @@ const menulayout = [
|
||||
}
|
||||
} else if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=1"
|
||||
"?auth=1"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let excelwindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:personal",
|
||||
},
|
||||
});
|
||||
excelwindow.loadURL(
|
||||
@@ -951,15 +1086,16 @@ const menulayout = [
|
||||
click: () => {
|
||||
if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=2"
|
||||
"?auth=2"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let powerpointwindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:work",
|
||||
},
|
||||
});
|
||||
powerpointwindow.loadURL(
|
||||
@@ -972,15 +1108,16 @@ const menulayout = [
|
||||
}
|
||||
} else if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=1"
|
||||
"?auth=1"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let powerpointwindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:personal",
|
||||
},
|
||||
});
|
||||
powerpointwindow.loadURL(
|
||||
@@ -999,15 +1136,16 @@ const menulayout = [
|
||||
click: () => {
|
||||
if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=2"
|
||||
"?auth=2"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let outlookwindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:work",
|
||||
},
|
||||
});
|
||||
outlookwindow.loadURL("https://outlook.office.com/mail/");
|
||||
@@ -1018,15 +1156,16 @@ const menulayout = [
|
||||
}
|
||||
} else if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=1"
|
||||
"?auth=1"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let outlookwindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:personal",
|
||||
},
|
||||
});
|
||||
outlookwindow.loadURL(
|
||||
@@ -1045,15 +1184,16 @@ const menulayout = [
|
||||
click: () => {
|
||||
if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=2"
|
||||
"?auth=2"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let onedrivewindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:work",
|
||||
},
|
||||
});
|
||||
onedrivewindow.loadURL(
|
||||
@@ -1066,15 +1206,16 @@ const menulayout = [
|
||||
}
|
||||
} else if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=1"
|
||||
"?auth=1"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let onedrivewindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:personal",
|
||||
},
|
||||
});
|
||||
onedrivewindow.loadURL(
|
||||
@@ -1093,15 +1234,16 @@ const menulayout = [
|
||||
click: () => {
|
||||
if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=2"
|
||||
"?auth=2"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let onenotewindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:work",
|
||||
},
|
||||
});
|
||||
onenotewindow.loadURL(
|
||||
@@ -1114,15 +1256,16 @@ const menulayout = [
|
||||
}
|
||||
} else if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=1"
|
||||
"?auth=1"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let onenotewindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:personal",
|
||||
},
|
||||
});
|
||||
onenotewindow.loadURL("https://www.onenote.com/notebooks?auth=1");
|
||||
@@ -1139,15 +1282,16 @@ const menulayout = [
|
||||
click: () => {
|
||||
if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=2"
|
||||
"?auth=2"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let allappswindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:work",
|
||||
},
|
||||
});
|
||||
allappswindow.loadURL("https://www.microsoft365.com/apps?auth=2");
|
||||
@@ -1158,15 +1302,16 @@ const menulayout = [
|
||||
}
|
||||
} else if (
|
||||
getValue("enterprise-or-normal") ===
|
||||
"https://microsoft365.com/?auth=1"
|
||||
"?auth=1"
|
||||
) {
|
||||
if (getValue("websites-in-new-window") === "true") {
|
||||
let allappswindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
width: 1081,
|
||||
height: 570,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
partition: "persist:personal",
|
||||
},
|
||||
});
|
||||
allappswindow.loadURL("https://www.microsoft365.com/apps?auth=1");
|
||||
@@ -1226,4 +1371,5 @@ const menulayout = [
|
||||
],
|
||||
},
|
||||
];
|
||||
module.exports = { menulayout };
|
||||
|
||||
export default menulayout;
|
||||
|
||||
20
app/rpc.js
20
app/rpc.js
@@ -1,12 +1,12 @@
|
||||
const { Client } = require("@xhayper/discord-rpc");
|
||||
const { dialog, BrowserWindow } = require("electron");
|
||||
const { setValue } = require("./store");
|
||||
import { dialog, BrowserWindow } from "electron";
|
||||
import { Client } from "@xhayper/discord-rpc";
|
||||
import { setValue } from "./store.js";
|
||||
|
||||
const client = new Client({
|
||||
clientId: "942637872530460742",
|
||||
});
|
||||
|
||||
async function rpcError(status) {
|
||||
export async function rpcError(status) {
|
||||
const rpcerror = dialog.showMessageBoxSync(BrowserWindow.getFocusedWindow(), {
|
||||
type: "error",
|
||||
title: "Discord RPC Error",
|
||||
@@ -19,14 +19,14 @@ async function rpcError(status) {
|
||||
}
|
||||
}
|
||||
|
||||
async function clearActivity() {
|
||||
export async function clearActivity() {
|
||||
await client.user?.clearActivity().catch((err) => {
|
||||
rpcError("clearing");
|
||||
console.error(err);
|
||||
});
|
||||
}
|
||||
|
||||
async function setActivity(details) {
|
||||
export async function setActivity(details) {
|
||||
if (!client.user) {
|
||||
await loginToRPC();
|
||||
}
|
||||
@@ -43,15 +43,9 @@ async function setActivity(details) {
|
||||
});
|
||||
}
|
||||
|
||||
async function loginToRPC() {
|
||||
export async function loginToRPC() {
|
||||
await client.login().catch((err) => {
|
||||
rpcError("logging into");
|
||||
console.error(err);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
clearActivity,
|
||||
setActivity,
|
||||
loginToRPC,
|
||||
};
|
||||
|
||||
10
app/store.js
10
app/store.js
@@ -1,15 +1,15 @@
|
||||
const Store = require("electron-store");
|
||||
import Store from "electron-store";
|
||||
const store = new Store();
|
||||
|
||||
function getValue(key) {
|
||||
export function getValue(key) {
|
||||
return store.get(key);
|
||||
}
|
||||
|
||||
function setValue(key, value) {
|
||||
export function setValue(key, value) {
|
||||
store.set(key, value);
|
||||
}
|
||||
|
||||
function getValueOrDefault(key, defaultValue) {
|
||||
export function getValueOrDefault(key, defaultValue) {
|
||||
const value = store.get(key);
|
||||
if (value === undefined) {
|
||||
store.set(key, defaultValue);
|
||||
@@ -17,5 +17,3 @@ function getValueOrDefault(key, defaultValue) {
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
module.exports = { getValue, setValue, getValueOrDefault };
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Windows": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
|
||||
"macOS": "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
|
||||
"Linux": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
|
||||
"Windows": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
|
||||
"macOS": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
|
||||
"Linux": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Loading MS-Office-Electron</title>
|
||||
<title>Loading MS-365-Electron</title>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css"
|
||||
@@ -10,7 +10,6 @@
|
||||
<link rel="stylesheet" href="./style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<!-- partial:index.partial.html -->
|
||||
<div id="particles-background" class="vertical-centered-box"></div>
|
||||
<div id="particles-foreground" class="vertical-centered-box"></div>
|
||||
|
||||
@@ -24,11 +23,10 @@
|
||||
width="50px"
|
||||
height="auto"
|
||||
viewBox="0 0 36 24"
|
||||
src="https://github.com/agam778/MS-Office-Electron/raw/main/assets/icon.png"
|
||||
src="https://github.com/agam778/MS-365-Electron/raw/main/assets/icon.png"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- partial -->
|
||||
<script src="./script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
21
package.json
21
package.json
@@ -1,8 +1,9 @@
|
||||
{
|
||||
"name": "ms-365-electron",
|
||||
"version": "1.0.0",
|
||||
"version": "2.0.0",
|
||||
"type": "module",
|
||||
"description": "Unofficial Microsoft 365 Web Desktop Wrapper made with Electron",
|
||||
"main": "app/main.js",
|
||||
"main": "./app/main.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/agam778/MS-365-Electron.git"
|
||||
@@ -66,23 +67,23 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"electron": "^25.3.2",
|
||||
"electron": "^30.0.0",
|
||||
"electron-builder": "^24.6.3",
|
||||
"eslint": "^8.45.0"
|
||||
"eslint": "^9.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aptabase/electron": "^0.3.1",
|
||||
"@cliqz/adblocker-electron": "^1.26.6",
|
||||
"@xhayper/discord-rpc": "^1.0.21",
|
||||
"about-window": "^1.15.2",
|
||||
"axios": "^1.4.0",
|
||||
"check-internet-connected": "^2.0.6",
|
||||
"cross-fetch": "^4.0.0",
|
||||
"electron-context-menu": "^3.6.1",
|
||||
"electron-dl": "^3.5.0",
|
||||
"electron-context-menu": "^4.0.0",
|
||||
"electron-dl": "^4.0.0",
|
||||
"electron-log": "^5.0.0-beta.25",
|
||||
"electron-store": "^8.1.0",
|
||||
"electron-store": "^9.0.0",
|
||||
"electron-updater": "^6.1.4",
|
||||
"node-gyp": "^9.4.0"
|
||||
"node-gyp": "^10.0.0"
|
||||
},
|
||||
"packageManager": "yarn@3.6.1"
|
||||
"packageManager": "yarn@4.2.1"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user