Skip to content

Repository files navigation

Omarchy Loupedeck

Native Loupedeck Live integration for Omarchy. It turns the deck into an Omarchy control surface without the discontinued vendor app, Wine, or global keyboard/input permissions.

What it controls

  • Touch keys: Terminal, browser, Files, Omarchy menu, screenshot, clipboard, fullscreen, floating window, workspace navigation, close window, and lock.
  • Round buttons 1-8: Hyprland workspaces 1-8.
  • Top knobs: output and microphone volume; press to mute.
  • Center knobs: display brightness and workspace navigation.
  • Bottom knobs: cycle/focus windows; press to raise/fullscreen.
  • Touch-key labels, colors, physical-button LEDs, brightness, and haptics.

All actions are ordinary Omarchy, Hyprland, PipeWire, and brightness commands. They are declared as executable/argument arrays in mapping.mjs and executed without a shell.

Supported hardware

Device USB ID Status
Loupedeck Live 2ec2:0004 Supported
Loupedeck Live S 2ec2:0006 Not yet mapped
Loupedeck CT 2ec2:0003 / 2ec2:0007 Not yet mapped

Tested on Omarchy 4.0.2 with Loupedeck Live firmware 0.2.5.

Install

git clone https://github.com/brkovski123/omarchy-loupedeck.git ~/.local/src/omarchy-loupedeck
cd ~/.local/src/omarchy-loupedeck
./install.sh

The installer:

  1. copies the controller to ~/.local/share/omarchy-loupedeck;
  2. installs locked Node dependencies with npm ci;
  3. asks for sudo only to install a device-specific udev rule;
  4. enables a user service tied to the graphical session.

Unplug and reconnect the deck if it was already connected. No logout is normally required.

Customize

Edit ~/.local/share/omarchy-loupedeck/mapping.mjs, then restart:

systemctl --user restart omarchy-loupedeck

Commands are arrays such as:

{ label: "TERM", color: "#7aa2f7", command: ["omarchy", "launch", "terminal"] }

Status and logs

systemctl --user status omarchy-loupedeck
journalctl --user -u omarchy-loupedeck -f
./diagnose.sh

Security model

  • The udev rule applies only to the Loupedeck Live serial interface.
  • Access is granted to the active local session through uaccess.
  • The controller does not join the input group or access /dev/uinput.
  • Commands use spawn(..., { shell: false }); configuration is not evaluated by a command shell.
  • Dependencies are locked in package-lock.json.

Review mapping.mjs before installation if you prefer a smaller action set.

Uninstall

./uninstall.sh

Credits

Device communication is powered by the unofficial foxxyz/loupedeck library.

License

MIT

About

Native Loupedeck Live control surface integration for Omarchy

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages