UNPKG

@arcsine/win-info

Version:

Get metadata about a program window (title, id, bounds, screens, owner, etc). Works on macOS, X11-based Desktops (Linux, BSD), Windows.

130 lines (98 loc) 3.12 kB
# @arcsine/win-info Forked from [active-win](https://github.com/sindresorhus/active-win), by Sindre Sorhus Get metadata about the window backing a process PID, or the [active window](https://en.wikipedia.org/wiki/Active_window). (title, id, bounds, owner, etc) Works on macOS, Windows and X11-based Desktops (Linux, BSD). Wayland support is missing. ## Install ``` $ npm install @arcsine/win-info ``` ## Usage ```js const * as winInfo = require('@arcsine/win-info'); (async () => { console.log(await winInfo.getActive()); /* { title: 'Unicorns - Google Search', id: 5762, bounds: { x: 0, y: 0, height: 900, width: 1440 }, screens: [{ x: 0, y: 0, height: 920, width: 1440, index: 0, scale: { width: 1, height: 1 } }], owner: { name: 'Google Chrome', processId: 310, bundleId: 'com.google.Chrome', path: '/Applications/Google Chrome.app' }, memoryUsage: 11015432 } */ })(); ``` ```ts import * as winInfo from '@arcsine/win-info'; ... console.log(await winInfo.getActive()); ... ... console.log(await winInfo.getByPid(1000)); ... ... console.log(winInfo.getActiveSync()); ... ``` ## API ### getByPid(pid: number, platform?: string) Returns a `Promise<Object>` with the result for the window tied to PID. ### getActive(platform?: string) Returns a `Promise<Object>` with the result for the active window. ### getByPidSync(pid: number, platform?: string) Returns an `Object` with the result for the window tied to PID. ### getActiveSync(platform?: string) Returns an `Object` with the result for the active window. ## Result - `title` *(string)* - Window title - `id` *(number)* - Window identifier - `bounds` *(Object)* - Window position and size - `x` *(number)* - `y` *(number)* - `width` *(number)* - `height` *(number)* - `screens` *(Array)* - Screens that overlap with the window - `x` *(number)* - `y` *(number)* - `width` *(number)* - `height` *(number)* - `index` *(number)* - Display index - `scale` - `x` *(number)* - The horizontal pixel ratio for the screen (physical to logical) - `y` *(number)* - The vertical pixel ratio for the screen (physical to logical) - `owner` *(Object)* - App that owns the window - `name` *(string)* - Name of the app - `processId` *(number)* - Process identifier - `bundleId` *(string)* - Bundle identifier *(macOS only)* - `path` *(string)* - Path to the app *(macOS and Windows only)* - `memoryUsage` *(number)* - Memory usage by the window *(macOS only)* ## OS support It works on macOS, Windows 7+, and X11-based desktops (Linux, BSD). **Note**: On Windows, there isn't a clear notion of a "Window ID". Instead it returns the memory address of the window "handle" in the `id` property. That "handle" is unique per window, so it can be used to identify them. [Read more…](https://msdn.microsoft.com/en-us/library/windows/desktop/ms632597(v=vs.85).aspx#window_handle). ## Maintainers - [Sindre Sorhus](https://github.com/sindresorhus) - [Sebastián Ramírez](https://github.com/tiangolo) - [Timothy Soehnlin](https://github.com/arciisine) ## License MIT