New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

electron-util

Package Overview
Dependencies
Maintainers
1
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

electron-util

Useful utilities for developing Electron apps and modules

  • 0.7.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
9K
decreased by-2.02%
Maintainers
1
Weekly downloads
 
Created
Source

electron-util Build Status

Useful utilities for developing Electron apps and modules

You can use this module directly in both the main and renderer process.

Install

$ npm install electron-util

Usage

const {appReady, is} = require('electron-util');

(async () => {
	await appReady;

	console.log(is.macos && is.main);
	//=> true
})();

API

api

Type: Object

Access the Electron APIs in both the main and renderer process without having to care about which one you're in.

For example, in the renderer process:

api.app.quit();

The app API is usually only available in the main process.

is

Type: Object

Check for various things:

  • macos - Running on macOS
  • linux - Running on Linux
  • windows - Running on Windows
  • main - Running on the main process
  • renderer - Running on the renderer process
  • development - Running in development, not in production
  • usingAsar - The app is using ASAR
  • macAppStore - The app is an Mac App Store build
  • windowsStore - The app is a Windows Store AppX build

appReady

Type: Promise

Resolves when the app is ready.

appRoot

Type: string

Path to the root of the app.

Read more.

electronVersion

Type: string
Example: 1.7.9

Electron version.

chromeVersion

Type: string
Example: 62.0.3202

Chrome version in Electron.

platform(choices)

Type: Function

Accepts an object with the keys as either macos, windows, linux, or default, and picks the appropriate key depending on the current platform. If no platform key is matched, the default key is used if it exists. If the value is a function, it will be executed, and the returned value will be used.

init({
	enableUnicorn: util.platform({
		macos: true,
		windows: false,
		linux: () => false
	})
});

activeWindow()

Type: Function

Returns the active window.

loadFile(window, filePath)

Load a file into the given window using a file path relative to the root of the app.

loadFile(win, 'index.html');

You use this instead of the verbose win.loadURL(`file://…`);

Read more.

runJS(code, [window])

Type: Function

Run some JavaScript in the active or given window.

Returns a promise for the result of the executed code or a rejected promise if the result is a rejected promise.

fixPathForAsarUnpack(path)

Type: Function

ASAR is great, but it has limitations when it comes to executing binaries. For example, child_process.spawn() is not automatically handled. So you would have to unpack the binary, for example, with the asarUnpack option in electron-builder. This creates a problem as the path to the binary changes, but your path.join(__dirname, 'binary') is not changed. To make it work you need to fix the path. That's the purpose of this method.

Before:

/Users/sindresorhus/Kap.app/Contents/Resources/app.asar/node_modules/foo/binary

After:

/Users/sindresorhus/Kap.app/Contents/Resources/app.asar.unpack/node_modules/foo/binary

enforceMacOSAppLocation() macOS

Type: Function

On macOS, for security reasons, if an app is launched outside the Applications folder, it will run in a read-only disk image, which could cause subtle problems for your app. Use this method to ensure the app lives in the Applications folder.

It must not be used until the app.on('ready') event has been emitted.

It will be a noop during development and on other systems than macOS.

On Electron 1.8.1, it will offer to automatically move the app for the user:

On older Electron versions, it will just warn the user:

menuBarHeight() macOS

Returns the height of the menu bar on macOS, or 0 if not macOS.

getWindowBoundsCentered([options])

Get the bounds of a window as if it was centered on the screen.

options

Type: Object

window

Type: BrowserWindow
Default: Current window

The window to get the bounds of.

size

Type: Object
Default: Size of window

Set a new window size. Example: {width: 600, height: 400}

setWindowBounds(bounds, [options])

Set the bounds of a window. This is similar to the BrowserWindow#setBounds() method, but it allows setting any of the x, y, width, height properties, instead of forcing you to set them all at once. The properties that are not set will just fall back to the current ones.

options

Type: Object

window

Type: BrowserWindow
Default: Current window

The window to set the bounds of.

animated

Type: boolean
Default: false

Animate the change.

centerWindow([options])

Center a window on the screen.

options

Type: Object

window

Type: BrowserWindow
Default: Current window

The window to center.

size

Type: Object
Default: Size of window

Set a new window size. Example: {width: 600, height: 400}

animated

Type: boolean
Default: false

Animate the change.

Node.js API

This is for non-Electron code that might be included in an Electron app. For example, if you want to add special support for Electron in a vanilla Node.js module.

const electronUtil = require('electron-util/node');

if (electronUtil.isElectron) {
	// Electron workaround
} else {
	// Normal code
}

isElectron

Type: boolean

Check if you're running in an Electron app.

electronVersion

Type: string
Example: 1.7.9

Electron version. Returns 0.0.0 when not in an Electron app.

isUsingAsar

Type: boolean

Check if the Electron app you're running in is using ASAR.

fixPathForAsarUnpack(path)

Same as the above Electron version.

License

MIT © Sindre Sorhus

Keywords

FAQs

Package last updated on 09 Mar 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc