Node.js Desktop Automation.

Related tags

Automation robotjs
Overview

Node.js Desktop Automation. Control the mouse, keyboard, and read the screen.

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!

Contents

Installation

Install RobotJS using npm:

npm install 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.

Examples

Mouse

// Move the mouse across the screen as a sine wave.
var robot = require("robotjs");

// Speed up the mouse.
robot.setMouseDelay(2);

var twoPI = Math.PI * 2.0;
var screenSize = robot.getScreenSize();
var height = (screenSize.height / 2) - 10;
var width = screenSize.width;

for (var x = 0; x < width; x++)
{
	y = height * Math.sin((twoPI * x) / width) + height;
	robot.moveMouse(x, y);
}
Keyboard
// Type "Hello World" then press enter.
var robot = require("robotjs");

// Type "Hello World".
robot.typeString("Hello World");

// Press enter.
robot.keyTap("enter");
Screen
// Get pixel color under the mouse.
var robot = require("robotjs");

// Get mouse position.
var mouse = robot.getMousePos();

// Get pixel color in hex format.
var hex = robot.getPixelColor(mouse.x, mouse.y);
console.log("#" + hex + " at x:" + mouse.x + " y:" + mouse.y);

Read the Wiki for more information!

API

The RobotJS API is hosted at https://robotjs.io/docs/syntax.

Building

Please ensure you have the required dependencies before installing:

  • Windows
    • windows-build-tools npm package (npm install --global --production windows-build-tools from an elevated PowerShell or CMD.exe)
  • Mac
    • Xcode Command Line Tools.
  • Linux
    • Python (v2.7 recommended, v3.x.x is not supported).
    • make.
    • A C/C++ compiler like GCC.
    • libxtst-dev and libpng++-dev (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.

Plans

  • √ Control the mouse by changing the mouse position, left/right clicking, and dragging.
  • √ Control the keyboard by pressing keys, holding keys down, and typing words.
  • √ Read pixel color from the screen and capture the screen.
  • Find an image on screen, read pixels from an image.
  • Possibly include window management?

Progress

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.

FAQ

Does RobotJS support global hotkeys?

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.

Can I take a screenshot with RobotJS?

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.

Why is <insert key> missing from the keyboard functions?

We've been implementing keys as we need them. Feel free to create an issue or submit a pull request!

How about multi-monitor support?

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.

Story

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.

License

MIT

Based on autopy. Maintained by Jason Stallings.

Comments
  • Windows Support.

    Windows Support.

    Edit by octalmage:

    Windows is completely supported! Just install from npm.

    Known issues:

    All known issues resolved!

    • ~~getPixelColor returns "000000" no matter what in my VM, not sure if it's broken.~~ Fixed in #43.
    • ~~The sqrt functions in rgb.h cause errors, currently commented out in the windows-2 branch.~~ Fixed in 8730e94d4c86bde2a5d2362c921682647bc2de8a.
    • ~~The mssleep function needs to be cross platform.~~ Replaced with microsleep.
    • ~~moveMouse and moveMouseSmooth wouldn't work in my virtual machine. I'm guessing this is because it's a VM, but it would be cool if someone could confirm.~~ This is working!

    Original comment: Hey Octa, I'm trying to use your add on for a node webkit project I'm working on but wasn't able to get very far since the package gets stuck on my windows machine while running the "node-gyp configure" command, just sitting there endlessly. I thought possible your NPM might not be up to date with this github repo, but still the same behavior when I cloned the repo and built it from scratch.

    I notice in binding.gyp that your only condition is 'OS' == "mac". I'm not intimately familiar with building native node modules, so does this mean the package simply does not support window builds right now?

    bug help wanted windows 
    opened by scottmas 61
  • Text Expansion

    Text Expansion

    Would there be any way to do text expansion with robotjs like you can with AutoHotkey?

    I was able to get robotjs working with electron so I could listen for global keypresses, but electron (and nw.js) only seems to be able to listen for key combinations, not key sequences.

    It would be amazing if we could simply turn any key-presses / mouse-movements into events and/or observables so we could deal with them purely in node-land ( and perhaps use something fancy like http://reactivex.io/ so we could just map/filter/etc the keypresses )

    Robotjs is/will be great for sending keyboard commands etc., but I think we'd need a reliable way to listen for these events globally to come close to AutoHotkey. Is there perhaps a node module I haven't found that strictly listens for keypresses / mouse movements globally and outputs them as events ? Surely someone must have written something like this already.

    enhancement 
    opened by Thr1ve 35
  • install fails on ubuntu

    install fails on ubuntu

    Edit by octalmage:

    If RobotJS fails to build, install these packages:

    sudo apt-get install libxtst-dev libpng++-dev
    

    Original comment: There's an error, some header .h file missing?

    solution is to install X developer tools with:

    sudo apt-get install xorg-dev
    

    Perhaps add this to the README file. never mind, doesn't work on Ubuntu :(

    enhancement help wanted linux 
    opened by amih 34
  • moveMouse() is broken on Windows 10

    moveMouse() is broken on Windows 10

    robot.moveMouse(10, 10);
    console.log(robot.getMousePos());
    

    This code must return { x: 10, y: 10 } It returns { x: 9, y: 9 }

    Not always pos-1, for example if moveMouse(100,100) then getMousePos gives back 98,98

    Windows 10 Build 10240 x64 NodeJS 0.12.7 x64 RobotJS 0.2.3 installed via npm

    bug 
    opened by maxdeepfield 33
  • typeString() and keyTap() slow even with 1ms delay

    typeString() and keyTap() slow even with 1ms delay

    robot.setKeyboardDelay(1); robot.typeString('*cough');

    is much slower than having *cough set in the clipboard and doing

    robot.keyToggle('control','down') robot.keyTap('v');

    I think it could be the blocking nature of the module, and the fact that my PC is very slow.

    opened by TreeOfSelf 27
  • Build fails on OSX

    Build fails on OSX

    $ npm --version
    3.3.6
    $ node --version
    v4.1.1
    $ node-gyp --version
    v3.0.3
    $ npm i robotjs
    > [email protected] install /src/snip/node_modules/robotjs
    > node-gyp rebuild
    
      CXX(target) Release/obj.target/robotjs/src/robotjs.o
    ../src/robotjs.cc:2:10: fatal error: 'nan.h' file not found
    #include <nan.h>
             ^
    1 error generated.
    make: *** [Release/obj.target/robotjs/src/robotjs.o] Error 1
    

    I even tried npm i nan on its own to no avail. Running on El Capitan.

    bug mac 
    opened by Qix- 26
  • Using robotjs in electron app

    Using robotjs in electron app

    Hello,

    I would like to use RobotJS in an Electron app. My program works well with Node but when I run it in Electron I get the following error: A dynamic link library (DLL) initialization routine failed. \node_modules\robotjs\build\Release\robotjs.node

    I believe this is the source of the problem https://github.com/electron/electron/blob/v0.37.2/docs/tutorial/using-native-node-modules.md#using-native-node-modules However, I am having trouble figuring out how to fix this on my own because I'm new to developing in general. Is there any chance you can make a prebuilt or something that works with electron?

    opened by Zyphdoz 21
  • Use node-pre-gyp.

    Use node-pre-gyp.

    Installing and compiling RobotJS requires Python and Visual Studio on Windows and this takes a while to get setup. Instead we can provide pre-built binaries that can be installed using npm. This will greatly improve the end-user experience.

    enhancement 
    opened by octalmage 21
  • nodejs v12 fails to build

    nodejs v12 fails to build

    $ yarn add robotjs
    yarn add v1.19.1
    info No lockfile found.
    [1/4] 🔍  Resolving packages...
    [2/4] 🚚  Fetching packages...
    [3/4] 🔗  Linking dependencies...
    [4/4] 🔨  Building fresh packages...
    error /Users/bros/Desktop/node_modules/robotjs: Command failed.
    Exit code: 1
    Command: prebuild-install || node-gyp rebuild
    Arguments: 
    Directory: /Users/bros/Desktop/node_modules/robotjs
    Output:
    prebuild-install WARN install No prebuilt binaries found (target=12.13.0 runtime=node arch=x64 platform=darwin)
    gyp info it worked if it ends with ok
    gyp info using [email protected]
    gyp info using [email protected] | darwin | x64
    gyp info find Python using Python version 2.7.15 found at "/usr/local/opt/python@2/bin/python2.7"
    gyp info spawn /usr/local/opt/python@2/bin/python2.7
    gyp info spawn args [
    gyp info spawn args   '/usr/local/node-v12.13.0-darwin-x64/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
    gyp info spawn args   'binding.gyp',
    gyp info spawn args   '-f',
    gyp info spawn args   'make',
    gyp info spawn args   '-I',
    gyp info spawn args   '/Users/bros/Desktop/node_modules/robotjs/build/config.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   '/usr/local/node-v12.13.0-darwin-x64/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   '/Users/bros/Library/Caches/node-gyp/12.13.0/include/node/common.gypi',
    gyp info spawn args   '-Dlibrary=shared_library',
    gyp info spawn args   '-Dvisibility=default',
    gyp info spawn args   '-Dnode_root_dir=/Users/bros/Library/Caches/node-gyp/12.13.0',
    gyp info spawn args   '-Dnode_gyp_dir=/usr/local/node-v12.13.0-darwin-x64/lib/node_modules/npm/node_modules/node-gyp',
    gyp info spawn args   '-Dnode_lib_file=/Users/bros/Library/Caches/node-gyp/12.13.0/<(target_arch)/node.lib',
    gyp info spawn args   '-Dmodule_root_dir=/Users/bros/Desktop/node_modules/robotjs',
    gyp info spawn args   '-Dnode_engine=v8',
    gyp info spawn args   '--depth=.',
    gyp info spawn args   '--no-parallel',
    gyp info spawn args   '--generator-output',
    gyp info spawn args   'build',
    gyp info spawn args   '-Goutput_dir=.'
    gyp info spawn args ]
    gyp info spawn make
    gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
      CXX(target) Release/obj.target/robotjs/src/robotjs.o
    ../src/robotjs.cc:63:39: error: too few arguments to function call, single argument 'context' was not specified
            const size_t x = info[0]->Int32Value();
                             ~~~~~~~~~~~~~~~~~~~ ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2613:3: note: 'Int32Value' declared here
      V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
      ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8config.h:351:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
    #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                                  ^
    ../src/robotjs.cc:64:39: error: too few arguments to function call, single argument 'context' was not specified
            const size_t y = info[1]->Int32Value();
                             ~~~~~~~~~~~~~~~~~~~ ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2613:3: note: 'Int32Value' declared here
      V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
      ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8config.h:351:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
    #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                                  ^
    ../src/robotjs.cc:97:33: error: too few arguments to function call, single argument 'context' was not specified
            size_t x = info[0]->Int32Value();
                       ~~~~~~~~~~~~~~~~~~~ ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2613:3: note: 'Int32Value' declared here
      V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
      ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8config.h:351:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
    #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                                  ^
    ../src/robotjs.cc:98:33: error: too few arguments to function call, single argument 'context' was not specified
            size_t y = info[1]->Int32Value();
                       ~~~~~~~~~~~~~~~~~~~ ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2613:3: note: 'Int32Value' declared here
      V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
      ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8config.h:351:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
    #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                                  ^
    ../src/robotjs.cc:114:33: error: too few arguments to function call, single argument 'context' was not specified
            size_t x = info[0]->Int32Value();
                       ~~~~~~~~~~~~~~~~~~~ ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2613:3: note: 'Int32Value' declared here
      V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
      ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8config.h:351:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
    #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                                  ^
    ../src/robotjs.cc:115:33: error: too few arguments to function call, single argument 'context' was not specified
            size_t y = info[1]->Int32Value();
                       ~~~~~~~~~~~~~~~~~~~ ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2613:3: note: 'Int32Value' declared here
      V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
      ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8config.h:351:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
    #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                                  ^
    ../src/robotjs.cc:143:39: error: no matching member function for call to 'ToString'
                    v8::String::Utf8Value bstr(info[0]->ToString());
                                               ~~~~~~~~~^~~~~~~~
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2572:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
      V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                               ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2588:31: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                    Local<String> ToString(Isolate* isolate) const);
                                  ^
    ../src/robotjs.cc:159:22: error: no matching member function for call to 'BooleanValue'
                    doubleC = info[1]->BooleanValue();
                              ~~~~~~~~~^~~~~~~~~~~~
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2603:8: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
      bool BooleanValue(Isolate* isolate) const;
           ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2606:51: note: candidate function not viable: requires single argument 'context', but no arguments were provided
                    V8_WARN_UNUSED_RESULT Maybe<bool> BooleanValue(
                                                      ^
    ../src/robotjs.cc:239:35: error: too few arguments to function call, single argument 'context' was not specified
            mouseDelay = info[0]->Int32Value();
                         ~~~~~~~~~~~~~~~~~~~ ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2613:3: note: 'Int32Value' declared here
      V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
      ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8config.h:351:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
    #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                                  ^
    ../src/robotjs.cc:251:30: error: too few arguments to function call, single argument 'context' was not specified
            int x = info[0]->Int32Value();
                    ~~~~~~~~~~~~~~~~~~~ ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2613:3: note: 'Int32Value' declared here
      V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
      ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8config.h:351:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
    #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                                  ^
    ../src/robotjs.cc:252:30: error: too few arguments to function call, single argument 'context' was not specified
            int y = info[1]->Int32Value();
                    ~~~~~~~~~~~~~~~~~~~ ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:2613:3: note: 'Int32Value' declared here
      V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
      ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8config.h:351:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
    #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                                  ^
    ../src/robotjs.cc:418:44: error: expected '(' for function-style cast or type construction
    int GetFlagsFromString(v8::Handle<v8::Value> value, MMKeyFlags* flags)
                                      ~~~~~~~~~^
    ../src/robotjs.cc:418:28: error: no member named 'Handle' in namespace 'v8'
    int GetFlagsFromString(v8::Handle<v8::Value> value, MMKeyFlags* flags)
                           ~~~~^
    ../src/robotjs.cc:418:46: error: use of undeclared identifier 'value'; did you mean 'False'?
    int GetFlagsFromString(v8::Handle<v8::Value> value, MMKeyFlags* flags)
                                                 ^~~~~
                                                 False
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:304:25: note: 'False' declared here
      friend Local<Boolean> False(Isolate* isolate);
                            ^
    ../src/robotjs.cc:418:53: error: unexpected type name 'MMKeyFlags': expected expression
    int GetFlagsFromString(v8::Handle<v8::Value> value, MMKeyFlags* flags)
                                                        ^
    ../src/robotjs.cc:418:65: error: use of undeclared identifier 'flags'
    int GetFlagsFromString(v8::Handle<v8::Value> value, MMKeyFlags* flags)
                                                                    ^
    ../src/robotjs.cc:418:71: error: expected ';' after top level declarator
    int GetFlagsFromString(v8::Handle<v8::Value> value, MMKeyFlags* flags)
                                                                          ^
                                                                          ;
    ../src/robotjs.cc:762:1: error: unknown type name 'BMP'
    BMP buildBMP(Local<Object> info)
    ^
    ../src/robotjs.cc:766:2: error: unknown type name 'BMP'
            BMP img;
            ^
    ../src/robotjs.cc:768:19: warning: 'Get' is deprecated: Use maybe version [-Wdeprecated-declarations]
            img.width = obj->Get(Nan::New("width").ToLocalChecked())->Uint32Value();
                             ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8.h:3457:3: note: 'Get' has been explicitly marked deprecated here
      V8_DEPRECATED("Use maybe version", Local<Value> Get(Local<Value> key));
      ^
    /Users/bros/Library/Caches/node-gyp/12.13.0/include/node/v8config.h:311:29: note: expanded from macro 'V8_DEPRECATED'
      declarator __attribute__((deprecated(message)))
                                ^
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    1 warning and 20 errors generated.
    make: *** [Release/obj.target/robotjs/src/robotjs.o] Error 1
    gyp ERR! build error 
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack     at ChildProcess.onExit (/usr/local/node-v12.13.0-darwin-x64/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
    gyp ERR! stack     at ChildProcess.emit (events.js:210:5)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
    gyp ERR! System Darwin 17.7.0
    gyp ERR! command "/usr/local/node-v12.13.0-darwin-x64/bin/node" "/usr/local/node-v12.13.0-darwin-x64/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /Users/bros/Desktop/node_modules/robotjs
    gyp ERR! node -v v12.13.0
    gyp ERR! node-gyp -v v5.0.5
    gyp ERR! not ok
    
    opened by brandonros 19
  • Windows - Fail to install robotjs multiple errors: MSB4019 & C2500 & C2600

    Windows - Fail to install robotjs multiple errors: MSB4019 & C2500 & C2600

    NPM fails to install robotjs on windows. There are multiple errors. I got the following error the first time I ran npm i robotjs after installing windows build tools and node-gyp. Error: error MSB4019: The imported project "D:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.. Then after I closed and reopened VS Code and ran the same command again, I got a full page or errors:

    $ npm i robotjs
    
    > [email protected] install D:\Projects\Spotify-Muter\node_modules\robotjs
    > prebuild-install || node-gyp rebuild
    
    prebuild-install WARN install No prebuilt binaries found (target=12.2.0 runtime=node arch=x64 platform=win32)
    
    D:\Projects\Spotify-Muter\node_modules\robotjs>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild ) 
    Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
      robotjs.cc
      win_delay_load_hook.cc
    d:\projects\spotify-muter\node_modules\robotjs\src\os.h(26): warning C4005: 'STRICT': macro redefinition (compiling source file ..\src\robotjs.cc) [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.v
    cxproj]
      C:\Program Files (x86)\Windows Kits\8.1\Include\shared\minwindef.h(23): note: see previous definition of 'STRICT' (compiling source file ..\src\robotjs.cc)
    ..\src\robotjs.cc(63): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(63): error C2789: 'x': an object of const-qualified type must be initialized [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj] 
      ..\src\robotjs.cc(63): note: see declaration of 'x'
    ..\src\robotjs.cc(64): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(64): error C2789: 'y': an object of const-qualified type must be initialized [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj] 
      ..\src\robotjs.cc(64): note: see declaration of 'y'
    ..\src\robotjs.cc(97): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(98): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(114): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(115): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(143): error C2661: 'v8::Value::ToString': no overloaded function takes 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(143): error C2512: 'v8::String::Utf8Value::Utf8Value': no appropriate default constructor available [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(159): error C2661: 'v8::Value::BooleanValue': no overloaded function takes 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(239): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(251): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(252): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(418): error C2039: 'Handle': is not a member of 'v8' [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
      c:\users\jim fang\.node-gyp\12.2.0\include\node\v8-platform.h(16): note: see declaration of 'v8'
    ..\src\robotjs.cc(418): error C2065: 'Handle': undeclared identifier [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(418): error C2275: 'v8::Value': illegal use of this type as an expression [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
      ..\src\robotjs.cc(418): note: see declaration of 'v8::Value'
    ..\src\robotjs.cc(418): error C2065: 'value': undeclared identifier [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(418): error C2065: 'flags': undeclared identifier [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(418): error C2275: 'MMKeyFlags': illegal use of this type as an expression [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
      d:\projects\spotify-muter\node_modules\robotjs\src\keypress.h(50): note: see declaration of 'MMKeyFlags'
    ..\src\robotjs.cc(419): error C2448: 'GetFlagsFromString': function-style initializer appears to be a function definition [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(424): error C2039: 'Handle': is not a member of 'v8' [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
      c:\users\jim fang\.node-gyp\12.2.0\include\node\v8-platform.h(16): note: see declaration of 'v8'
    ..\src\robotjs.cc(424): error C2065: 'Handle': undeclared identifier [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(424): error C2275: 'v8::Value': illegal use of this type as an expression [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
      ..\src\robotjs.cc(424): note: see declaration of 'v8::Value'
    ..\src\robotjs.cc(424): error C2065: 'value': undeclared identifier [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(424): error C2065: 'flags': undeclared identifier [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(424): error C2275: 'MMKeyFlags': illegal use of this type as an expression [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
      d:\projects\spotify-muter\node_modules\robotjs\src\keypress.h(50): note: see declaration of 'MMKeyFlags'
    ..\src\robotjs.cc(425): error C2448: 'GetFlagsFromValue': function-style initializer appears to be a function definition [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(457): error C2661: 'v8::Value::ToString': no overloaded function takes 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(457): error C2512: 'v8::String::Utf8Value::Utf8Value': no appropriate default constructor available [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(463): error C2064: term does not evaluate to a function taking 2 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(515): error C2064: term does not evaluate to a function taking 2 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(589): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(603): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(639): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(640): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(708): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(709): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(710): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(711): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(768): error C2660: 'v8::Value::Uint32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(769): error C2660: 'v8::Value::Uint32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(770): error C2660: 'v8::Value::Uint32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(771): error C2660: 'v8::Value::Uint32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(772): error C2660: 'v8::Value::Uint32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(774): warning C4996: 'v8::Object::Get': was declared deprecated [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
      c:\users\jim fang\.node-gyp\12.2.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
    ..\src\robotjs.cc(788): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    ..\src\robotjs.cc(789): error C2660: 'v8::Value::Int32Value': function does not take 0 arguments [D:\Projects\Spotify-Muter\node_modules\robotjs\build\robotjs.vcxproj]
    gyp ERR! build error 
    gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
    gyp ERR! stack     at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:262:23)
    gyp ERR! stack     at ChildProcess.emit (events.js:196:13)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:257:12)
    gyp ERR! System Windows_NT 10.0.18362
    gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
    gyp ERR! cwd D:\Projects\Spotify-Muter\node_modules\robotjs
    gyp ERR! node -v v12.2.0
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok
    npm WARN [email protected] No repository field.
    
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! [email protected] install: `prebuild-install || node-gyp rebuild`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the [email protected] install script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\Jim Fang\AppData\Roaming\npm-cache\_logs\2019-05-20T02_34_16_256Z-debug.log
    

    I will provide the debug log of both of these runs below in the logs section. Also when installing the latest version of windows build tools (5.1.0) the shell freezes after installing python 2.7. See my comment here for a screenshot: https://github.com/octalmage/robotjs/issues/398#issuecomment-493817762 So I just ended up installing 4.0.0 of the build tools instead of 5.1.0

    Expected Behavior

    robotjs to be installed successfully.

    Current Behavior

    NPM installation to install robotjs is erroring.

    Possible Solution

    No idea.

    Steps to Reproduce (for bugs)

    1. npm i robotjs (With or without windows build tools & node-gyp)

    Context

    I am trying to use robotjs in an electron app, but this technically should not matter since I am having trouble to get the thing to even install correctly.

    Your Environment

    • RobotJS version: Latest from npm i robotjs (0.5.1)
    • Node.js version: 12.2.0
    • npm version: 6.9.0
    • Operating System: Windows 10 Home 1903 Build 18362.113

    Steps taken to try to fix:

    Referenced these issues: https://github.com/octalmage/robotjs/issues/253 https://github.com/octalmage/robotjs/issues/264 https://github.com/octalmage/robotjs/issues/398 Nothing worked even after I manually installed and reinstalled windows build tools for about 7 times. Also manually installing node-gyp did not help either.

    Logs

    1st run (the one before I closed VS Code, run without the page full of errors. This was right after windows build tools finished in an admin cmd): https://pastebin.com/H7p996Tc (debug logs are 1800 lines long, so I decided it would be a good idea not to post them here)

    2nd run (after restarting VS Code): https://pastebin.com/nJfQ3hZC

    Here is the log of windows build tools successfully installing: https://pastebin.com/uUq916cm

    opened by AirFusion45 18
  • [multi-monitor] moveMouse wont move to negative position on mac

    [multi-monitor] moveMouse wont move to negative position on mac

    Hey... I use getMousePos to get the mouse position, and it returns negative values sometimes (multiple monitors above my laptop monitor).

    I then try and use robot.moveMouse(800, -954) for example, and it only moves to 800, 0.

    enhancement 
    opened by bradparks 18
  • Bump qs from 6.5.1 to 6.5.3

    Bump qs from 6.5.1 to 6.5.3

    Bumps qs from 6.5.1 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge`: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main

    6.5.2

    • [Fix] use safer-buffer instead of Buffer constructor
    • [Refactor] utils: module.exports one thing, instead of mutating exports (#230)
    • [Dev Deps] update browserify, eslint, iconv-lite, safer-buffer, tape, browserify
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  •  how can  use  utf-8  in  windows  version

    how can use utf-8 in windows version

    how can use your change that support utf in windows version

    Originally posted by @zz85 in https://github.com/octalmage/robotjs/issues/276#issuecomment-287400647

    opened by samantrader 0
  • colorAt never functioning

    colorAt never functioning

    Writing a function to quickly get the colors of a line 1 pixel long 40 pixels wide. No coordinates work when entered into the colorAt function.

    Error: Requested coordinates are outside the main screen's dimensions.

    (I have two monitors but have tested with one turned off and received the same results)

    Expected Behavior

    An array should be built containing all color values in the previously mentioned line.

    Current Behavior

    The following error is spouted.

    Error: Requested coordinates are outside the main screen's dimensions.

    Steps to Reproduce (for bugs)

    1.Take a screenshot of any width and length 2.Attempt to use the colorAt function

    Context

    `

            const array_load = await screen.capture(710 - (i * 67), 80, 40, 1);
            let pixel_array = [];
            for(let i = 0; i < 40; i++){
                pixel_array.push(array_load.colorAt(i, 1))
            }
    

    `

    Your Environment

    • RobotJS version: latest
    • Node.js version: v16.15.0
    • npm version: 6.14.17
    • Operating System: Windows 10 (2 monitors)
    opened by TesDevelopment 0
  • use  arabic or persian character

    use arabic or persian character

    Hi when type arabic or Persian charcater same as "Ø´" and use robot.tap(key) raise an error :

    invalid key code specified

    why ? and how can use this character and codepage thanks a lot

    Expected Behavior

    show correct character

    Current Behavior

    raise an error

    Possible Solution

    I donot know

    Steps to Reproduce (for bugs)

    1. when type persian charcater

    Context

    how can fix it

    Your Environment

    • RobotJS version: last
    • Node.js version: 14.2.9
    • npm version: 6.14.13
    • Operating System: windows 8.1
    opened by samantrader 1
Releases(v0.6.0)
Owner
Jason Stallings
Code is my life.
Jason Stallings
Native UI testing / controlling with node

nut.js (Native UI Toolkit) GitHub Actions Master Develop Native UI testing / automation with node.js About nut.js is a cross-platform native UI automa

nut-tree 1.1k Jan 4, 2023
Node.js Desktop Automation.

Node.js Desktop Automation. Control the mouse, keyboard, and read the screen. RobotJS supports Mac, Windows, and Linux. This is a work in progress so

Jason Stallings 11.5k Dec 28, 2022
Desktop App for mdSilo: Tiny Knowledge silo on your desktop.

mdSilo A mind silo for storing ideas, thought, knowledge with a powerful writing tool. built with React and Tauri. Demo Discord This is desktop app, a

D.Loh 203 Dec 27, 2022
This provides an extension integration with Docker Desktop to run k9s quickly and easily through the Docker Desktop interface.

k9s extension for Docker Desktop This provides an extension integration with Docker Desktop to allow k9s quickly and easily through the Docker Desktop

James Spurin 14 Dec 16, 2022
Next-gen browser and mobile automation test framework for Node.js

Next-gen browser and mobile automation test framework for Node.js. Homepage | Developer Guide | API Reference | Contribute | Changelog | Roadmap Webdr

WebdriverIO 7.9k Jan 3, 2023
Free and open fair-code licensed node based Workflow Automation Tool. Easily automate tasks across different services.

n8n - Workflow Automation Tool n8n is an extendable workflow automation tool. With a fair-code distribution model, n8n will always have visible source

n8n - Workflow Automation 27.2k Dec 30, 2022
Simple email automation library for Node.js

Dakiya Simple email automation for Node.js made easy. Features Zero config management: Use simple, chainable code to create email sequences. Email pla

Arnav Gosain 12 Sep 22, 2022
An interactive CLI automation tool 🛠ī¸ for creating react.js and next.js projects most fast and efficiently. ⚛ī¸

An interactive CLI automation tool ??ī¸ for creating react.js and next.js projects most fast and efficiently. ⚛ī¸ About ℹī¸ ReexJs CLI is an interactive

Alexis Guzman 27 Apr 12, 2022
Solana blockchain candy machine app boilerplate on top of Metaplex Candy Machine. NextJS, Tailwind, Anchor, SolanaLabs.React, dev/mainnet automation scripts.

NFT Candy Factory NOTE: This repo will prob only work on unix-based environments. The NFT Candy Factory project is designed to let users fork, customi

Kevin Faveri 261 Dec 30, 2022
Demo Selenium JavaScript E2E tests (end-to-end web browser automation tests)

Demo Selenium JavaScript E2E tests (end-to-end web browser automation tests)

Joel Parker Henderson 1 Oct 9, 2021
Tools for the openHAB JavaScript Automation Add-On.

openHAB JS Automation Tools This library provides some utilites for the openHAB JS Scripting Add-On. The JavaScript Add-On is using the NodeJS version

Florian Hotze 4 Oct 18, 2022
This repository contains a basic example on how to set up and run test automation jobs with CircleCI and report results to Testmo.

CircleCI test automation example This repository contains a basic example on how to set up and run test automation jobs with CircleCI and report resul

Testmo 2 Dec 23, 2021
A demo for E2E build piplelines in Design Systems using monorepo's and automation :zap:.

Design System Pipelines demo What is it? A working demonstration for end-to-end build piplelines in Design Systems using Primer Primitives, Primer CSS

Rez 7 Oct 20, 2022
A simple bot for Lingos exercises automation written entirely in Typescript.

Linger The spiritual successor to lingus Stack used Typescript SWC Yarn Nodejs Puppeteer Dotenv UUID Nodemon Instalation Prerequisites: Nodejs: ^16.13

TlenDev 2 May 9, 2022
Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.

?? Playwright Documentation | API reference Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit w

Microsoft 46.3k Jan 9, 2023
Automation scripts I use for my Bitburner gameplay videos.

Bitburner Automation Note: I release a new piece of code when I finish a video segment in the series. If it's a multi-part series, the scripts will no

Chris Rabe 68 Dec 25, 2022
BI, API and Automation layer for your Engineering Operations data

Faros Community Edition Faros Community Edition (CE) is an open-source engineering operations platform that connects the dots between all your operati

Faros AI 272 Dec 23, 2022
BBGO Karma Bot - BBG token distribution automation

BBGO Karma Bot - BBG token distribution automation Requirement node 16 yarn pm2 mongodb Setup Note that while setting a secret is optional on GitHub,

StarCrypto 3 Dec 15, 2022
Service Installer for VMware Tanzu is a one-click automation solution that enables VMware field engineers to easily and rapidly install, configure, and operate VMware Tanzu services across a variety of cloud infrastructures.

Service Installer for VMware Tanzu Service Installer for VMware Tanzu seeks to provide a one-click automation solution to enable our VMware engineers

VMware Tanzu 42 Dec 1, 2022
Campus hiring and training automation platform.

⚡ Supported Use Cases Student register themselves on the portal Student fills details in their academic profile Student opt for campus hiring / intern

null 7 Aug 24, 2022