Gathering detailed insights and metrics for @hurdlegroup/robotjs
Gathering detailed insights and metrics for @hurdlegroup/robotjs
Gathering detailed insights and metrics for @hurdlegroup/robotjs
Gathering detailed insights and metrics for @hurdlegroup/robotjs
npm install @hurdlegroup/robotjs
Typescript
Module System
Node Version
NPM Version
66.7
Supply Chain
98.6
Quality
79.3
Maintenance
100
Vulnerability
80.9
License
C (82.27%)
C++ (7.48%)
JavaScript (6.73%)
Objective-C (2.4%)
Python (0.63%)
HTML (0.49%)
Total Downloads
29,662
Last Day
298
Last Week
3,905
Last Month
7,342
Last Year
23,076
MIT License
84 Stars
741 Commits
9 Forks
1 Watchers
3 Branches
53 Contributors
Updated on Jun 30, 2025
Minified
Minified + Gzipped
Latest Version
0.12.3
Package Id
@hurdlegroup/robotjs@0.12.3
Unpacked Size
0.96 MB
Size
375.15 kB
File Count
63
NPM Version
10.8.1
Node Version
22.13.1
Published on
Feb 11, 2025
Cumulative downloads
Total Downloads
Last Day
313.9%
298
Compared to previous day
Last Week
99.2%
3,905
Compared to previous week
Last Month
139.2%
7,342
Compared to previous month
Last Year
605.7%
23,076
Compared to previous year
Node.js Desktop Automation. Control the mouse, keyboard, and read the screen.
This is a fork of the original unmaintained RobotJS by OctalMage found here: octalmage/robotjs
RobotJS supports Mac, Windows, and Linux.
This is a work in progress so the exported functions could change at any time before the first stable release (1.0.0). Ideas?
Check out some of the cool things people are making with RobotJS! Have your own rad RobotJS project? Feel free to add it!
Install RobotJS using npm:
npm install @hurdlegroup/robotjs
It's that easy! npm will download one of the prebuilt binaries for your OS.
You can get npm here if you don't have it installed.
If you need to build RobotJS, see the building section. Instructions for Electron.
1// Move the mouse across the screen as a sine wave. 2var robot = require("@hurdlegroup/robotjs"); 3 4// Speed up the mouse. 5robot.setMouseDelay(2); 6 7var twoPI = Math.PI * 2.0; 8var screenSize = robot.getScreenSize(); 9var height = (screenSize.height / 2) - 10; 10var width = screenSize.width; 11 12for (var x = 0; x < width; x++) 13{ 14 y = height * Math.sin((twoPI * x) / width) + height; 15 robot.moveMouse(x, y); 16}
1// Type "Hello World" then press enter. 2var robot = require("@hurdlegroup/robotjs"); 3 4// Type "Hello World". 5robot.typeString("Hello World"); 6 7// Press enter. 8robot.keyTap("enter");
1// Get pixel color under the mouse. 2var robot = require("@hurdlegroup/robotjs"); 3 4// Get mouse position. 5var mouse = robot.getMousePos(); 6 7// Get pixel color in hex format. 8var hex = robot.getPixelColor(mouse.x, mouse.y); 9console.log("#" + hex + " at x:" + mouse.x + " y:" + mouse.y);
Read the Wiki for more information!
The RobotJS API is hosted at https://robotjs.io/docs/syntax.
Please ensure you have the required dependencies before installing:
npm install --global --production windows-build-tools
from an elevated PowerShell or CMD.exe)sudo apt-get install libxtst-dev libpng++-dev
).Install node-gyp using npm:
npm install -g node-gyp
Then build:
node-gyp rebuild
See the node-gyp readme for more details.
Module | Status | Notes |
---|---|---|
Mouse | 100% | All planned features implemented. |
Keyboard | 100% | All planned features implemented. |
Screen | 85% | Image search, pixel search. |
Bitmap | 0% | Saving/opening, png support. |
Not currently, and I don't know if it ever will. I personally use Electron/NW.js for global hotkeys, and this works well. Later on I might add hotkey support or create a separate module. See #55 for details.
Soon! This is a bit more complicated than the rest of the features, so I saved it for last. Luckily the code is already there, I just need to write the bindings, and I've already started. Subscribe to #13 for updates.
We've been implementing keys as we need them. Feel free to create an issue or submit a pull request!
The library doesn't have explicit multi-monitor support, so anything that works is kind of on accident. Subscribe to #88 for updates.
For any other questions please submit an issue.
I'm a huge fan of AutoHotkey, and I've used it for a very long time. AutoHotkey is great for automation and it can do a bunch of things that are very difficult in other languages. For example, it's imagesearch and pixel related functions are hard to reproduce on Mac, especially in scripting languages. These functions are great for automating apps that can't be automated like Netflix. This has never been a big deal since I've always used Windows at work, but for the past few years I've been using Mac exclusively.
I like AutoHotkey, but I like Node.js more. By developing RobotJS I get an AutoHotkey replacement on Mac (finally!), and I get to use my favorite language.
TLDR: There's nothing like AutoHotkey on Mac, so I'm making it.
MIT
Based on autopy. Maintained by Daniel McAssey.
No vulnerabilities found.
No security vulnerabilities found.