Compare commits

...

102 Commits

Author SHA1 Message Date
Agampreet Singh
4cc4f71535 Bump version to 2.0.0 2024-05-08 23:03:48 +05:30
Agampreet Singh
6f49a5554f Enable/Disable ad blocking in all windows when turned on/off from menu 2024-05-08 21:53:13 +05:30
Agampreet Singh
aaa862364e Add "Custom Home Page" option
This lets you choose the custom page to load when you start the app.
2024-05-08 21:32:17 +05:30
Agampreet Singh
0a3e4514a9 Update "Supported Platforms" list 2024-05-08 20:28:57 +05:30
Agampreet Singh
701d63c900 Update yarn.lock 2024-05-08 15:59:30 +05:30
renovate[bot]
8f24d0184a fix(deps): update dependency @cliqz/adblocker-electron to v1.27.3 (#224)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-08 12:29:50 +05:30
Agampreet Singh
34fdc82b50 Add custom scrollbar to web contents 2024-05-08 12:28:56 +05:30
Agampreet Singh
48bab03708 Refactor main window creation and configuration 2024-05-08 00:59:05 +05:30
Agampreet Singh
af448cac3d Override height and width of every new window created 2024-05-08 00:46:02 +05:30
Agampreet Singh
102126d6d3 Update useragent strings 2024-05-08 00:30:26 +05:30
Agampreet Singh
0b308b066f Remove about-window package 2024-05-08 00:29:06 +05:30
Agampreet Singh
e60ffc52c9 Remove unused require statement in openExternalLink function 2024-05-08 00:16:54 +05:30
Agampreet Singh
ed0e90c451 Add Aptabase 2024-05-07 19:26:01 +05:30
Agampreet Singh
3f67f7575f Revert "Add Google Analytics tracking code"
This reverts commit c094b28f74.
2024-05-07 16:23:29 +05:30
Agampreet Singh
9fac90d90b refactor: convert to ESM syntax 2024-05-07 15:43:33 +05:30
renovate[bot]
36e42e311b fix(deps): update dependency electron-context-menu to v4 (#221)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 15:53:48 +05:30
renovate[bot]
bffa016eb9 chore(deps): update yarn to v4.2.1 (#220)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 15:42:38 +05:30
renovate[bot]
c85ae12648 chore(deps): update dependency eslint to v9 (#213)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 15:42:05 +05:30
renovate[bot]
bc7968978a chore(deps): update dependency electron to v30 (#215)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 15:41:51 +05:30
renovate[bot]
058711af45 fix(deps): update dependency electron-dl to v4 (#222)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 15:39:20 +05:30
renovate[bot]
179c52c28b chore(deps): update actions/checkout digest to 0ad4b8f (#217)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 15:39:10 +05:30
renovate[bot]
acdae139d6 fix(deps): update dependency @cliqz/adblocker-electron to v1.27.2 (#212)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 15:37:36 +05:30
renovate[bot]
9a0bdc8fae fix(deps): update dependency electron-store to v9 (#223)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 15:36:31 +05:30
renovate[bot]
81fe8c3ec0 chore(deps): update dependency electron to v29.3.2 (#211)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 15:36:01 +05:30
Agampreet Singh
8887d8a365 Add Void Linux installation instructions (#214) 2024-05-06 15:34:01 +05:30
Agampreet Singh
83ecdcd09b Update version to 1.2.0 2024-03-27 23:50:46 +05:30
Agampreet Singh
191876de3d Update useragent strings 2024-03-26 16:52:16 +05:30
renovate[bot]
56ab9b5007 fix(deps): update dependency node-gyp to v10.1.0 (#210)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-26 11:12:13 +05:30
renovate[bot]
7de220f5c6 chore(deps): update dependency electron to v29.1.5 (#209)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 18:18:27 +05:30
renovate[bot]
7c295c51e6 fix(deps): update dependency axios to v1.6.8 (#208)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-17 18:39:01 +05:30
renovate[bot]
34fc4ede8d chore(deps): update dependency electron to v29.1.4 (#207)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-14 22:27:38 +05:30
renovate[bot]
dc23b1a58d fix(deps): update dependency electron-updater to v6.1.8 (#196)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 15:58:05 +05:30
renovate[bot]
664ddf81bf chore(deps): update dependency electron-builder to v24.13.3 (#195)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 15:41:25 +05:30
renovate[bot]
705f0447e7 chore(deps): update dependency electron to v29.1.2 (#206)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 15:25:13 +05:30
renovate[bot]
69565c589a chore(deps): update dependency electron to v29 (#197)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 15:10:34 +05:30
renovate[bot]
75d032248f fix(deps): update dependency @cliqz/adblocker-electron to v1.26.16 (#198)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 15:10:03 +05:30
renovate[bot]
7bd0ad2462 chore(deps): update dependency eslint to v8.57.0 (#199)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 15:09:12 +05:30
renovate[bot]
dc64f14fcb chore(deps): update yarn to v4.1.1 (#202)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 15:08:57 +05:30
renovate[bot]
6e7a551d86 fix(deps): update dependency electron-store to v8.2.0 (#204)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 15:08:49 +05:30
renovate[bot]
477f534049 fix(deps): update dependency electron-log to v5.1.2 (#205)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 15:08:40 +05:30
renovate[bot]
25ac26214b chore(deps): update dependency electron to v28.2.2 (#192)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 18:50:25 +05:30
renovate[bot]
e884d01cb1 chore(deps): update dependency electron-builder to v24.13.0 (#193)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-13 18:50:09 +05:30
renovate[bot]
729e9e276d chore(deps): update dependency electron to v28.2.1 (#189)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-04 18:33:02 +05:30
renovate[bot]
df135f9578 fix(deps): update dependency electron-log to v5.1.1 (#190)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-04 18:32:44 +05:30
renovate[bot]
e333196dc2 fix(deps): update dependency electron-dl to v3.5.2 (#191)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-04 18:32:35 +05:30
renovate[bot]
77c7cb08c0 chore(deps): update yarn to v4.1.0 (#188)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-31 22:49:44 +05:30
renovate[bot]
96a4020e1e chore(deps): update dependency electron to v28.2.0 (#185)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-31 22:46:07 +05:30
renovate[bot]
cbe9194a35 fix(deps): update dependency axios to v1.6.7 (#186)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-31 22:45:36 +05:30
renovate[bot]
e238550568 chore(deps): update dependency electron-builder to v24.12.0 (#187)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-31 22:45:11 +05:30
renovate[bot]
e942b06a10 fix(deps): update dependency electron-log to v5.1.0 (#184)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-31 22:45:02 +05:30
renovate[bot]
affc7bb676 chore(deps): update dependency electron to v28.1.4 (#180)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-19 19:44:40 +05:30
renovate[bot]
4d0d742520 fix(deps): update dependency axios to v1.6.5 (#181)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-19 19:44:32 +05:30
renovate[bot]
686d3ac491 fix(deps): update dependency @cliqz/adblocker-electron to v1.26.15 (#182)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-19 19:44:25 +05:30
renovate[bot]
6a706a96f4 chore(deps): update dependency electron-builder to v24.11.0 (#183)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-19 19:44:17 +05:30
renovate[bot]
bcd15e05cd fix(deps): update dependency electron-log to v5.0.3 (#179)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-29 12:31:02 +05:30
renovate[bot]
c9ea1d2d3b fix(deps): update dependency axios to v1.6.3 (#178)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-28 22:28:10 +05:30
Agampreet Singh
c094b28f74 Add Google Analytics tracking code 2023-12-26 13:04:44 +05:30
Agampreet Singh
62932046e4 Handle exception when closing window
- Prevents showing an error if someone tries to close a window with shortcut key if there is no window opened in macOS
2023-12-24 23:16:52 +05:30
Agampreet Singh
6ff03b85b9 Set default value for opening websites in new window 2023-12-24 22:16:05 +05:30
Agampreet Singh
83a1084e06 Update version to 1.1.0 2023-12-24 20:14:37 +05:30
Agampreet Singh
2db6bb827c Update MS 365 account labels in menu (2/2) 2023-12-24 19:56:35 +05:30
Agampreet Singh
9faa1cde1f Update window dimensions in menu.js 2023-12-24 19:54:12 +05:30
Agampreet Singh
6d209c1a5b Introducing separate sessions for Work/School and Personal accounts!
- You might have to login again, sorry for the cute little incovenience
2023-12-24 19:52:25 +05:30
Agampreet Singh
ec2421da96 Update MS 365 account labels in menu 2023-12-24 13:35:28 +05:30
renovate[bot]
09ef206be5 fix(deps): update dependency electron-log to v5.0.2 (#177)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-24 13:30:43 +05:30
Agampreet Singh
e12e5b39b4 Update README 2023-12-23 23:26:12 +05:30
Agampreet Singh
8dceb827d6 Update user-agent strings 2023-12-23 22:34:39 +05:30
Agampreet Singh
92a7b9376d FIx autohide menubar functionality not working when a new window is created (#162) 2023-12-23 13:42:53 +05:30
renovate[bot]
a13d790df3 chore(deps): update dependency electron to v28.1.0 (#175)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-23 13:27:53 +05:30
renovate[bot]
09d24e3948 fix(deps): update dependency @xhayper/discord-rpc to v1.1.2 (#176)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-23 13:27:36 +05:30
Agampreet Singh
2cc3d0c953 Update title to reflect MS-365-Electron 2023-12-21 20:06:07 +05:30
renovate[bot]
d5eba0741f chore(deps): update dependency electron-builder to v24.10.0 (#172)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-20 22:18:42 +05:30
renovate[bot]
102746ec3c chore(deps): update actions/upload-artifact action to v4 (#173)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-20 22:18:32 +05:30
renovate[bot]
529147bf01 chore(deps): update dependency eslint to v8.56.0 (#174)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-20 22:18:03 +05:30
Agampreet Singh
39bd965a90 Remove unused Yarn plugin and update yarn.lock 2023-12-08 19:13:48 +05:30
renovate[bot]
d203b214ec chore(deps): update yarn to v4 (#170)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:43:52 +05:30
renovate[bot]
2b0eb255eb fix(deps): update dependency electron-updater to v6.1.7 (#164)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:39:15 +05:30
renovate[bot]
876ad5dfb7 fix(deps): update dependency @xhayper/discord-rpc to v1.1.1 (#156)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:39:05 +05:30
renovate[bot]
796c4f63fd fix(deps): update dependency @cliqz/adblocker-electron to v1.26.12 (#151)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:38:54 +05:30
renovate[bot]
a3ee81bc32 chore(deps): update actions/checkout digest to b4ffde6 (#153)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:38:41 +05:30
renovate[bot]
0800464da5 fix(deps): update dependency axios to v1.6.2 (#155)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:35:03 +05:30
renovate[bot]
03e009b301 fix(deps): update dependency electron-dl to v3.5.1 (#159)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:34:54 +05:30
renovate[bot]
805f5e1587 chore(deps): update dependency electron-builder to v24.9.1 (#166)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:34:38 +05:30
renovate[bot]
643b2c134c chore(deps): update actions/setup-node action to v4 (#167)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:34:29 +05:30
renovate[bot]
37754a6168 chore(deps): update actions/stale action to v9 (#168)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:32:15 +05:30
renovate[bot]
45b287dba6 fix(deps): update dependency electron-log to v5.0.1 (#149)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:31:53 +05:30
renovate[bot]
10bf359f15 chore(deps): update dependency electron to v28 (#169)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:31:44 +05:30
renovate[bot]
69fd40ba07 fix(deps): update dependency node-gyp to v10 (#171)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:30:31 +05:30
renovate[bot]
38359f68d1 chore(deps): update yarn to v3.7.0 (#157)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:30:16 +05:30
renovate[bot]
942115fab9 chore(deps): update dependency eslint to v8.55.0 (#154)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 21:43:30 +05:30
renovate[bot]
9647ca2214 chore(deps): update dependency electron to v26 (#143)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-09 12:07:08 +05:30
renovate[bot]
cd7ba5d5b4 chore(deps): update dependency eslint to v8.49.0 (#142)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-09 12:06:45 +05:30
renovate[bot]
13d5a51c67 fix(deps): update dependency @xhayper/discord-rpc to v1.0.22 (#141)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-09 12:06:39 +05:30
renovate[bot]
225f8b2b63 chore(deps): update dependency electron to v25.8.0 (#140)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-09 12:06:33 +05:30
renovate[bot]
3c758d6332 chore(deps): update yarn to v3.6.3 (#144)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-09 12:06:25 +05:30
renovate[bot]
4dd73fc13c fix(deps): update dependency electron-log to v5.0.0-beta.28 (#145)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-09 12:05:54 +05:30
renovate[bot]
7f7b759706 fix(deps): update dependency axios to v1.5.0 (#146)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-09 12:05:43 +05:30
renovate[bot]
b586c1c48c chore(deps): update dependency electron-builder to v24.6.4 (#147)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-09 12:05:36 +05:30
renovate[bot]
eda2165706 chore(deps): update actions/checkout action to v4 (#148)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-09 12:05:29 +05:30
Agampreet Singh
075ddf615e Remove latest downloads button from README 2023-08-08 10:39:56 +05:30
renovate[bot]
2f42a345bf chore(deps): update dependency eslint to v8.46.0 (#138)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 16:08:12 +05:30
renovate[bot]
b08c91a50e chore(deps): update dependency electron to v25.4.0 (#139)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 16:08:07 +05:30
96 changed files with 2938 additions and 3379 deletions

View File

@@ -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

View File

@@ -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: |

View File

@@ -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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

894
.yarn/releases/yarn-4.2.1.cjs vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -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

View File

@@ -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.*

View File

@@ -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()}"`);

View File

@@ -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;

View File

@@ -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,
};

View File

@@ -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 };

View File

@@ -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"
}

View File

@@ -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>

View File

@@ -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"
}

3260
yarn.lock

File diff suppressed because it is too large Load Diff