You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

loupedeck-commander

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

loupedeck-commander

A system to ease working with LoupeDeck devices using CMD-line, OPC/UA or HTTP-client interfaces

1.3.3
latest
Source
npmnpm
Version published
Weekly downloads
6
-53.85%
Maintainers
1
Weekly downloads
 
Created
Source

loupedeck-commander

Getting started

The loupedeck-commander is helping you using your Loupedeck device more easily, and connect it with custom commands you define with script files.

Features:

  • Reference image files for every state of your button in the touch-display fields
  • Connect commands to your state transitions
  • Tested with following LoupeDeck devices:
    • LoupeDeck Live
    • LoupeDeck CT

Runs on:

  • Linux (Tested with Ubuntu 22.04 and Debian 11/12 on x64 & arm32/arm64)
  • Windows (Tested with Windows 10/11 on x64)

Small footprint

  • Raspberry PI Zero is suitable to run this

Please take care about the following:

  • LoupeDeck devices after version 0.2.x use a serial interface instead of WebSocket. When using this library please upgrade your firmware using the LoupeDeck Software Tested with Firmware version version 0.2.5

Basic Usage

Do the following steps:

# init your new node package
npm init

# install the loupedeck-commander dependency
npm install -s loupedeck-commander 

Create a new configuration file with at least one profile or copy from here, and replace the image references with your own icons (90x90px size):

Create a index.mjs file to open up your loupedeck connection:

# save as index.mjs
import { BaseLoupeDeckHandler } from 'loupedeck-commander'

const handler = new BaseLoupeDeckHandler('config.yaml')

/**
 * Stop the handlers when a signal like SIGINT or SIGTERM arrive
 * @param {*} signal 
 */
const stopHandler = async(signal) =>  {
  console.log(`Receiving ${signal} => Stopping processes.`)
  await handler.stop()
}

// Initiating the signal handlers:
// see https://www.tutorialspoint.com/unix/unix-signals-traps.htm
process.on('SIGINT', async (signal) => { stopHandler(signal) })
process.on('SIGTERM', async (signal) => { stopHandler(signal) })

// Start it
await handler.start()

// Take care of running background processes and stop them accordingly:
await new Promise((resolve) => process.once("SIGINT", resolve));

Run the script using the following command:

node index.mjs

If you end up with errors related to canvas module - please install the dependencies as mentioned below, and run npm install -s again

Thanks

Big thanks go out to foxxyz and his team maintaining a great javascript loopdeck module

Hints

Cannot connect to Loupedeck device

You may need to add your user to the dialout group to allow access to the LoupeDeck device, you could do su using the usermod as shown below

# ls -la /dev/ttyACM0 
crw-rw---- 1 root dialout 166, 0 Nov 30 12:59 /dev/ttyACM0

# add the current user to the dialout group:
# sudo usermod -a -G dialout $USER

After modifying users group you need to logout and login again to activate this change

CANVAS Module - additional effort needed

The library is using canvas to load images and render graphical content on the LoupeDeck devices. Please follow the instructions to install the preconditions, to properly use canvas on your system.

Example for Ubuntu:

# different build & graphic dev-libs are needed to use canvas module:
sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev

Resizing of images

The buttons images shown on the different buttons should be prepared with specific resolutions:

  • Main/Center Touch-Area: 90px x 90px per Button
  • Left/Right Touch-Area: 90px x 270px per Button
  • LoupeDeck CT Knob Touch-Area: 240px x 240px Button

if you already have suitable icons with the right aspect ratio, you could resize them with imagemagick/mogrify:

mkdir resized
mogrify -resize 90x90 -quality 100 -path resized *.png

FAQs

Package last updated on 06 Jun 2025

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