GithubHelp home page GithubHelp logo

unofficial-protonmail-desktop / application Goto Github PK

View Code? Open in Web Editor NEW
538.0 30.0 48.0 12.48 MB

:envelope: Unofficial desktop client for ProtonMail

License: MIT License

CSS 0.85% JavaScript 90.77% HTML 0.11% SCSS 8.27%
protonmail protonmail-desktop electron desktop-app

application's Introduction

Deprecated

⚠️ This application is deprecated and no longer maintained. We're recommending using ProtonMail Bridge or ElectronMail. ⚠️

Unofficial desktop client for ProtonMail license Known Vulnerabilities codecov

Protonmail Desktop on Linux

Unofficial desktop client for ProtonMail is an app that emulates a native client for the ProtonMail e-mail service. Check out more about Protonmail in their website.

We are not affiliated with ProtonMail team. All copyrights belong to their respective owners.

Features

Background behaviour

When closing the window, the app will continue running in the background. On OSX, app will be available in the dock and on WIN & Linux (depends on distro) in the tray. Right-click the dock/tray icon and choose Quit to completely quit the app. On OS X, click the dock icon to show the window. On Linux, right-click the tray icon and choose Toggle to toggle the window. On Windows, click the tray icon to toggle the window.

Native Notifications

Native notifications are working for all OS, you will get a notification when you receive a new email and window is not focused (i.e. app minimized).

Notifications on Windows 10Notifications on Elementary OS

Dev and contributing

Built with Electron and React. Write unit tests for new functionality and add e2e test when appropriate.

Dev and compile works on OS X, Linux, and Windows. You will need Yarn to run this app.

Any contribution or suggestion is accepted. Feel free to create any report for issues or app crashes. You can also use the report link provided in the application menu to create a crash report. Pull requests are accepted.

Developing

  1. yarn
  2. yarn start

Running the App

Executables

You can build your own executables from the latest source by running one of the commands below. More stable, older executables can be found here.

Compiling from source

The installer is provided by electon-builder and processed through webpack.

  1. $ yarn
  2. $ yarn build:prod
  3. $ yarn run dist to package in a distributable format.
  4. $ yarn run pack to generate package directory without distributable.

The building settings is in ./package.json and additional configuration instructions can be found here. The building process will only create version for the current OS. For creating MacOS, Windows and Linux distributable you need to run the command from each OS.

License

MIT See License.md
Free Software, Hell Yeah!

application's People

Contributors

greenkeeper[bot] avatar greenkeeperio-bot avatar haydensd avatar kaylukas avatar kontrollanten avatar limonte avatar mtaberna avatar renovate-bot avatar renovate[bot] avatar snyk-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

application's Issues

Blurry Windows tray icon

Version 0.3.0.
In windows the icon on the notification bar gets blurry.
Windows tray
This might be a problem with the .ico files. My screen is not retina or anything with high DPI.

@pwnsdx Do you have any experience with this?

[Badge] Unread count behavior

With 3a62e2c the badge looks better but some concerns araise.

From 1 to 4 digits badge:
Badge

The badge works well on 2 digits, some 3 digits look good too but >100 gets ugly. We can simply replace with 99+ or something similar so it does not break.

In addition, the badge does not appear when logged in even if you have unread messages. I do like this behavior because it will only appear once a new message comes. Another way is to check for unread messages when the tab loads. Thoughts?

OS X CSS hack

Hello,

First, thanks for this wrapper! After compiling the app looked weird on OS X so I made some modifications to the CSS and it looks much more better now:

Before
Before

After
After

Here is the custom CSS code to put in Settings > Appearance:

header#pm_header-desktop a.logo img { position:absolute; margin:0; margin-left:-65px; margin-top:50px; padding:0px; }

body section.sidebar { padding-top:35px; }

header#pm_header-desktop, #pm_settings .pm_tabs { background:#505061; }

Cheers

JavaScript Error

On Windows 10, version 1709, the following error occurs if you attempt to reopen the app from a shortcut while its running in the background (note that you can't tell that it's running in the background if in tablet mode):

javascript error

OSX Client doesn't remember me

I have just noticed that the OSX client requires me to log in again every time I close the app (cmd+q). Is that an intended behavior?

Optional offline/searchable version

Protonmail does not offer the possibility of using a email client (except using the beta bridge for premium users).
Right now Rambox or Franz offer Protonmail service app that are similar to the desktop version (like multiple accounts).

The dedicated desktop application could offer an alternative solution to email clients, like keeping a local readable copy for offline purpose, and eventually searching through local emails.
Because it may be a privacy concern, this feature could be either locally locked (local encryption?), or simply and opt-in (disabled by default).

Bundle code from WebClient

A problem with the webapp is that the source code is served from ProtonMail's servers, thus could be modified if ProtonMail was forced to. That would allow ProtonMail to get login and mailbox passwords.

A solution would be to bundle the webapp code from https://github.com/ProtonMail/WebClient directly in this app.

snap not working

I've noticed the releases page has a snap package for amd64, which is great. I side-loaded it on Ubuntu 18.04 and the app starts but remains blocked on the splashscreen, I can't get any further.

I'm willing to contribute to the snap packaging but the snapcraft.yaml file is not in the repository, is that intended?

Cannot find module 'gulp-sass'

Thanks for protonmail-desktop. I've been using it for several months but I recently did a "git pull origin". There was a small update, but now "npm start" produces
$ npm start

[email protected] start /home/archives/Office/Email/ProtonMail/Protonmail-git
gulp start --env=development

module.js:529
throw err;
^

Error: Cannot find module 'gulp-sass'
at Function.Module._resolveFilename (module.js:527:15)
at Function.Module._load (module.js:476:23)
at Module.require (module.js:568:17)
at require (internal/module.js:11:18)
at Object. (/home/archives/Office/Email/ProtonMail/Protonmail-git/tasks/build_app.js:2:14)
at Module._compile (module.js:624:30)
at Object.Module._extensions..js (module.js:635:10)
at Module.load (module.js:545:32)
at tryModuleLoad (module.js:508:12)
at Function.Module._load (module.js:500:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: gulp start --env=development
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Git info:

git show
commit fc2fcb5 (HEAD -> master, origin/master, origin/HEAD)
Merge: 4082d3f 674efbc
Author: Matthew [email protected]
Date: Fri Sep 8 22:30:02 2017 +0200

Merge pull request #122 from protonmail-desktop/appveyor-integration

Appveyor integration

[adrian@tower Protonmail-git]$ git list
git: 'list' is not a git command. See 'git --help'.

The most similar commands are
bisect
rev-list
[adrian@tower Protonmail-git]$ git branch

  • master
    [adrian@tower Protonmail-git]$ git tag
    0.3.0
    v0.1.1
    [adrian@tower Protonmail-git]$ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean

MacOS

Im a noob, cant figure out how to run on MacOS.

Transfer repository to organization

Hello,

I would like to start a discussion on whether or not we should move this project to it's own organization. It's grown pretty big, and I feel like everyone would benefit from an organization repository.

Tell me what you think below.

Stay logged in

Hi,
this is a great project. But it is a shame that I must relogin after closing the app.
Maybe the webapp could safe the login data and automatically execute the login button at startup?
Thanks!

Relocate star/unstar toggle

The star/unstar toggle is located right where a right-handed person touches to open an email. How about relocating it under the date?

Add Touch ID support?

I know keeping the account logged in is a huge security hole, but I feel like Touch ID is a pretty good solution. Would love to see this added.

support for appimaged

hi, i am using linuxmint 18.03, 64 bits, cinnamon. Actually i installed the appimage daemon called appimaged.
This is appimaged "appimaged is an optional daemon that watches locations like ~/bin and ~/Downloads for AppImages and if it detects some, registers them with the system, so that they show up in the menu, have their icons show up, MIME types associated, etc. It also unregisters AppImages again from the system if they are deleted. If firejail is installed, it runs the AppImages with it."https://github.com/AppImage/AppImageKit
Many appimages, using this can register the icon in the system menu without installing, only putting the appimages on the bin folder or download folder, etc but many icons appimages are not recognized by appimaged, like rambox, vlc, nextcloud, protonmail etc.
By that reason i request if this is posible, protonmail can be supported by appimaged

Mac version?

Hi their,
I wanted to ask if you could make a mac app too? That would be awesome!

Thanks,
Timo

Links not openable

Hi.
Just got a mail with a confirmation link i had to open.
It didn't work. Was this feature removed to increase security or something like that?
Or is my version just broken.
I remeber old versions just opening the link in the default browser.

Add option to toggle left sidebar

It would be nice if there were an option to hide the left sidebar; I use one account with Protonmail, so having the sidebar open at all times is kind of just a waste of space for me.

Thanks!

Save Username

Hi,
I was wondering, if it would be possible to save the Username/Mail address.
I agree that saving the password is not a good idea, but in my oppinion there is no security threat with saving the Username.
I thought it would be a good idea to implement it in the multiple account branche i currently use.

Build without a github token

Hello,

I guess this is pretty trivial, but I'm still pretty new to the JS universe :)

Is it possible to build this package without a Github token? I can't seem to find anything about it on electron-builder's wiki.

Refactor app to improve state and view handling

A lot of stuff has happened since this app first was release. From being a kind of PoC as a simple webview wrapper to what we have today with multiple accounts support, notifications and upcoming settings panel. And there's also some requests regarding password storage (#149), client lock (#110), TOR integration (#143).

To keep this app scalable, maintainable and welcoming to new contributors I think it's worth pause for now and do a major refactoring.

What I think we need:

  • Centralized state management
    • Settings that's going to be used in multiple places can end up in a real mess without a centralized state management.
    • Notifications that needs to be stored for each account and also as accumulated sum needs a storage.
    • Additional features like password storage, offline indicator, etc will probably need some kind of storage and single source of truth.
  • View renderer
    • To store each new view in a separate html file is neither good for performance nor health. To let a view renderer manage the rendering of new components/views will make it easier and faster.
    • Test friendly. All big view renderer has good support for unit testing, which is a must in my opinion.
    • When we need to manage multiple states a view renderer will help us always keep the UI updated.
  • Contributor friendly code base
    • By create a separate structure between node and renderer process we'll make it easier for newcomers to dig in without any prior experience of electron.
    • Everything should be tested, so contributors always can be sure that as long as the tests pass they (maybe) wont brake anything.
    • Linting tool to keep a consistent styling.

We have a good product which people like. We have a good infrastructure for delivering the product. I think it can be great to let the next step have the focus to make the code clean and easy to understand.

Let me know if you have any feedback, other opinions or questions. As long as no one disagree I'll take the next step to discover which techniques and libraries that would be feasible to achieve this.

Build failing for MacOS

Hello,

After downloading and running yarn install I am unable to run yarn run dist from the source.

The command fails with the following error outputted in terminal.

yarn run v1.3.2
$ electron-builder
electron-builder 19.33.0
Rebuilding native production dependencies for darwin:x64
Rebuilding native dependency node-sass
Packaging for darwin x64 using electron 1.7.8 to dist/mac
Error: Application entry file "app/background.js" in the "/Users/rob/Desktop/application/dist/mac/Protonmail Desktop.app/Contents/Resources/app.asar" does not exist. Seems like a wrong configuration.
    at error (/Users/rob/Desktop/application/node_modules/electron-builder/src/util/asarUtil.ts:246:12)
    at /Users/rob/Desktop/application/node_modules/electron-builder/src/util/asarUtil.ts:272:11
    at Generator.next (<anonymous>)
    at /Users/rob/Desktop/application/node_modules/graceful-fs/polyfills.js:287:18
    at FSReqWrap.oncomplete (fs.js:153:5)
From previous event:
    at checkFileInArchive (/Users/rob/Desktop/application/node_modules/electron-builder/out/util/asarUtil.js:52:22)
    at /Users/rob/Desktop/application/node_modules/electron-builder/src/platformPackager.ts:305:13
    at Generator.next (<anonymous>)
From previous event:
    at MacPackager.checkFileInPackage (/Users/rob/Desktop/application/node_modules/electron-builder/out/platformPackager.js:374:11)
    at /Users/rob/Desktop/application/node_modules/electron-builder/src/platformPackager.ts:353:16
    at Generator.next (<anonymous>)
    at /Users/rob/Desktop/application/node_modules/graceful-fs/polyfills.js:287:18
    at FSReqWrap.oncomplete (fs.js:153:5)
From previous event:
    at MacPackager.sanityCheckPackage (/Users/rob/Desktop/application/node_modules/electron-builder/out/platformPackager.js:392:11)
    at /Users/rob/Desktop/application/node_modules/electron-builder/src/platformPackager.ts:198:16
    at Generator.next (<anonymous>)
    at runCallback (timers.js:789:20)
    at tryOnImmediate (timers.js:751:5)
    at processImmediate [as _immediateCallback] (timers.js:722:5)
From previous event:
    at MacPackager.doPack (/Users/rob/Desktop/application/node_modules/electron-builder/out/platformPackager.js:252:11)
    at /Users/rob/Desktop/application/node_modules/electron-builder/src/macPackager.ts:87:71
    at Generator.next (<anonymous>)
From previous event:
    at MacPackager.pack (/Users/rob/Desktop/application/node_modules/electron-builder/out/macPackager.js:183:11)
    at /Users/rob/Desktop/application/node_modules/electron-builder/src/packager.ts:260:24
From previous event:
    at Packager.doBuild (/Users/rob/Desktop/application/node_modules/electron-builder/out/packager.js:344:11)
    at /Users/rob/Desktop/application/node_modules/electron-builder/src/packager.ts:186:52
    at Generator.next (<anonymous>)
From previous event:
    at Packager.build (/Users/rob/Desktop/application/node_modules/electron-builder/out/packager.js:263:11)
    at /Users/rob/Desktop/application/node_modules/electron-builder/src/builder.ts:283:40
    at Generator.next (<anonymous>)
From previous event:
    at build (/Users/rob/Desktop/application/node_modules/electron-builder/out/builder.js:63:21)
    at loadEnv.then (/Users/rob/Desktop/application/node_modules/electron-builder/src/cli/cli.ts:49:4)
    at runCallback (timers.js:789:20)
    at tryOnImmediate (timers.js:751:5)
    at processImmediate [as _immediateCallback] (timers.js:722:5)
From previous event:
    at Object.args [as handler] (/Users/rob/Desktop/application/node_modules/electron-builder/src/cli/cli.ts:49:4)
    at Object.runCommand (/Users/rob/Desktop/application/node_modules/yargs/lib/command.js:226:22)
    at Object.parseArgs [as _parseArgs] (/Users/rob/Desktop/application/node_modules/yargs/yargs.js:998:24)
    at Object.get [as argv] (/Users/rob/Desktop/application/node_modules/yargs/yargs.js:912:21)
    at Object.<anonymous> (/Users/rob/Desktop/application/node_modules/electron-builder/src/cli/cli.ts:43:15)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Function.Module.runMain (module.js:676:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3
error Command failed with exit code 255.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Can someone please issue some guidance on this error? Obviously I've looked and background.js does indeed exist in src/

Your help is much appreciated.

-Protonmail backer.

No way to turn on/off notifications

There's no way to update the notifications settings. In Chrome it's done by clicking the certificate in the URL bar, which shows permissions for the site, including "Notifications".


Protonmail Desktop 0.2.0
Electron 1.4.5
darwin x64 15.6.0

No focus when switching windows

When switching away from the application, then back; the browser doesn't seem to have focus and needs to be clicked with the mouse or tab pressed 3 times so hotkeys can be used or the command palette activated. I think this is because the accounts sidebar is getting the focus on window activation.

Synchronisation with protonmail/Webclient project

Is this project kept in sync with the protonmail/WebClient project? If I manage to get a pull request merged on that project, will it make its way into this desktop application eventually or would it be better to make the same changes to this project too?

Build fails with Config is invalid on macOS 10.12

The following output is displayed when running "npm run release":


[email protected] prerelease /users/[USERNAME]/Downloads/ProtonMail
gulp build --env=production

[15:26:03] Using gulpfile ~/Downloads/ProtonMail/gulpfile.js
[15:26:03] Starting 'bundle'...
[15:26:03] Starting 'less'...
[15:26:03] Starting 'environment'...
[15:26:03] Finished 'environment' after 2.57 ms
[15:26:03] Finished 'bundle' after 140 ms
[15:26:03] Finished 'less' after 160 ms
[15:26:03] Starting 'build'...
[15:26:03] Finished 'build' after 31 μs

[email protected] release /users/[USERNAME]/Downloads/ProtonMail
build

Error: Config is invalid:
{
"iconUrl": "Unknown option"
}
at /users/[USERNAME]/Downloads/ProtonMail/node_modules/electron-builder/src/util/readPackageJson.ts:153:11
From previous event:
at validateConfig (/users/[USERNAME]/Downloads/ProtonMail/node_modules/electron-builder/out/util/readPackageJson.js:156:22)
at /users/[USERNAME]/Downloads/ProtonMail/node_modules/electron-builder/src/packager.ts:130:11
at Generator.next ()
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
From previous event:
at Packager.build (/users/[USERNAME]/Downloads/ProtonMail/node_modules/electron-builder/out/packager.js:274:11)
at /users/[USERNAME]/Downloads/ProtonMail/node_modules/electron-builder/src/builder.ts:198:33
at Generator.next ()
From previous event:
at build (/users/[USERNAME]/Downloads/ProtonMail/node_modules/electron-builder/out/builder.js:70:21)
at Object. (/users/[USERNAME]/Downloads/ProtonMail/node_modules/electron-builder/out/cli/build-cli.js:71:41)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:427:7)
at startup (bootstrap_node.js:151:9)
at bootstrap_node.js:542:3

npm ERR! Darwin 16.5.0
npm ERR! argv "/usr/local/Cellar/node/7.10.0/bin/node" "/usr/local/bin/npm" "run" "release"
npm ERR! node v7.10.0
npm ERR! npm v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 255
npm ERR! [email protected] release: build
npm ERR! Exit status 255
npm ERR!
npm ERR! Failed at the [email protected] release script 'build'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the protonmail-desktop package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! build
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs protonmail-desktop
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls protonmail-desktop
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! /users/[USERNAME]/.npm/_logs/2017-05-04T14_26_04_274Z-debug.log

I was able to compile it by remocinv "iconUrl" from package.json

Add landing screen

When starting the application for the first time it's just blank (except the sidebar). We should add some kind of simple landing screen that just welcomes the user.

[BUG] Prefill username not working on Windows

No console output, using Win10 and latest master version

I am guessing that the event "dom-ready" activates when Protonmail loading screen appears and attempts to execute the JavaScript provided. At this time the login form did not appear yet and Electron selects an element not created yet.

I would rather avoid setting a timeout, but I could not figure out another solution. I will keep researching

Implement bug tracker

We should implement Sentry, or similar, to track errors and crash reports quickly. Sentry can create GH issues based on tracked errors. Which can be a great ground to build a nice user experience.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.