2019-04-08 19:16:55 +02:00
|
|
|
# Native Node Modules
|
|
|
|
|
2019-04-09 18:57:16 +02:00
|
|
|
Since v???, the electron version of Riot can make use of native node modules.
|
|
|
|
These allow Riot to integrate with the desktop in ways that a browser cannot.
|
2019-04-08 19:16:55 +02:00
|
|
|
|
2019-04-09 18:57:16 +02:00
|
|
|
While handy, these modules must be compiled and are thus downloaded
|
|
|
|
pre-compiled during build so that a single OS can compile Riot for all
|
|
|
|
platforms. If you would like to compile the native node modules from source,
|
|
|
|
as is done for Riot releases, instead of trusting binaries hosted on npm,
|
|
|
|
then please read on.
|
2019-04-08 19:16:55 +02:00
|
|
|
|
2019-04-09 18:57:16 +02:00
|
|
|
Do note that compiling a module for a particular operating system
|
|
|
|
(Linux/Mac/Windows) and will need to be done on that operating system.
|
2019-04-08 19:16:55 +02:00
|
|
|
|
|
|
|
## Compiling iohook
|
|
|
|
|
2019-04-09 18:57:16 +02:00
|
|
|
[iohook](https://github.com/matrix-org/iohook/) is a native node module
|
|
|
|
written in C/C++ that allows for cross-platform capturing of keystrokes. This
|
|
|
|
is used for providing Push-to-Talk functionality (pressing a key to toggle
|
|
|
|
the microphone in a call) and is ONLY enabled during a call and while setting
|
|
|
|
the keybinding in settings.
|
2019-04-08 19:16:55 +02:00
|
|
|
|
2019-04-09 18:57:16 +02:00
|
|
|
If you would like to rebuild the module yourself and replace the downloaded
|
|
|
|
binaries, then first make sure you have [iohook's
|
|
|
|
dependencies](https://wilix-team.github.io/iohook/manual-build.html#ubuntu-16)
|
|
|
|
installed. Then execute the following commands from Riot's root directory:
|
2019-04-08 19:16:55 +02:00
|
|
|
|
|
|
|
```bash
|
2019-04-08 19:41:08 +02:00
|
|
|
cd electron_app
|
2019-04-09 18:09:23 +02:00
|
|
|
yarn
|
2019-04-08 19:41:08 +02:00
|
|
|
cd node_modules
|
2019-04-08 19:16:55 +02:00
|
|
|
rm -rf iohook
|
|
|
|
git clone https://github.com/matrix-org/iohook
|
|
|
|
cd iohook
|
|
|
|
npm i
|
|
|
|
rm -rf builds/* # Delete any downloaded binaries
|
|
|
|
npm run build # This builds libuiohook
|
|
|
|
node build.js --runtime electron --version 4.1.3 --abi 69 --no-upload # This builds the module for the current OS
|
|
|
|
```
|
|
|
|
|
|
|
|
You then need to copy the built module to the correct folder depending on the operating system and architecture you're building for:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# Run one of the following depending on your architecture:
|
|
|
|
# 64-bit
|
|
|
|
osarch="64"
|
|
|
|
# 32-bit
|
|
|
|
osarch="32"
|
|
|
|
|
|
|
|
# Run one of the following depending on your operating system:
|
|
|
|
# Windows
|
|
|
|
ostype="win32"
|
|
|
|
# Linux
|
|
|
|
ostype="linux"
|
|
|
|
# MacOS
|
|
|
|
ostype="darwin"
|
|
|
|
|
|
|
|
# Finally, copy the module:
|
|
|
|
folder="electron-v69-$ostype-x$osarch"
|
|
|
|
mkdir -p builds/$folder/build/Release
|
|
|
|
cp build/Release/iohook.node builds/$folder/build/Release/
|
2019-04-08 19:41:08 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
The electron version of Riot can then be built normally according to the [build instructions](../README.md#running-as-a-desktop-app).
|