Omnia is a desktop workspace organizer app that unifies multiple web-based applications (like messaging, email, productivity tools, and more) into a single, to boost productivity and simplify multitasking.
- Messenger
- Gmail
- Spotify
- Slack
- Telegram
- TradingView
- Discord
- Microsoft Teams
and many more coming. You can let me know what integation you want next by raising and issue.
Newest version for specific platform available here:
Make sure you have the following installed before running this project:
Omnia uses Authentik through OpenID Connect with PKCE. Create a public/native OAuth2 provider, register omnia://auth/callback as its redirect URI, and set its client ID in a local .env file:
AUTHENTIK_CLIENT_ID=kSYcRwghR9ItrtPB5opL0lvWYPpFZfUtXFtzAv22
AUTHENTIK_REDIRECT_URI=omnia://auth/callbackgit clone https://github.com/padsbanger/omnia.git
cd omnianpm installThis will install all necessary packages listed in package.json.
Create a .env file in the root directory based on .env.example (if it exists):
cp .env.example .env # if .env.example existsEdit .env as needed for your configuration.
Run the development server with hot-reload:
npm startThis will:
- Start the Electron app in development mode
- Enable Vite's hot module replacement
- Allow you to see changes instantly without rebuilds
Hot-reload tips:
- Edit source files and see changes automatically
- Browser and Electron processes are synced
- Console logs appear in both terminals and the app
Before building, the project will:
- Bundle all dependencies
- Minify and optimize assets
- Generate platform-specific builds
- Create installers for all supported platforms
| Command | Description |
|---|---|
npm run package |
Build all platforms (universal) |
npm run make |
Build for current platform only |
Depending on your OS and installed makers, you'll get:
Windows:
.exeinstaller with auto-updates- ZIP archive (manual installation)
- Portable executable
macOS:
.dmginstaller.ziparchive
Linux:
.debpackage (Debian/Ubuntu).rpmpackage (Fedora/CentOS).AppImage(if configured)- AUR package (Arch Linux)
Edit forge.config.ts to configure:
- Window settings (size, position, decorations)
- App permissions and capabilities
- Bundle size optimization
- Asset optimization
- Build targets and platforms
Check for linting errors and style issues:
npm run lintThis uses ESLint with TypeScript support to catch common errors and style violations.
src/
├── assets/ # Static assets (icons, images, fonts)
├── common/ # Shared code between main/preload/renderer
├── main/ # Main process code (app lifecycle, IPC handlers)
│ └── windows/ # Window creation and management
├── preload.ts # Preload scripts for secure IPC
├── renderer/ # React application code
│ └── ... # Your React components and pages
├── main.ts # Electron main entry point
├── renderer.ts # Renderer process entry point
└── global.d.ts # TypeScript global augmentations
npm start # Run development server (hot-reload enabled)
npm run lint # Run ESLint on TypeScript files
npm run package # Build for all platforms
npm run make # Build for current platform
npm run publish # Publish to store (GitHub releases)This project uses Electron Fuses for enhanced security:
- No-sandbox is disabled by default (recommended for most users)
- Node integration is controlled via preload script
- Context isolation is enabled for renderer processes
- Hardware acceleration is configurable in
forge.config.ts
For detailed security configuration, review:
forge.config.tspreload.ts.gitignore(never commit.envfiles)
# Clear caches
npm cache clean --force
rm -rf node_modules && npm install- Check browser console for JavaScript errors
- Verify
main.tsandrenderer.tsentry points - Review
forge.config.tsfor window initialization errors
Install required dependencies:
Ubuntu/Debian:
sudo apt-get install libnss3 libatk-bridge2.0-0 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libasound2Fedora:
sudo dnf install nss atk libdrm libxkbcommon libxcomposite libxdamage libxrandr libgbmMIT License
Michał Lach Email: kontakt@michal-lach.pl
Built with ❤️ using Electron Forge