All Projects → jitsi → jitsi-meet-electron-sdk

jitsi / jitsi-meet-electron-sdk

Licence: Apache-2.0 license
Jitsi Meet SDK for Electron

Programming Languages

javascript
184084 projects - #8 most used programming language
C++
36643 projects - #6 most used programming language
HTML
75241 projects
CSS
56736 projects
python
139335 projects - #7 most used programming language
shell
77523 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to jitsi-meet-electron-sdk

jitsi-admin
Organize and fully controll your jitsi meet meetings. Make your meeting secure and be sure that only you and your fellows can join your meeting.
Stars: ✭ 76 (+5.56%)
Mutual labels:  jitsi
Docker Jitsi Meet
Jitsi Meet on Docker
Stars: ✭ 2,364 (+3183.33%)
Mutual labels:  jitsi
Matrix Docker Ansible Deploy
Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker
Stars: ✭ 2,541 (+3429.17%)
Mutual labels:  jitsi
Jitsi
Jitsi is an audio/video and chat communicator that supports protocols such as SIP, XMPP/Jabber, IRC and many other useful features.
Stars: ✭ 3,531 (+4804.17%)
Mutual labels:  jitsi
Jitsi Meet
Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application.
Stars: ✭ 17,247 (+23854.17%)
Mutual labels:  jitsi
Starrtc Android Demo
🚀starRTC,即时通讯(IM)系统,免费IM系统(含单聊,群聊,聊天室,文件传输),免费一对一视频聊天,VOIP,语音对讲(回音消除),直播连麦,视频直播,RTSP拉流,RTMP推流,webRTC服务端,在线教育,白板,小班课,在线会议,视频会议,视频监控,局域网直连(无需服务器),兼容webRTC, 支持webRTC加速,P2P高清传输,安卓、iOS、web互通,支持门禁对讲,可视对讲,电视盒子,树莓派,海思,全志,任天堂switch,云游戏,OTT设备,物联网平台,C语言自研方案,支持二次开发成类微信,类映客等APP,✨万水千山总是情,来个star行不行✨,更多示例请访问:
Stars: ✭ 3,038 (+4119.44%)
Mutual labels:  jitsi
jitsi-box
A Raspberry Pi based box to automate holding hybrid conferences with Jitsi
Stars: ✭ 15 (-79.17%)
Mutual labels:  jitsi
ohbm2020-posters
Centralized registry of Jitsi rooms and pdfs for OHBM 2020 posters.
Stars: ✭ 33 (-54.17%)
Mutual labels:  jitsi
jitsi-scalable-helm
Scalable jitsi helm chart
Stars: ✭ 28 (-61.11%)
Mutual labels:  jitsi
app
Platform for virtual meetups and virtual networking
Stars: ✭ 57 (-20.83%)
Mutual labels:  jitsi
iorestoacasa.work
Frontend of the video calling platform iorestoacasa.work
Stars: ✭ 36 (-50%)
Mutual labels:  jitsi
terraform aws jitsi meet
Deploy Jitsi Meet to AWS with Terraform
Stars: ✭ 19 (-73.61%)
Mutual labels:  jitsi
jupyter-videochat
Video chat with peers inside JupyterLab
Stars: ✭ 54 (-25%)
Mutual labels:  jitsi
random-redirect
Page that redirects to a random page that offers the service you are looking for
Stars: ✭ 54 (-25%)
Mutual labels:  jitsi
emrah-buster-templates
The templates of the emrah-buster installer.
Stars: ✭ 57 (-20.83%)
Mutual labels:  jitsi
nextcloud-talk-bot-framework
A framework for writing Nextcloud Talk chatbots with every language that supports gRPC.
Stars: ✭ 23 (-68.06%)
Mutual labels:  jitsi
awesome-jitsi
A curated list of wonderful resource links for Jitsi
Stars: ✭ 44 (-38.89%)
Mutual labels:  jitsi
jutsu
A jitsi meet component wrapper and custom hook moulded with react's chakra 💠
Stars: ✭ 148 (+105.56%)
Mutual labels:  jitsi

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:

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

// iframe - the Jitsi Meet iframe
const remoteControl = new RemoteControl(iframe);

To disable the remote control:

remoteControl.dispose();

NOTE: dispose method will be called automatically when the Jitsi Meet iframe unload.

In the main electron process:

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:

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

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
  2. The BrowserWindow instance where Jitsi Meet is displayed should use the Chrome's window.open 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:

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:

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

WiFi Stats

Provides a function to query for wifi stats on the host computer. Returns information like interface name, addresses, signal quality, noise (not available on all OS).

WiFi Stats:

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

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

const api = new JitsiMeetExternalAPI(...);
setupWiFiStats(api.getIFrame());

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

NOTE:

You'll need to add 'disable-site-isolation-trials' switch because of electron/electron#18214:

app.commandLine.appendSwitch('disable-site-isolation-trials')

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].