2
2
mirror of https://github.com/Llewellynvdm/nativefier.git synced 2024-12-23 02:28:55 +00:00
Commit Graph

247 Commits

Author SHA1 Message Date
Umair Ahmed
81c422d4e0 Support setting background color (fixes #795) (PR #819)
Adds a `--background-color` flag for the background of the window when the app isn't loaded.
2019-08-22 21:25:58 +02:00
Adrian DC
b959956a38 Squirrel: resolve .quit() issue with missing ../screen (PR #784)
* As explained in: https://github.com/electron/electron/issues/8862#issuecomment-294303518
    an issue with .quit() exists with a "Cannot find module '../screen'" issue,
    while using the .exit() alternative avoids the issue

* Validated on Windows with the same logic as #744 where the issue recently appeared
2019-04-19 13:21:36 -04:00
Ying
479611ecc4 Fix crash when launching a second instance using option --single-instance (Fixes #664)
This refactors the deprecated call to `app.makeSingleInstance()`.
See [electron / app.requestSingleInstanceLock()](https://electronjs.org/docs/all?q=app.requestSingleInstanceLock).
2019-03-25 11:16:28 -04:00
Anas Emad
a27bb0fd35 Prevent menu from opening on Alt+Shift, by defining Alt+... menu shortcuts (#768)
On Linux if you try to change the keyboard layout with Alt + Shift,
the menu will pop up. Shortcuts are needed because Electron opens
the first menu on pressing `Alt` if no hotkey is assigned.

[Similar issue in RocketChat](https://github.com/RocketChat/Rocket.Chat.Electron/issues/50)
2019-03-17 11:29:15 -04:00
Adrian DC
5b6cc89f22 Fix #316: Add --clear-cache flag to cleanup session on start/exit ("incognito" mode) (PR #747)
- Add a new `clearCache` option and `--clear-cache` parameter
  to trigger session cleanups upon window launch and close

- Covers the feature request from issue #316 

- Use case example: Forcing authentification / login between sessions without limiting cache size
2019-02-08 10:03:29 -05:00
Adrian DC
310d63e397 Support packaging nativefier applications into Squirrel-based installers (#744)
[Squirrel](https://github.com/Squirrel/Squirrel.Windows) is *"an installation and update
framework for Windows desktop apps "*.

This PR adds `electron-squirrel-startup`, allowing to package nativefier applications 
into squirrel-based setup installers. Squirrel require this entrypoint to perform
desktop and startup menu creations, without showing the UI on setup launches.

- References: https://github.com/mongodb-js/electron-squirrel-startup

- Resolves `electron-winstaller` and `electron-installer-windows` support of desktop / startup menu shortcuts for nativefier packaged applications.

- The `electron-squirrel-startup` entrypoint has no effect on both Linux and Darwin, only on Windows

- Supporting it directly inside `nativefier` avoids having to "hack" around the existing `main.js`
  and including dependencies from `electron-squirrel-startup` in an intermediate package
  to be included in a third layer for the final installer executable

- The following script based on both `nativefier` and `electron-winstaller` templates
   represents a portable proof of concept for this merge request :

```js
var nativefier = require('nativefier').default;
var electronInstaller = require('electron-winstaller');

var options = {
  name: 'Web WhatsApp',
  targetUrl: 'http://web.whatsapp.com',
  platform: 'windows',
  arch: 'x64',
  version: '0.36.4',
  out: '.',
  overwrite: false,
  asar: false,
  counter: false,
  bounce: false,
  width: 1280,
  height: 800,
  showMenuBar: false,
  fastQuit: false,
  userAgent: 'Mozilla ...',
  ignoreCertificate: false,
  ignoreGpuBlacklist: false,
  enableEs3Apis: false,
  insecure: false,
  honest: false,
  zoom: 1.0,
  singleInstance: false,
  fileDownloadOptions: {
    saveAs: true
  },
  processEnvs: {
    GOOGLE_API_KEY: '<your-google-api-key>'
  }
};

nativefier(options, function(error, appPath) {
  if (error) {
    console.error(error);
    return;
  }
  console.log('App has been nativefied to', appPath);

  resultPromise = electronInstaller.createWindowsInstaller({
    appDirectory: 'Web WhatsApp-win32-x64',
    outputDirectory: './',
    authors: 'Web WhatsApp',
    exe: 'Web WhatsApp.exe'
  });

  resultPromise.then(() => console.log('It worked!'), e => console.log(`No dice: ${e.message}`));
});
```
2019-02-08 09:57:32 -05:00
Dominic Hopton
e064f765cb Fix CSS & JavaScript injection (Fixes #703, Fixes #731, PR #732)
* Fix for CSS Injection not working (#703)

Issue:
When using `onHeadersReceived`, the code was passing `null` for the filters.
This appears to trigger behaviour that matches _no_ urls at all.
This results in it never being called to inject the CSS.

Fix:
Pass an empty array instead. Now it's called for all URLs.

Tests pass & linting is clean

* Fix JavaScript injection (#731)

Issue:
It appears that on low endd evices (Core m3 MacBook), the attachment to
`DOMContentLoaded` happens _after_ the event has been raised, so does
not have a chance to inject the script.

Fix:
Move the attachment to the top of the file -- before the imports. This
triggers a bunch of linting erros, so also added disablement inplace.

Additional:
Clarified when the injected JS gets loaded, and what it can assume about
the DOM.
2019-01-01 23:38:45 -05:00
Felix Eckhofer
8600c78d1a Add --start-in-tray CLI flag to let app start in background (PR #564, Fixes #522) 2018-12-01 14:04:55 -05:00
Luccas Clezar
114b4a9724 Fix CSS injection broken with Electron 3 (PR #709, Fixes #703)
See Electron 3.0 breaking API changes:
https://electronjs.org/blog/electron-3-0#breaking-api-changes

  [#12477] https://github.com/electron/electron/pull/12477
           refactor: removed `did-get-response-details` and `did-get-redirect-request events`
2018-11-30 21:14:20 -05:00
Benedikt Rötsch
3029cba01f Support global shortcuts that trigger input events (PR #698, Fixes #15)
This adds a new flag, allowing the user to define global shortcuts that trigger input events within the main window.

That way, I could easily wrap SoundCloud and Deezer to create a native app which reacts on my keyboard media buttons.
2018-11-04 21:03:52 -05:00
Sascha Ißbrücker
27ea3fc4a3 Show application window on notification click (#640) 2018-08-22 16:06:44 -04:00
Ronan Jouchet
19561e9ad6 Make eslint happy 2018-07-21 09:16:02 -04:00
Ronan Jouchet
bbef14ccc6 Bump default Electron to 2.0.5, upgrade deps 2018-07-21 08:58:53 -04:00
David Kramer
c065cad01a Fix #633 - "Copy Current URL" causing TypeError(#634)
When the `getCurrentUrl` function was refactored to make use of the `withFocusedWindow` function in ac99c6424d, it stopped returning a value and broke the "Copy Current URL" feature (#633).

This change restores the original behavior of the getCurrentURL function and makes the "Copy Current URL" feature functional again.
2018-06-14 08:06:30 -04:00
Khai Nguyen
b8c1d35ba4 Add --title-bar-style flag (macOS only) (PR#627) 2018-05-31 08:05:12 -04:00
David Kramer
9e587e5fe3 Fix #610 - Make the counter regexp allow punctuation (#626)
When using an app such as Gmail, the unread count is included in the title, and the --counter feature displays that number on the dock icon. However, when the number is larger than 999, it includes commas in the number (e.g. "1,000"), and the number is no longer displayed on the dock icon, because the regular expression used to detect the counter value does not permit punctuation. This change modifies the regular expression used to match the counter value to permit "." and ",".
2018-05-28 08:14:54 -04:00
David Kramer
aa243b6f80 Fix sites that use about:blank redirect technique (#623)
* Fix sites that use about:blank redirect technique

When you open some links with Google Calendar, instead of opening the link directly, the site opens a new window with the location 'about:blank' and then sets the new window's document content to include a refresh directive to open the actual link. This change causes the 'about:blank' links to be handled internally so that the technique can actually work.

* Hide 'about:blank' windows while they perform the redirect

After a new window is created for an 'about:blank' link, the redirect occurs, which causes another window to be opened. This change causes the 'about:blank' to be created hidden, and then closed entirely once the redirect finishes.

* Add tests for `linkIsInternal`

* Refactor onNewWindow to make it testable
2018-05-27 17:18:59 -04:00
David Kramer
bde4ea68fd Force all external links to be opened externally (#624) 2018-05-27 14:04:08 -04:00
David Kramer
1afc480923 Fix #621 - Always open external links externally (#622)
The tab feature introduced by #579 included a change that checks the `disposition` parameter and conditionally creates tabs, and that check was placed prior to the check to see if the URL is internal. This change moves the `linkIsInternal()` check earlier so that external links are always opened externally, regardless of disposition.
2018-05-27 14:02:23 -04:00
David Kramer
587d615085 Fix #616 - Only override the default window opening behavior when necessary (#620)
As part of #591, all window creation was routed through a createNewWindow function.  That change introduced the regression reported in #616 in which popup windows could not communicate with their parent windows. This change reverts that behavior for windows opened via JavaScript (that aren't being opened as tabs and aren't being opened in external browsers), thereby fixing the reported regression.
2018-05-26 22:50:36 -04:00
Goh Jia Hao
95fc46d38d Integrate prettier 2018-05-24 00:02:44 -07:00
David Kramer
69a5b2cbbe Fix Gmail complaining window creation was prevented by a popup blocker (PR #603)
By changing incorrect window `guest` property to `newGuest`. See
https://github.com/electron/electron/blob/master/docs/api/web-contents.md#event-new-window

> Calling `event.preventDefault()` will prevent Electron from 
> automatically creating a new BrowserWindow. If you call
> `event.preventDefault()` and manually create a new BrowserWindow
> then you must set `event.newGuest` to reference the new BrowserWindow
> instance, failing to do so may result in unexpected behavior.
2018-05-10 23:54:34 -04:00
David Kramer
be25eab45d Fix #547 - Default to Electron 2.0.0 and review deprecations (PR #587) 2018-05-01 19:29:03 -04:00
David Kramer
ac99c6424d macOS: Add native tabs (PR #579)
Electron supports using native tabs on macOS (API added in Electron 1.8.1). This change adds a context menu item on platforms that support it (macOS for now) to open links in new tabs, and also adds support for {command,middle}-clicking links to open them in a new tab.

Maintainer (@ronjouch) note: this feature is macOS-only. Windows/Linux patches welcome 🙂.
2018-05-01 19:24:35 -04:00
David Kramer
0848143096 Fix #590, Fix #439 - Ensure children windows have the same behavior as the mainWindow (PR #591) 2018-04-30 21:36:45 -04:00
David Kramer
ec1023d7ef Fix #95, #384 - Use electron-context-menu, supporting cut/copy/paste (PR #588)
The electron-context-menu package uses the context-menu event emitted by WebContents (API added in Electron 1.0.2) to add a general context menu supporting generic actions (e.g. cut/copy/paste) that can be customized. This change replaces the existing context menu, which relies on adding an event listener in preload.js, with one built using the new package.
2018-04-22 19:48:56 -04:00
David Kramer
bbb513d420 Fix #364 - Add --disable-gpu flag to disable hardware acceleration (PR #584) 2018-04-22 15:56:10 -04:00
David Kramer
454ab1e7bd Fix #474: Remember custom zoom level (PR #582)
... by using setZoomFactor instead of sending change-zoom event.
2018-04-22 15:54:29 -04:00
Matt Rose
574205ab0d macOS: Add --bounce option for dock counter (PR #570) 2018-04-14 17:17:25 -04:00
sgroh
46d381481c Fix #549: Add --always-on-top build flag (PR #551) 2018-03-16 18:15:44 -04:00
Bob Roth
cec9c4b819 Fix #499: Add options to control file download behavior (PR #526) 2018-01-26 09:59:58 -05:00
Matt Harris
28dca8c647 Fix #325 - Add --x and --y window position flags (PR #515) 2017-12-26 13:00:39 -05:00
Matt Harris
eb08d85830 Fix #480 - Move all console.* to loglevel.* calls, eslint-fail on console.* (PR #507) 2017-12-19 08:42:06 -05:00
omouren
1c8d04e532 Fix #486 : --tray flag crashes nativefied app under Windows (PR #495) 2017-11-25 23:27:19 -05:00
Ronan Jouchet
8963544afa
Fix #462 - When minimized to tray and single-instance, re-running the app should activate and focus it (#490) 2017-11-24 10:31:08 -05:00
Ronan Jouchet
6fb3b92eb8
Upgrade dependencies and default to latest Electron 1.7.9 (PR #483)
* Update deps except eslint
* Update eslint and lint:fix (WIP, needs manual fixing for remaining 44 problems)
* Manually fix remaining eslint errors
* Document deprecation of `version-string` as of electron-packager 9.0.0
* Upgrade to Electron 1.7.9 (chrome-58, node-7.9.0, v8-5.8)
* npm: Disable generation of package-lock.json and gitignore it
  --Trying this, package-lock is a pain in PRs. May not be a good idea
  (obviously we lose deps pinning), will revert if necessary.--
* npm tasks: add dev-up-win for Windows developers,
  and e2e for end-to-end tests. Update docs.
* Move normalizeUrl test to a jest unit test, makes no sense to be in the mocha e2e tests
* Switch from babel-preset-es2015 to babel-preset-env,
  with target.node=4.0. Seem like it's today's most convenient
  way to support the latest ES and let babel transpile to what
  makes sense for our currently minimal node version
2017-11-14 08:05:01 -05:00
omouren
885790bc22 Fix #304 - Add --tray CLI flag to let app running in background on window close. Supports in-title counter. (#457) 2017-10-05 19:32:48 -04:00
Devin Buhl
4c581f9067 Fix #275 - Add HTTP --basic-auth-{username,password} CLI flags (#444) 2017-10-05 18:44:03 -04:00
Sayed Hadi Hashemi
84dcde9d5b Fix #404: Add 'Paste and Match Style' to Edit Menu (#447) 2017-10-03 11:51:34 -04:00
Bob Roth
c9d2040327 Allow nativefier to set process.env variables (#419) 2017-08-16 10:20:43 -04:00
Lukas Kurucz
094cac23bc Make title counter regex match '+' after number, used by certain sites (#424) 2017-08-13 21:22:15 -04:00
Goh Jia Hao
33fe71a855 Add package-lock for npm
This fixes dependency issues that were experienced in notably #425 and
other master commits I've tried to restart on 12/08/17
2017-08-12 11:34:48 +08:00
Brian Blakely
1f07f148c6 Force fullscreen when options.fullScreen is true (#403)
Fixes #402, as electron-window-state does not appear to remember fullscreen in all cases.
2017-08-06 20:01:34 -04:00
Bob Roth
6ed2bd0672 fixes issue #353: missing companyName in crashReporter.start (#417) 2017-07-21 15:55:39 -04:00
David Pacheco
38825e8b71 Add options (--ignore-gpu-blacklist and --enable-es3-apis) to allow for WebGl apps to work on legacy or unsupported graphics cards by Chrome (#410) 2017-07-13 12:23:07 -04:00
romo-dw
ab435ee5a6 Add support for --disk-cache-size Electron flag (PR #400) 2017-07-05 09:07:31 -04:00
Jia Hao Goh
8f78dd03af Update eslint and use Airbnb style
- Add `npm run lint:fix` command
- Cleanup inferIcon.js logic slightly
2017-04-29 22:52:12 +08:00
Ronan Jouchet
bbce1e88d4 Fix #253 - Better honor --zoom option. (#347)
* When zooming in/out, start from the options zoom, not 1 (don't jump)
* Add 'Zoom Reset' feature bound to Ctrl+0, with indicative label for non-100% zoom value
2017-04-19 07:47:54 -04:00
Ronan Jouchet
be4b9a7436 Fix #327 - Update dependencies (except eslint), default to Electron 1.6.6 (#341) 2017-04-18 17:30:54 -04:00
Krzysztof Zbiciński
da637ebf73 Add --single-instance switch (#323) 2017-04-09 22:02:49 -04:00
Roman Masyhar
df585cbe59 Rename 'Open in default browser' contextMenu to 'Open with default browser' (#338)
`Open with` more popular and familiar rather than `Open in`
2017-04-07 22:28:35 -04:00
Goh Jia Hao
1286372f95 Add editorconfig to trim trailing whitespace 2016-10-09 19:05:43 +08:00
Goh Jia Hao
2529153ca1 Use let instead of const 2016-10-09 14:16:44 +08:00
Goh Jia Hao
d26d5b9bbe Merge branch 'patch-1' of https://github.com/ronjouch/nativefier into ronjouch-patch-1 2016-10-09 14:15:00 +08:00
Goh Jia Hao
b85bde4963 Merge branch 'development' of https://github.com/thomsbg/nativefier into thomsbg-development
# Conflicts:
#	app/src/main.js
2016-10-09 14:01:02 +08:00
Goh Jia Hao
f63f2e9e2b Merge branch 'master' into development
- Pull request was accidentally merged into master
2016-10-09 13:52:50 +08:00
Ronan Jouchet
a42554fe1d Fix context menu actions broken on <a> elements containing nested markup
Test case: open nativefier on

```html
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Test</title>
</head>
<body>
  <a href="https://google.com/">Google</a>
  <br>
  <a href="https://google.com/"><span>Google, in span</span></a>
</body>
</html>
```

* **Expected**: both links open in default browser
* **Actual under nativefier 7.0.1**: Nothing happens when clicking the second link in which the `<a>` contains a `<span>`
2016-09-29 14:10:28 -04:00
Blake Thomson
f3293502a7 Fix badge notifications 2016-09-07 17:44:59 -07:00
Lex Neva
9243f6689f add "copy link location" and "--internal-urls <regex>" features (#230)
* add arg to specify pattern for urls to be considered internal

* add 'copy link location' to context menu

* fix lint
2016-08-07 02:03:53 +08:00
Mats Högberg
a407b9ea52 Added a --zoom option for setting default zoom (#218)
* Added a --zoom option for setting initial zoom

* Added information about --zoom to documentation
2016-07-12 09:32:40 +08:00
Jia Hao
612da8ce36 Fix/performance issues with FOUC (#214)
Fix/performance issues with FOUC #191
2016-06-16 15:28:36 +08:00
Goh Jia Hao
f262252ade Implement downloading of files
- Fixes #185
2016-05-26 22:50:40 +08:00
Goh Jia Hao
a70433959b Refactor to use ES6 imports for electron modules 2016-05-26 22:50:15 +08:00
Goh Jia Hao
1de9eec356 Implement disabling of developer tools
- Partially addresses #194
2016-05-26 18:02:43 +08:00
Goh Jia Hao
537dc01fd1 Fix linting errors 2016-05-26 18:01:33 +08:00
Goh Jia Hao
c3ae29a0ea Fix FOUC #159 2016-05-26 17:41:25 +08:00
Goh Jia Hao
7945f7802e Implement min/max window width and height
Fixes #82
2016-05-26 17:11:51 +08:00
Goh Jia Hao
fcab2a9a95 Update browserWindow options to follow new electron api
- Use camel casing instead
2016-05-26 16:52:26 +08:00
Goh Jia Hao
286e5bf7d6 Use destructuring for ES6 import 2016-05-26 16:51:07 +08:00
Goh Jia Hao
c91def53af Fix placeholder for electron app to google 2016-05-26 16:50:42 +08:00
Goh Jia Hao
6fd275f063 Update default electron version to v1.0.2 2016-05-13 12:51:05 +08:00
Jia Hao
9f3dfdc315 Merge pull request #202 from lexelby/fix-slowdown
Fix deteriorated responsiveness #191 and polluted console #172
2016-05-08 14:26:40 +08:00
Lex Neva
52f7ea511d Revert "Fix FOUC with inject CSS files"
This reverts commit eeb661b6cd.

This was causing CSS to pile up over and over each time javascript did an HTTP request, which resulted in massive slowdown over time.
2016-05-06 09:22:43 -04:00
matthewdias
49ab72352e merge upstream, reverse default 2016-04-25 17:09:01 -05:00
Alexandr Priezzhev
f5d6980bfe Merge with upstream/development 2016-04-17 23:33:08 +02:00
Jia Hao
810d282ede Merge pull request #187 from janjongboom/disable_context_menu
Add an option to disable the context menu
2016-04-17 12:55:01 +08:00
Alexandr Priezzhev
f7240fb748 Update mainWindow.js 2016-04-17 01:32:52 +02:00
Alexandr Priezzhev
2f769bdb82 Add an option to hide window frame 2016-04-17 00:56:40 +02:00
Jan Jongboom
ccdef6d5de Add an option to disable the context menu 2016-04-16 16:07:09 +02:00
Huy Hong
e6454ca7a0 Rebind 'Copy Current URL' to 'CmdOrCtrl+L' to mimic 'Open Location' in browsers 2016-04-08 14:10:24 -07:00
Jia Hao
404bab30c3 No longer enable flash by default
Flash should be enabled with `--flash`, which will also enable the `--insecure` flag
2016-03-26 15:06:50 +08:00
Jia Hao
d020d5d659 Fix mainWindow state not managed properly
Need to call manage `mainWindowState.manage(mainWindow)` immediately instead of at the end of `createMainWindow()`, if not certain changes such as maximizing the main window before it has been registered will not be saved.
2016-03-25 21:06:59 +08:00
Bogdan Begovic
39e2459aad Added option for maximization of main window ( #133 ) - Fixed linting errors 2016-03-22 18:16:34 +01:00
Bogdan Begovic
7351c61664 Added option for maximization of main window ( #133 ) 2016-03-22 18:09:21 +01:00
Marko Radak
eeb661b6cd Fix FOUC with inject CSS files 2016-03-14 07:39:41 +01:00
Jia Hao
8ef3137d02 Change eslint to disallow unused variables 2016-02-28 00:49:54 +08:00
Jia Hao
99fcb60a44 Split gulpfile into multiple parts 2016-02-28 00:45:44 +08:00
Jia Hao
0ed5bd8c7b Fix #117 ENOENT when infering flash 2016-02-26 03:13:11 +08:00
Jia Hao
31ee80f84f Implement command line flag to start app in full screen, resolves #109 2016-02-25 18:26:28 +08:00
Jia Hao
9b3de78d37 Fix bug where css is always injected 2016-02-25 15:25:14 +08:00
Jia Hao
e1426b849a Implement injection of css 2016-02-25 14:56:32 +08:00
Jia Hao
4d49c01ff3 Implement injection of .js 2016-02-25 14:11:48 +08:00
Jia Hao
6faba7da42 Refactor menu arguments into options 2016-02-25 10:37:06 +08:00
Jia Hao
875149bcf7 Merge pull request #149 from garymoon/development
Make app data folder consistent per URL and allow clearing of app data from menu
2016-02-25 09:54:10 +08:00
Gary Moon
ce76d0be7f add mainWindow and options objects to createMenu args and refactor 2016-02-24 09:45:22 -05:00
Gary Moon
546bad7035 remove clear cache menu item 2016-02-24 09:44:39 -05:00
Gary Moon
df6f958904 Fix linter errors 2016-02-23 19:14:11 -05:00
Gary Moon
e4a4476e35 Added clear app data and clear cache options 2016-02-23 18:19:52 -05:00
Jia Hao
1b0351cd01 Change flag usage
- `--ignore-certificate` to ignore invalid certificate errors,
- `--insecure` to disable web security to allow mixed content
2016-02-23 21:31:47 +08:00
Jia Hao
7bfa42ef71 Merge branch 'development' into feature/flash
# Conflicts:
#	README.md
#	src/build/buildApp.js
#	src/cli.js
#	src/options/optionsMain.js
2016-02-23 21:13:20 +08:00