npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

linux-xorg-screencapture

v1.1.1

Published

Captures the Linux desktop using Xorg APIs

Downloads

3

Readme

Linux Xorg Screencapture

A native Node.js addon which captures the screen content on Linux using the Xorg API

Installation

npm install linux-xorg-screencapture

Usage

const { XScreencap } = require('linux-xorg-screencapture');

let xsc = new XScreencap("RGBA");

let success = xsc.connect();

if (!success) {
	console.log("Could not connect to X server");
	process.exit(0);
}

let image;
try {
	image = xsc.getImage(-1);
} catch(err) {
	console.log("An error occured:", err.message);
	process.exit(0);
}

// work with the data in image

More examples can be found in the examples/ directory.

Methods

Data format

All of the method returning images return an object with the format:

{
	data: Buffer,
	width: Number,
	height: Number
}

The data in the buffer are the raw pixel values either in RGB or RGBA order. This object format is referred to as the "default format" in the rest of this documentation.

XScreencap

constructor(?pixel_format)
Create a new instance with an optional pixel format. The pixel format determines the data contained in the returned buffers and can either be "RGB" or "RGBA" (default). The alpha channel is always set to 255, however.

connect()
This method connects the library to the X server and it needs to be called before any other method. Returns true on success and false if something went wrong.

getMonitorCount()
Returns the number of active monitors identified via RandR. If RandR is not available, this method returns -1.

getImage(monitor)
Synchronously gets the image of the specified monitor. If RandR is not available, or -1 is supplied as the monitor value, the whole virtual X screen will be captured. The method either returns an image in the default format or throws an error.

getImageAsync(monitor)
Asynchronous version of getImage, which returns a promise resolving to image data in the default format.

startAutoCapture(delay, monitor, ?allowSkips)
Starts a new thread, which tries to capture the screen every delay milliseconds. Image data is then emitted as an image event. This method functions similar to setInterval(() => xsc.getImageAsync().then(image => emit("image", image)), delay), but with the added bonus of all the timing stuff happening in native code and a separate thread, which improves the performance. Note: You can only have one of these threads running at any time, so subsequent calls to startAutoCapture without stopping the auto capture in between have no effect. The optional parameter allowSkips controls how the thread queues up the image events. If the event did not have a chance to fire before the next image is captured, it can either be queued up (allowSkips = false) or just be thrown away (allowSkips = true, default).

stopAutoCapture(?clearBacklog)
Stops the auto capture thread. By default, no futher image events will be emitted after this method has been called, since clearBacklog is true by default. If you want to process every captured frame however, set clearBacklog to false.

Events

Event 'image'
Emitted in an interval which duration is determined by the delay parameter in the startAutoCapture method. The event handler will be called with an object in the default image format.