Desktop application for Rocket.Chat available for macOS, Windows and Linux using Electron.
You can download the latest version from the Releases page.
Launch the installer and follow the instructions to install.
On Windows you can run a silent install by adding the /S
flag. You can also add the options below:
/S
- Silent install/allusers
- Install for all users (requires admin)/currentuser
- Install for current user only (default)
Prerequisites:
Now just clone and start the app:
git clone https://github.com/RocketChat/Rocket.Chat.Electron.git
cd Rocket.Chat.Electron
yarn
yarn start
The sources is located in the src
folder. Everything in this folder will be built automatically when running the app with yarn start
.
Stylesheets are written in less
and are located in src/stylesheets
. They will be build into a single main.css
in the app
folder.
The build process compiles all stuff from the src
folder and puts it into the app
folder, so after the build has finished, your app
folder contains the full, runnable application.
Build process is founded upon gulp task runner and rollup bundler. There are two entry files for your code: src/background.js
and src/app.js
. Rollup will follow all import
statements starting from those files and compile code of the whole dependency tree into one .js
file for each entry point.
Remember to respect the split between dependencies
and devDependencies
in package.json
file. Only modules listed in dependencies
will be included into distributable app.
Side note: If the module you want to use in your app is a native one (not pure JavaScript but compiled C code or something) you should first run yarn add name_of_module
and then yarn postinstall
to rebuild the module for Electron. This needs to be done only once when you're first time installing the module. Later on postinstall script will fire automatically with every yarn install
.
Thanks to rollup you can (and should) use ES6 modules for most code in src
folder.
Use ES6 syntax in the src
folder like this:
import myStuff from './my_lib/my_stuff';
The exception is in src/public
. ES6 will work inside this folder, but it is limited to what Electron/Chromium supports. The key thing to note is that you cannot use import
and export
statements. Imports and exports need to be done using CommonJS syntax:
const myStuff = require('./my_lib/my_stuff');
const { myFunction } = require('./App');
Follow the installation instruction on node-gyp readme.
You will need to install:
build-essential
libevas-dev
libxss-dev
You will need to install:
libX11
libXScrnSaver-devel
gcc-c++
On Windows 7 you may have to follow option 2 of the node-gyp install guide and install Visual Studio
yarn test
Using electron-mocha test runner with the chai assertion library. This task searches for all files in src
directory which respect pattern *.spec.js
.
yarn e2e
Using mocha test runner and spectron. This task searches for all files in e2e
directory which respect pattern *.e2e.js
.
yarn coverage
Using istanbul code coverage tool.
You can set the reporter(s) by setting ISTANBUL_REPORTERS
environment variable (defaults to text-summary
and html
). The report directory can be set with ISTANBUL_REPORT_DIR
(defaults to coverage
).
To package your app into an installer use command:
yarn release
It will start the packaging process for operating system you are running this command on. Ready for distribution file will be outputted to dist
directory.
Right now you can only create Windows installer when running Windows, the same is true for macOS. For Linux builds, you can use our Docker image with the following commands:
docker run --rm -ti -v ${PWD}:/project -v ${PWD##*/}-node-modules:/project/node_modules -v ~/.electron:/root/.electron rocketchat/electron.builder /bin/bash -l -c "yarn && yarn release -- --x64 --ia32 --p never"
All packaging actions are handled by electron-builder. It has a lot of customization options, which you can declare under "build" key in package.json file.
The servers.json
file will define what servers the client will connect to and will populate the server list in the sidebar, it contains a list of default servers which will be added the first time the user runs the app (or when all servers are removed from the list).
The file syntax is as follows:
{
"Demo Rocket Chat": "https://demo.rocket.chat",
"Open Rocket Chat": "https://open.rocket.chat"
}
You can bundle a servers.json
with the install package, the file should be located in the root of the project application (same level as the package.json
). If the file is found, the initial "Connect to server" screen will be skipped and it will attempt to connect to the first server in the array that has been defined and drop the user right at the login screen. Note that the servers.json
will only be checked if no other servers have already be added, even if you uninstall the app without removing older preferences, it will not be triggered again.
If you can't (or don't want to) bundle the file inside the app, you can create a servers.json
in the user preferences folder which will overwrite the packaged one. The file should be located in the %APPDATA%/Rocket.Chat+/
folder or the installation folder in case of a installation for all users (Windows only).
For Windows the full paths are:
~\Users\<username>\AppData\Roaming\Rocket.Chat+\
~\Program Files\Rocket.Chat+\Resources\
On MacOS the full path is:
~/Users/<username>/Library/Application Support/Rocket.Chat+/
~/Applications/Rocket.Chat+.app/Contents/Resources/
On Linux the full path is:
/home/<username>/.config/Rocket.Chat+/
/opt/Rocket.Chat+/resources/
http://developerthing.blogspot.com.br/2017/01/awesome-electron.html
Released under the MIT license.