https://github.com/jitsi/jitsi-meet-electron-sdk
Jitsi Meet SDK for Electron
https://github.com/jitsi/jitsi-meet-electron-sdk
electron jitsi
Last synced: 2 months ago
JSON representation
Jitsi Meet SDK for Electron
- Host: GitHub
- URL: https://github.com/jitsi/jitsi-meet-electron-sdk
- Owner: jitsi
- License: apache-2.0
- Created: 2017-07-05T20:22:07.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2025-04-01T17:37:15.000Z (3 months ago)
- Last Synced: 2025-04-06T18:02:04.178Z (2 months ago)
- Topics: electron, jitsi
- Language: JavaScript
- Homepage:
- Size: 1.13 MB
- Stars: 80
- Watchers: 17
- Forks: 86
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Jitsi Meet Electron SDK
SDK for integrating Jitsi Meet into Electron applications.
Supported Electron versions: >= 16.
## Installation
Install from npm:
npm install @jitsi/electron-sdk
Note: This package contains native code on Windows for the remote control module. Binary prebuilds are packaged with prebuildify as part of the npm package.
## Usage
#### Remote Control**Requirements**:
The remote control utility requires iframe HTML Element that will load Jitsi Meet.**Enable the remote control:**
In the **render** electron process of the window where Jitsi Meet is displayed:
```Javascript
const {
RemoteControl
} = require("@jitsi/electron-sdk");// iframe - the Jitsi Meet iframe
const remoteControl = new RemoteControl(iframe);
```To disable the remote control:
```Javascript
remoteControl.dispose();
```NOTE: `dispose` method will be called automatically when the Jitsi Meet iframe unload.
In the **main** electron process:
```Javascript
const {
RemoteControlMain
} = require("@jitsi/electron-sdk");// jitsiMeetWindow - The BrowserWindow instance of the window where Jitsi Meet is loaded.
const remoteControl = new RemoteControlMain(mainWindow);
```#### Screen Sharing
**Requirements**:
The screen sharing utility requires iframe HTML Element that will load Jitsi Meet.**Enable the screen sharing:**
In the **render** electron process of the window where Jitsi Meet is displayed:
```Javascript
const {
setupScreenSharingRender
} = require("@jitsi/electron-sdk");// api - The Jitsi Meet iframe api object.
setupScreenSharingRender(api);
```
In the **main** electron process:```Javascript
const {
setupScreenSharingMain
} = require("@jitsi/electron-sdk");// jitsiMeetWindow - The BrowserWindow instance of the window where Jitsi Meet is loaded.
// appName - Application name which will be displayed inside the content sharing tracking window
// i.e. [appName] is sharing your screen.
// osxBundleId - Mac Application bundleId for which screen capturer permissions will be reset if user denied them.
setupScreenSharingMain(mainWindow, appName, osxBundleId);
```#### Always On Top
Displays a small window with the current active speaker video when the main Jitsi Meet window is not focused.**Requirements**:
1. Jitsi Meet should be initialized through our [iframe API](https://github.com/jitsi/jitsi-meet/blob/master/doc/api.md)
2. The `BrowserWindow` instance where Jitsi Meet is displayed should use the [Chrome's window.open implementation](https://github.com/electron/electron/blob/master/docs/api/window-open.md#using-chromes-windowopen-implementation) (set `nativeWindowOpen` option of `BrowserWindow`'s constructor to `true`).
3. If you have a custom handler for opening windows you have to filter the always on top window. You can do this by its `frameName` argument which will be set to `AlwaysOnTop`.**Enable the aways on top:**
In the **main** electron process:
```Javascript
const {
setupAlwaysOnTopMain
} = require("@jitsi/electron-sdk");// jitsiMeetWindow - The BrowserWindow instance
// of the window where Jitsi Meet is loaded.
setupAlwaysOnTopMain(jitsiMeetWindow);
```In the **render** electron process of the window where Jitsi Meet is displayed:
```Javascript
const {
setupAlwaysOnTopRender
} = require("@jitsi/electron-sdk");const api = new JitsiMeetExternalAPI(...);
const alwaysOnTop = setupAlwaysOnTopRender(api);alwaysOnTop.on('will-close', handleAlwaysOnTopClose);
````setupAlwaysOnTopRender` return an instance of EventEmitter with the following events:
* _dismissed_ - emitted when the always on top window is explicitly dismissed via its close button
* _will-close_ - emitted right before the always on top window is going to close
#### Power Monitor
Provides a way to query electron for system idle and receive power monitor events.
**enable power monitor:**
In the **main** electron process:
```Javascript
const {
setupPowerMonitorMain
} = require("@jitsi/electron-sdk");// jitsiMeetWindow - The BrowserWindow instance
// of the window where Jitsi Meet is loaded.
setupPowerMonitorMain(jitsiMeetWindow);
```In the **render** electron process of the window where Jitsi Meet is displayed:
```Javascript
const {
setupPowerMonitorRender
} = require("@jitsi/electron-sdk");const api = new JitsiMeetExternalAPI(...);
setupPowerMonitorRender(api);
```### NOTE:
You'll need to add 'disable-site-isolation-trials' switch because of [https://github.com/electron/electron/issues/18214](https://github.com/electron/electron/issues/18214):
```
app.commandLine.appendSwitch('disable-site-isolation-trials')
```## Example
For examples of installation and usage checkout the [Jitsi Meet Electron](https://github.com/jitsi/jitsi-meet-electron) project.
## Development
Enable husky to avoid accidental pushes to the main branch:
npx husky install
To rebuild the native code, use:
npx node-gyp rebuild
## Publishing
On every push to main branch, the .github/workflows/ci.yml will create a new version and publish to npm.
If a major or minor release is required, use respective key words in the commit message, see https://github.com/phips28/gh-action-bump-version#workflow