Official OSX, Windows, and Linux Desktop Clients for Rocket.Chat
Clone or download
tassoevan Merge pull request #938 from RocketChat/fix/about-menu-item
[FIX] Move about menu item for MacOS
Latest commit 4ed6120 Oct 19, 2018
Permalink
Failed to load latest commit information.
.github Update ISSUE_TEMPLATE.md Sep 25, 2018
build Place update.json inside installation directory Oct 15, 2018
config Env config added Apr 26, 2015
dictionaries Fix speed issues with spell check Feb 4, 2017
scripts Fix and improve CI build Jul 19, 2017
src Move about menu item for MacOS Oct 19, 2018
tasks Segregate main and renderer process unit tests Sep 25, 2018
.editorconfig Update .editorconfig Sep 18, 2018
.eslintignore Move e2e directory under src directory Sep 19, 2018
.eslintrc Add @rocket.chat/eslint-config Sep 18, 2018
.gitignore Add script to debug mas-dev builds Sep 5, 2018
.nvmrc Add .nvmrc Feb 3, 2017
.stylelintrc Adding more contributors guidance Dec 26, 2016
.travis.yml Add e2e tests on Travis CI Sep 14, 2018
CODE_OF_CONDUCT.md sync with file from rocket.chat main project Dec 26, 2016
FEATURES.md Adding more contributors guidance Dec 26, 2016
HISTORY.md Version 2.14.0 Oct 11, 2018
LICENSE Merge remote-tracking branch 'szwacz/master' into update-upstream Jan 6, 2017
README.md [UPDATE] installation documentation for Windows Oct 5, 2018
SECURITY.md sync with file from rocket.chat main project Dec 26, 2016
appveyor.yml Fix Windows releases Aug 30, 2018
dev-app-update.yml Read update settings from install location May 21, 2017
electron-builder.json Merge branch 'release/2.14.0' into develop Oct 11, 2018
embedded.provisionprofile added embedded.provisionprofile Sep 6, 2018
gulpfile.js [IMPROVE] Build tasks (#806) Aug 10, 2018
package.json Merge pull request #929 from HappyTobi/dep_update Oct 19, 2018
yarn.lock Move about menu item for MacOS Oct 19, 2018

README.md

Rocket.Chat Desktop App Build Status Build status Project Dependencies Codacy Badge

Desktop application for Rocket.Chat available for macOS, Windows and Linux using Electron.

Download

You can download the latest version from the Releases page.

Install

Launch the installer and follow the instructions to install.

Windows Options

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)
  • /disableAutoUpdates - Disable autoupdates (Application will not update automatically / User can't update via dialog )

Development

Quick start

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

Structure of the project

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.

The build pipeline

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.

Adding node modules

Remember to respect the split between dependencies and devDependencies in package.json file. Only modules listed in dependencies will be included into distributable app.

Working with modules

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

Troubleshooting

node-gyp

Follow the installation instruction on node-gyp readme.

Ubuntu

You will need to install the following packages:

build-essential
libevas-dev
libxss-dev

Fedora

You will need to install the following packages:

libX11
libXScrnSaver-devel
gcc-c++

Windows 7

On Windows 7 you may have to follow option 2 of the node-gyp install guide and install Visual Studio

Testing

Unit tests

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.

End to end tests

yarn e2e

Using mocha test runner and spectron. This task searches for all files in src/e2e directory which respect pattern *.e2e.js.

Code coverage

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

Making a release

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.

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.

Default servers

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"
}

Pre-Release Configuration

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.

Post-Install Configuration

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/

License

Released under the MIT license.