├── .gitattributes ├── snap ├── gui │ ├── excel.png │ ├── word.png │ ├── onenote.png │ ├── outlook.png │ ├── onedrive.png │ ├── powerpoint.png │ ├── excel.desktop │ ├── word.desktop │ ├── onedrive.desktop │ ├── onenote.desktop │ ├── powerpoint.desktop │ └── outlook.desktop └── snapcraft.yaml ├── .gitignore ├── main.nim ├── apps.csv ├── LICENSE ├── README.md └── .github └── workflows └── edge.yaml /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /snap/gui/excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirredbeard/unofficial-webapp-office-poc1/HEAD/snap/gui/excel.png -------------------------------------------------------------------------------- /snap/gui/word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirredbeard/unofficial-webapp-office-poc1/HEAD/snap/gui/word.png -------------------------------------------------------------------------------- /snap/gui/onenote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirredbeard/unofficial-webapp-office-poc1/HEAD/snap/gui/onenote.png -------------------------------------------------------------------------------- /snap/gui/outlook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirredbeard/unofficial-webapp-office-poc1/HEAD/snap/gui/outlook.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | nimcache/ 2 | nimblecache/ 3 | htmldocs/ 4 | *.snap 5 | snapcraft.cfg 6 | *.txt 7 | bin/ 8 | build 9 | init.sh -------------------------------------------------------------------------------- /snap/gui/onedrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirredbeard/unofficial-webapp-office-poc1/HEAD/snap/gui/onedrive.png -------------------------------------------------------------------------------- /snap/gui/powerpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sirredbeard/unofficial-webapp-office-poc1/HEAD/snap/gui/powerpoint.png -------------------------------------------------------------------------------- /main.nim: -------------------------------------------------------------------------------- 1 | import webgui 2 | let app = newWebView("URL", title = "TITLE", cssPath = "light.css") 3 | app.run() 4 | app.exit() 5 | -------------------------------------------------------------------------------- /apps.csv: -------------------------------------------------------------------------------- 1 | Word,https://www.office.com/launch/word 2 | Outlook,https://outlook.live.com/mail/0/inbox 3 | Excel,https://www.office.com/launch/excel 4 | PowerPoint,https://www.office.com/launch/powerpoint 5 | OneNote,https://www.onenote.com/notebooks 6 | OneDrive,https://onedrive.live.com/ 7 | -------------------------------------------------------------------------------- /snap/gui/excel.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=2.0 3 | Name=Excel 4 | GenericName=Excel 5 | Comment=Excel 6 | Type=Application 7 | Icon=${SNAP}/meta/gui/excel.png 8 | Exec=unofficial-webapp-office.excel 9 | Terminal=false 10 | Keywords=Excel,spreadsheet 11 | Categories=Office;Spreadsheet 12 | -------------------------------------------------------------------------------- /snap/gui/word.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=2.0 3 | Name=Word 4 | GenericName=Word 5 | Comment=Word 6 | Type=Application 7 | Icon=${SNAP}/meta/gui/word.png 8 | Exec=unofficial-webapp-office.word 9 | Terminal=false 10 | Keywords=Word,document,doc 11 | Categories=Office;WordProcessor;Qt 12 | -------------------------------------------------------------------------------- /snap/gui/onedrive.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=2.0 3 | Name=OneDrive 4 | GenericName=OneDrive 5 | Comment=OneDrive 6 | Type=Application 7 | Icon=${SNAP}/meta/gui/onedrive.png 8 | Exec=unofficial-webapp-office.onedrive 9 | Terminal=false 10 | Keywords=OneDrive,files,cloud,photos 11 | Categories=Office;FileTransfer;Qt 12 | -------------------------------------------------------------------------------- /snap/gui/onenote.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=2.0 3 | Name=OneNote 4 | GenericName=OneNote 5 | Comment=OneNote 6 | Type=Application 7 | Icon=${SNAP}/meta/gui/onenote.png 8 | Exec=unofficial-webapp-office.onenote 9 | Terminal=false 10 | Keywords=OneNote,note,notes,notepad 11 | Categories=Office;ProjectManagement;Qt 12 | -------------------------------------------------------------------------------- /snap/gui/powerpoint.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=2.0 3 | Name=PowerPoint 4 | GenericName=PowerPoint 5 | Comment=PowerPoint 6 | Type=Application 7 | Icon=${SNAP}/meta/gui/powerpoint.png 8 | Exec=unofficial-webapp-office.powerpoint 9 | Terminal=false 10 | Keywords=PowerPoint,presentation,ppt 11 | Categories=Office;Presentation;Qt 12 | -------------------------------------------------------------------------------- /snap/gui/outlook.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=2.0 3 | Name=Outlook 4 | GenericName=Outlook 5 | Comment=Outlook 6 | Type=Application 7 | Icon=${SNAP}/meta/gui/outlook.png 8 | Exec=unofficial-webapp-office.outlook 9 | Terminal=false 10 | Keywords=Outlook,mail,email,calendar,contacts 11 | Categories=Office;Email;Calendar;ContactManagement;Qt 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Hayden Barnes 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # unofficial-webapp-office2 2 | 3 | A rewrite of [unofficial-webapp-office](https://github.com/sirredbeard/unofficial-webapp-office), breaking from the upstream [icloud-for-linux](https://github.com/cross-platform/icloud-for-linux). 4 | 5 | Unofficial-webapp-office2 uses a GTK3, [WebKitGTK](https://webkitgtk.org/), and [Nim](https://nim-lang.org/) stack. 6 | 7 | This replaces the previous Qt5, Qt5 WebEngine, C++, and QML stack. 8 | 9 | Reduces snap package size from 115M to <1 M. 10 | 11 | Supports Wayland. 12 | 13 | Uses [GitHub Actions](https://github.com/sirredbeard/unofficial-webapp-office2/tree/main/.github/workflows) and my [snap-build](https://github.com/sirredbeard/snap-build) container with the latest version of [snapcraft](https://snapcraft.io/build) to [remote-build](https://snapcraft.io/docs/remote-build) on Canonical's Launchpad. 14 | 15 | build.nim parses apps.csv to create individual 'apps' from a template, main.nim. 16 | 17 | The app name and icon is handled by .desktop files in /snap/gui/ and snapd. 18 | 19 | main.nim relies on [webgui](https://github.com/juancarlospaco/webgui). 20 | 21 | The snap package relies on the [gnome-3-34 extension](https://snapcraft.io/blog/gnome-3-34-snapcraft-extension). 22 | 23 | To do: 24 | 25 | * Custom css theme 26 | 27 | Built with [Ubuntu on WSL](https://ubuntu.com/wsl). 28 | -------------------------------------------------------------------------------- /.github/workflows/edge.yaml: -------------------------------------------------------------------------------- 1 | name: nightly 2 | on: 3 | push: 4 | branches: 5 | - main 6 | schedule: 7 | - cron: 0 22 * * * 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | container: 12 | image: sirredbeard/snap-build 13 | steps: 14 | - uses: actions/checkout@v1 15 | - name: Build snap on Launchpad using remote-build 16 | env: 17 | REMOTE_BUILD_CREDENTIALS: ${{ secrets.REMOTE_BUILD_CREDENTIALS }} 18 | run: | 19 | mkdir -p $HOME/.local/share/snapcraft/provider/launchpad/ 20 | echo ${REMOTE_BUILD_CREDENTIALS} | base64 --decode --ignore-garbage > $HOME/.local/share/snapcraft/provider/launchpad/credentials 21 | git config --global user.email "you@example.com" 22 | git config --global user.name "Your Name" 23 | snapcraft remote-build --launchpad-accept-public-upload --build-on=arm64,armhf,amd64,i386,ppc64el 24 | - name: Upload snap to Snap Store 25 | env: 26 | SNAPCRAFT_LOGIN_FILE: ${{ secrets.SNAPCRAFT_LOGIN_FILE }} 27 | run: | 28 | mkdir .snapcraft 29 | echo ${SNAPCRAFT_LOGIN_FILE} | base64 --decode --ignore-garbage > .snapcraft/snapcraft.cfg 30 | ARCHS="arm64 armhf amd64 i386 ppc64el" 31 | for ARCH in ${ARCHS}; do 32 | snapcraft upload --release=edge *${ARCH}.snap || continue 33 | done -------------------------------------------------------------------------------- /snap/snapcraft.yaml: -------------------------------------------------------------------------------- 1 | name: unofficial-webapp-office 2 | version: '2.0' 3 | summary: Unofficial Webapp Office 4 | description: Unofficial wrapper for Office 365 web apps. 5 | 6 | confinement: strict 7 | base: core18 8 | 9 | parts: 10 | unofficial-webapp-office: 11 | source: . 12 | plugin: dump 13 | build-packages: 14 | - build-essential 15 | - pkg-config 16 | - git 17 | - curl 18 | - libwebkit2gtk-4.0-37 19 | - libwebkit2gtk-4.0-dev 20 | - libgtk-3-0 21 | - libgtk-3-dev 22 | override-build: | 23 | curl https://nim-lang.org/choosenim/init.sh --output init.sh 24 | sh init.sh -y 25 | export PATH=/root/.nimble/bin:$PATH 26 | choosenim stable --yes --verbose 27 | nimble refresh 28 | nimble install csvtools webgui --accept 29 | nim compile -r build.nim 30 | cp bin/* "$SNAPCRAFT_PART_INSTALL" 31 | rm "$SNAPCRAFT_PART_INSTALL"/*.nim 32 | 33 | apps: 34 | word: 35 | command: Word 36 | extensions: [gnome-3-34] 37 | plugs: &plugs 38 | - browser-support 39 | - desktop 40 | - desktop-legacy 41 | - home 42 | - network 43 | - opengl 44 | - screen-inhibit-control 45 | - x11 46 | outlook: 47 | command: Outlook 48 | extensions: [gnome-3-34] 49 | plugs: *plugs 50 | excel: 51 | command: Excel 52 | extensions: [gnome-3-34] 53 | plugs: *plugs 54 | powerpoint: 55 | command: PowerPoint 56 | extensions: [gnome-3-34] 57 | plugs: *plugs 58 | onenote: 59 | command: OneNote 60 | extensions: [gnome-3-34] 61 | plugs: *plugs 62 | onedrive: 63 | command: OneDrive 64 | extensions: [gnome-3-34] 65 | plugs: *plugs 66 | --------------------------------------------------------------------------------