npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@jitsi/electron-sdk

v9.0.7

Published

Utilities for jitsi-meet-electron project

Readme

Jitsi Meet Electron SDK

SDK for integrating Jitsi Meet into Electron applications.

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:

  1. Jitsi Meet should be initialized through our iframe API
  2. The remote control utility requires the Jitsi Meet iframe API object.

Enable the remote control:

In the render electron process of the window where Jitsi Meet is displayed:

const {
    setupRemoteControlRender
} = require("@jitsi/electron-sdk");

// api - The Jitsi Meet iframe api object.
const remoteControl = setupRemoteControlRender(api);

To disable the remote control:

remoteControl.dispose();

NOTE: dispose method will be called automatically when the Jitsi Meet API readyToClose event or when the dispose method of the Jitsi Meet iframe API object.

In the main electron process:

const {
    setupRemoteControlMain
} = require("@jitsi/electron-sdk");

// jitsiMeetWindow - The BrowserWindow instance of the window where Jitsi Meet is loaded.
setupRemoteControlMain(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:

const {
    setupScreenSharingRender
} = require("@jitsi/electron-sdk");

// api - The Jitsi Meet iframe api object.
setupScreenSharingRender(api);

In the main electron process:

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);

Picture in Picture

Enables the browser's native picture-in-picture functionality for the active speaker video. This allows users to keep the active speaker video visible in a floating window while using other applications.

Requirements:

  1. Jitsi Meet should be initialized through the iframe API
  2. The feature requires Electron's main process to execute the PiP request with userGesture privileges to bypass browser security restrictions

Enable picture in picture:

In the main electron process:

const {
    setupPictureInPictureMain
} = require("@jitsi/electron-sdk");

// jitsiMeetWindow - The BrowserWindow instance where Jitsi Meet is loaded.
// loggerTransports - Optional array of logger transports for configuring the logger.
const pipMain = setupPictureInPictureMain(jitsiMeetWindow, loggerTransports);

In the render electron process of the window where Jitsi Meet is displayed:

const {
    setupPictureInPictureRender
} = require("@jitsi/electron-sdk");

const api = new JitsiMeetExternalAPI(...);
const pipRender = setupPictureInPictureRender(api);

Popups Configuration

Configures handling of popup windows for OAuth authentication flows (Google, Dropbox). This module sets up a setWindowOpenHandler on the Jitsi Meet window to allow OAuth popups while delegating other window.open requests to a custom handler provided by the host application.

Enable popup configuration:

In the main electron process:

const {
    initPopupsConfigurationMain
} = require("@jitsi/electron-sdk");

// jitsiMeetWindow - The BrowserWindow instance where Jitsi Meet is loaded.
// OAuth popups (Google, Dropbox) will be allowed, all other window.open requests will be denied.
initPopupsConfigurationMain(jitsiMeetWindow);

With a custom window open handler:

If your application needs to handle other window.open requests (e.g., opening external links in the default browser), pass your handler as the second parameter:

const { shell } = require('electron');
const {
    initPopupsConfigurationMain
} = require("@jitsi/electron-sdk");

// Define how to handle non-OAuth window.open requests
const windowOpenHandler = ({ url }) => {
    // Open external links in the default browser
    shell.openExternal(url);
    return { action: 'deny' };
};

// jitsiMeetWindow - The BrowserWindow instance where Jitsi Meet is loaded.
// windowOpenHandler - Called for window.open requests that are not OAuth popups.
initPopupsConfigurationMain(jitsiMeetWindow, windowOpenHandler);

The SDK handles OAuth popups (Google, Dropbox) internally, allowing them to open in Electron windows with secure settings. All other window.open requests are passed to your handler, which typically opens them in the system's default browser.

Power Monitor

Provides a way to query electron for system idle and receive power monitor events.

enable power monitor: In the main electron process:

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:

const {
    setupPowerMonitorRender
} = require("@jitsi/electron-sdk");

const api = new JitsiMeetExternalAPI(...);
setupPowerMonitorRender(api);

Example

For examples of installation and usage checkout the 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