Skip to content

This project aims to create multiple windows that synchronize data between themselves. This removes the limitation of the user having to use only one window to build their application and allows them to interact with subsequent windows, synchronized with the parent element. Work in progress (2025/05/16)

License

Notifications You must be signed in to change notification settings

Tatiwel/electron-multi-window

Repository files navigation

Electron Multiple Synchronized Windows

Electron Logo Vite Logo React Logo

Desktop application with multiple real-time synchronized windows
GitHub Repository


✨ About the Project

This project demonstrates how to create a modern Electron application with React, TypeScript, and Vite, allowing multiple windows synchronized via IPC. Perfect for those who want to expand the desktop experience beyond a single window!


🚀 Features

  • Main Window: Enter data and open new windows.
  • Secondary Windows: Display and synchronize data in real time.
  • Instant Synchronization: Efficient communication between all windows.
  • Modern Interface: Responsive and intuitive UI.

🛠️ Technologies Used


📦 Prerequisites


📝 How to Run

Using Bun

# Clone the repository
git clone https://github.com/Tatiwel/electron-multi-window.git

# Enter the project folder
cd electron-multi-window

# Install dependencies
bun install

# Run in development mode
bun run dev

Using npm

# Clone the repository
git clone https://github.com/Tatiwel/electron-multi-window.git

# Enter the project folder
cd electron-multi-window

# Install dependencies
npm install

# Run in development mode
npm run dev

📂 Project Structure

electron-multi-window/
├── electron/           # Electron main process code (main/preload)
├── src/
│   ├── pages/          # React components (App, NewWindow)
│   └── assets/         # Styles and icons
├── public/             # Public assets
├── demo/               # GIFs and demos
├── dist-electron/      # Electron build
├── index.html          # Main HTML
├── newwindow.html      # Secondary window HTML
├── package.json        # Configurations and scripts
└── ...

🎬 Demos

IPC Sync Demo

Synchronized Windows: This project consists of creating multiple synchronized windows using Electron, React, TypeScript, and Vite. Each window can interact and share data in real time, providing a seamless multi-window desktop experience. The application is designed to allow users to open, manage, and synchronize several windows simultaneously, removing the limitation of working with only a single window.

Window Control Demo

Window Index Management: A robust window index management system is implemented to ensure that each window is correctly referenced. This prevents issues such as actions being executed on non-existent windows or overwriting indices of closed windows. With this approach, any update or action is always directed to the correct window, maintaining data integrity and a smooth user experience.


👤 Author

Developed by Daniel (Tatiwel)


📄 License

This project is licensed under the ISC license. See the package.json file for more details.


🔗 Pure Electron Version

If you are interested in the same synchronized multi-window logic implemented using pure Electron (JavaScript only, no frameworks), check out the dedicated branch:

👉 pure-electron branch on GitHub

This branch demonstrates the core synchronization logic without React, TypeScript, or Vite, for those who prefer a minimal and framework-free approach.


About

This project aims to create multiple windows that synchronize data between themselves. This removes the limitation of the user having to use only one window to build their application and allows them to interact with subsequent windows, synchronized with the parent element. Work in progress (2025/05/16)

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published