A native, cross-platform desktop client for Google Workspace (Gmail, Calendar, Chat, Tasks, Drive) and Proton (Mail, Calendar), consolidating them into a single, seamless application. Built with Electron (just for fun)
The application running on macOS, showing the Gmail view.
- Unified Interface: Access Google Workspace and Proton services from a single, clean side-menu.
- Customizable Workspace: Right-click the sidebar to enable or disable specific services. Settings are persisted automatically.
- Privacy First: Proton services run in a dedicated, isolated session partition (
persist:proton), ensuring zero data sharing with Google services. - Native OS Integration:
- Dock/Taskbar badge for a combined total of unread message counts.
- Native OS notifications for all services (browser-native strategy).
- Standard application menu (
File,Edit,View) with familiar keyboard shortcuts (Cmd/Ctrl+Rfor Reload, etc.).
- Dynamic UI: The menu icons dynamically update to reflect the real-time status of each service by proxying the official favicons.
- State Persistence: Remembers your window size, position, active tab, and enabled services between sessions.
- Security Hardened: All third-party web content is run in a sandboxed process, with strict permission handling and a secure IPC bridge.
You can download the latest version for your operating system from the Releases Page.
- macOS: Download the
.dmgfile. - Windows: Download the
Setup.exefile. - Linux: Download the
.AppImagefile.
Note: The application is currently unsigned. Your OS may show a security warning upon first launch. This is expected and can be bypassed (e.g., by right-clicking > Open on macOS).
- Node.js (
>=20.0.0as defined inpackage.json) - npm (v9 or later recommended)
-
Clone the repository:
git clone https://github.com/apenlor/electron-gsuite-client.git cd electron-gsuite-client -
Install dependencies: This project uses
npmfor package management. Thecicommand is recommended for a clean install based on the lockfile.npm ci
-
Run the application in development mode: This will launch the application with access to developer tools.
npm start
npm start: Runs the app in development mode.npm run lint: Lints the codebase for errors and style issues.npm run format: Formats all code using Prettier.npm run build: Builds the application for your current OS into the/releasedirectory.npm run build:macnpm run build:winnpm run build:linux
This application is built with configuration-driven Electron architecture.
- Main Process (
main.js): A singleMainWindowclass manages the application lifecycle, window state, and allBrowserViews. The views are generated dynamically based on a combination of the staticVIEW_CONFIGand the user's persistent preferences (viaelectron-store). - Preload Scripts (
preload.js,preload-web.js): These act as a secure bridge between the isolated renderer processes and the Node.js environment. They usecontextBridgeto expose a minimal, secure API contract, preventing renderer processes from accessing Node.js directly. - Security Model: All third-party web content is rendered in
sandbox: trueBrowserViews withcontextIsolationenabled. A minimal set of header modifications is performed to ensure functionality while maintaining a strong security posture. All IPC communication is validated against whitelists to prevent object injection vulnerabilities. - CI/CD: An automated GitHub Actions workflow validates, builds, and publishes the application for all three major platforms upon the push of a version tag, enabling automated releases and auto-updates.
This project is licensed under the MIT License.