I'd love to see Signal ship on OS X, Linux and Windows as a Desktop app. It can go via Electron or via just Chromium source parts but it should not require Chromium to be installed.
I would even pledge money for this feature. Is there a timeline? Is this feature accepted? Can we pledge towards this feature?
This branch is under active development: https://github.com/WhisperSystems/Signal-Desktop/commits/electron
That's excellent news.
As I probably won't get involved the last I can do will be donate, which I did right now right here https://freedom.press/crowdfunding/signal/
@scottnonnenberg Is there any docs for building the Electron branch of Signal.
I would at least build it on a semi-regular basis and report bugs - if it is semi stable (keeps history on crashes) use it and report more bugs.
I do also hope that you will consider supporting Voice and Video Over IP in future, maybe even screen capturing and group chats for Voice over IP/Video.
There is little more important on the web than the few projects like Signal <3.
Looking forward to it! :) Was already running the muon-based version by yan some time ago (https://github.com/diracdeltas/signal-muon).
However, this issue is probably duplicating a couple of others. I think the open issue with the most discussion regarding this is https://github.com/WhisperSystems/Signal-Desktop/issues/871 so this should be closed as a dupe of 871, shouldn't it.
Another related issue is https://github.com/WhisperSystems/Signal-Desktop/issues/542. Since OWS is going the "electron-way" maybe there could be done some issue triage and this issue could be closed and labeled a wont-fix (if this assumption is true π)
@inoas running the electron branch should be as easy as:
git checkout electron
yarn install
yarn run start
Done! If you want to build a standalone version to install into the Applications folder, you can explore the scripts in package.json.
@mammuth I definitely like the idea of culling all the issues in the packaging space. :0)
@mammuth I'll soon close the issue as a dupe of #871 - I do not however see why this is won-fix... it seems a "fix" via electron is underway?!
@scottnonnenberg this is how far it went for me - OS X 10.11.6 (I am a late updater, sorry):
Can you confirm that this is basically running (bugs expected and to be reported) on macOS 10.12.x? What about 10.11.x (I do not expect support, just in case you know)?
I would try again on 10.12 when I update once 10.13 hits the streets :P.
TLDR
brew install yarn # all good
git clone [email protected]:WhisperSystems/Signal-Desktop.git # all good
cd Signal-Desktop # all good
git checkout electron # all good
yarn install # see below
$ yarn install
yarn install v0.27.5
[1/5] Resolving packages...
[2/5] Fetching packages...
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ 0/669aββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ 28/669uββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ 56/669t
warning [email protected]: The platform "darwin" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
warning [email protected]: The platform "darwin" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/5] Linking dependencies...
[4/5] Building fresh packages...
[1/5] β spellchecker
[2/5] β electron
[3/5] β phantomjs-prebuilt
[4/5] β node-sass
info This package requires node-gyp, which is not currently installed. Yarn will attempt to automatically install it. If this fails, you can run "yarn global add node-gyp" to manually install it.
error An unexpected error occurred: "/Users/USERNAMEHERE/Documents/htstudios.de/WhisperSystems/Signal-Desktop/node_modules/electron: Cannot read property 'config' of undefined".
info If you think this is a bug, please open a bug report with the information provided in "/Users/USERNAMEHERE/.config/yarn/global/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
yarn run start then crashed which is expected.yarn global add node-gyp - no problem - should this be a required dependency?git reset --hard but still yarn install would thow some errorsrm -rf Signal-Desktop and cloned it again and ran yarn install again:$ yarn install
yarn install v0.27.5
warning package.json: No license field
info No lockfile found.
warning [email protected]: No license field
[1/4] Resolving packages...
warning [email protected]: ..psst! While Bower is maintained, we recommend Yarn and Webpack for *new* front-end projects! Yarn's advantage is security and reliability, and Webpack's is support for both CommonJS and AMD projects. Currently there's no migration path, but please help to create it: https://github.com/bower/bower/issues/2467
warning grunt-contrib-sass > [email protected]: use [cross-spawn](https://github.com/IndigoUnited/node-cross-spawn) or [cross-spawn-async](https://github.com/IndigoUnited/node-cross-spawn-async) instead.
warning grunt > [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
warning grunt > glob > [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
warning grunt-cli > findup-sync > glob > [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
warning grunt-preen > preen > [email protected]: ..psst! While Bower is maintained, we recommend Yarn and Webpack for *new* front-end projects! Yarn's advantage is security and reliability, and Webpack's is support for both CommonJS and AMD projects. Currently there's no migration path, but please help to create it: https://github.com/bower/bower/issues/2467
warning grunt-preen > preen > [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
warning grunt-jscs > jscs > [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
warning grunt > glob > [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
warning grunt-preen > preen > bower > rimraf > [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
warning grunt-preen > preen > readdirp > [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
warning grunt-preen > preen > bower > read-package-json > [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
warning grunt-preen > preen > winston > request > [email protected]: Use uuid module instead
[2/4] Fetching packages...
error [email protected]: The engine "node" is incompatible with this module. Expected version "0.8.x".
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.`
I was assuming my node/npm are outdated... but they are not?!
npm --version
5.0.3
node --version
v8.1.3
Wow, very interesting to see what you're running into on a basic yarn install!
Unpacking those log entries, I see just two real problems:
graceful-fs v3.0.0 and before will fail on node releases >= v7.0. -- Will block some scenarios. But you won't be using grunt-preen for basic runs of the app - it's only used after you pull down new dependencies with bower.--ignore-engines yarn option to get this to complete successfully.I'm remembering now that some build steps are required to get the thing to run even in dev mode. Try yarn run dist-prod if yarn run start gives you errors.
This is a one-liner I can run on macOS 10.11.6 that starts the app. Sadly I cannot pair/link (see below):
brew install yarn && git clone [email protected]:WhisperSystems/Signal-Desktop.git && cd Signal-Desktop && git checkout electron && yarn install && yarn run start
I think on my 2nd attempt above I forgot to git checkout electron
I rm'ed the whole repo again and then:
brew install yarn
git clone [email protected]:WhisperSystems/Signal-Desktop.git
cd Signal-Desktop
git checkout electron
$ Yarn install
yarn install v0.27.5
[1/5] Resolving packages...
[2/5] Fetching packages...
warning [email protected]: The platform "darwin" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
warning [email protected]: The platform "darwin" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/5] Linking dependencies...
[4/5] Building fresh packages...
[5/5] Cleaning modules...
Done in 82.66s.
$ yarn run start
yarn run v0.27.5
$ electron .
Wait for app ready
reading package.json
configuring
NODE_ENV development
NODE_CONFIG_DIR /Users/USER_NAME_HERE/Documents/WhisperSystems/Signal-Desktop/config
NODE_CONFIG {}
ALLOW_CONFIG_MUTATIONS undefined
HOSTNAME undefined
NODE_APP_INSTANCE undefined
SUPPRESS_NO_CONFIG_WARNING undefined
setting AUMID
userData /Users/USER_NAME_HERE/Library/Application Support/Signal-development
app ready
port 80 (http) of textsecure-service-staging.whispersystems.org - why not 443 (https)? - thank you for not loading remote assets or google analytics./Users/USER_NAME_HERE/Documents/WhisperSystems/Signal-Desktop/node_modules/electron/dist/Electron.app/Contentsβ¦:146 Unable to load preload script: /Users/USER_NAME_HERE/Documents/WhisperSystems/Signal-Desktop/preload.js
(anonymous) @ /Users/USER_NAME_HERE/Documents/WhisperSystems/Signal-Desktop/node_modules/electron/dist/Electron.app/Contentsβ¦:146
/Users/USER_NAME_HERE/Documents/WhisperSystems/Signal-Desktop/node_modules/electron/dist/Electron.app/Contentsβ¦:147 Error: The module '/Users/USER_NAME_HERE/Documents/WhisperSystems/Signal-Desktop/node_modules/spellchecker/build/Release/spellchecker.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 57. This version of Node.js requires
NODE_MODULE_VERSION 53. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or`npm install`).
at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20)
at Object.Module._extensions..node (module.js:598:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/Users/USER_NAME_HERE/Documents/WhisperSystems/Signal-Desktop/node_modules/spellchecker/lib/spellchecker.js:2:16)
at Object.<anonymous> (/Users/USER_NAME_HERE/Documents/WhisperSystems/Signal-Desktop/node_modules/spellchecker/lib/spellchecker.js:85:3)
(anonymous) @ /Users/USER_NAME_HERE/Documents/WhisperSystems/Signal-Desktop/node_modules/electron/dist/Electron.app/Contentsβ¦:147
debugLog.js:53 pre-main prep time: 2 ms
debugLog.js:53 background page reloaded
debugLog.js:53 environment: development
debugLog.js:53 listening for registration events
debugLog.js:53 opening provisioning socket https://textsecure-service-staging.whispersystems.org:80
debugLog.js:53 provisioning socket open
My last question would be how to let it run against the production server (if that is supported yet)?
I'll close this for now...
As with the chrome app, running from source will default to development mode against the staging server.
Please wait until we have an official electron release to run against the production server. Thanks.
Most helpful comment
This branch is under active development: https://github.com/WhisperSystems/Signal-Desktop/commits/electron