OMARCHY / ELGATO
Getting started
Install the plugin, connect your gear, and keep your setup up to date.
On this page
Requirements
Omarchy Quattro with Omarchy Shell and the omarchy plugin commands.
First enable checks system requirements and opens a terminal prompt if setup is
needed. Accept the prompt to install missing packages through omarchy pkg add
and configure Stream Deck USB access. Administrator authentication may be
requested. The plugin then prepares its locked Node.js runtime automatically.
System packages
Only missing requirements are passed to omarchy pkg add. Existing packages
are reused. The complete set the script can request is:
| Arch package | Requirement and purpose |
|---|---|
nodejs |
Node.js 22.18 or newer for the backend and runtime setup. |
npm |
Installs the locked runtime dependencies. |
imagemagick |
magick renders button icons and LCD artwork. |
fontconfig |
fc-match selects the artwork font. |
ttf-dejavu |
Font fallback when the selected font file is unavailable. |
avahi |
avahi-browse discovers network Key Lights. |
wireplumber |
wpctl controls audio volume and mute. |
wtype |
Sends keyboard input for actions. |
uwsm |
uwsm-app launches applications in the desktop session. |
gtk3 |
gtk-launch launches desktop entries. |
xdg-utils |
xdg-open opens files and URLs. |
The package manager may also install their dependencies. Setup does not record
which packages were already installed. Omarchy supplies the surrounding tools:
omarchy, omarchy-shell, bash, gum, jq, flock, sudo,
systemctl, udevadm, and standard filesystem utilities; the requirements
script does not install these separately. Git is needed for repository-based
installation and updates.
System changes
Setup copies assets/udev/70-omarchy-elgato.rules to
/etc/udev/rules.d/70-omarchy-elgato.rules with mode 0644. If a different
file already exists there, it is replaced without a backup. The rules match
hidraw* devices, set device mode 0660, and add uaccess so the active
local desktop user can access them without running the daemon as root.
The complete USB vendor/product match list is:
- Vendor
0fd9:0060,0063,006c,006d,0080,0084,0086,008f,0090,009a,00a5,00aa,00b3,00b8,00b9,00ba,00c6,00e4. - Vendor
1b1c:2b18.
Setup runs udevadm control --reload-rules and
udevadm trigger --subsystem-match=hidraw --action=add. Reconnect the Stream
Deck if it is not detected afterward. No user is added to a device-access group.
If avahi-daemon.service is inactive, setup runs
systemctl enable --now avahi-daemon.service, starting it immediately and
allowing it to start at boot. An already active service is left as it is.
These changes require administrator authentication. There is no separate
systemd service installed for the plugin: Omarchy Shell owns its daemon.
Actions for optional applications appear only when their executable is available. User-installed action packs provide their own dependency checks.
Install
Install and enable through Omarchy:
omarchy plugin add https://github.com/dxun-dev/omarchy-elgato.git --enable
Omarchy asks where to place the widget. On first enable, accept any system setup prompt; the service then installs its locked runtime dependencies in the user data directory. This requires internet access and may take a moment. Click the Elgato icon when it appears to configure your devices.
Without --enable, setup waits until you enable the plugin. If you decline the
system setup prompt, no packages or USB rules are changed; use Retry setup
in the editor when you are ready.
For an earlier development install, disable omarchy-elgato before enabling
this plugin. Existing profiles, icons, and action packs are preserved.
Use and configure
Click the Elgato bar icon to open the editor. Choose a connected device or an offline model, select a button or dial, and assign an action. Use the display settings for icons, text, background colors, and dial LCD artwork. Stateful actions expose an icon setting for each reported state; launchers keep a single icon. Detach opens the editor in a separate window; Dock returns it to the bar. Escape closes the editor or cancels an active edit.
Move the widget with:
omarchy bar move dxun-dev.omarchy-elgato --section left
See the usage guide for pages, folders, colors, status icons, and CLI examples. See action packs to add your own actions.
User files
Plugin data paths respect XDG_CONFIG_HOME, XDG_STATE_HOME,
XDG_CACHE_HOME, and XDG_DATA_HOME, respectively. The Omarchy plugin
manager currently uses ~/.config/omarchy/plugins/; the local installer
also supports XDG_CONFIG_HOME for that destination.
| Purpose | Default location |
|---|---|
| Installed plugin | ~/.config/omarchy/plugins/dxun-dev.omarchy-elgato/ |
| Local-install backups | ~/.local/share/omarchy-plugin-backups/dxun-dev.omarchy-elgato.backup-<timestamp> |
| Omarchy removal backups (non-Git installs) | ~/.config/omarchy/plugins/.dxun-dev.omarchy-elgato.bak.<timestamp> |
| Mappings and pages | ~/.config/omarchy-elgato/profile.json |
| Custom icons | ~/.config/omarchy-elgato/icons/ |
| Action packs | ~/.config/omarchy-elgato/actions/ |
| Status and discovered-light inventory | ~/.local/state/omarchy-elgato/ |
| Generated artwork cache | ~/.cache/omarchy-elgato/ |
| Runtime dependencies | ~/.local/share/omarchy-elgato/runtime/ |
The installed plugin contains its manifest, QML widget/editor/service, compiled
backend, bin/omarchy-elgato helper, scripts, assets, default configuration,
example action packs, package manifests/lockfile, preview images, README,
changelog, license, and third-party notices. Git-based installs also contain the
repository metadata. The helper is not placed globally on PATH.
Runtime setup copies package.json and package-lock.json into the runtime,
then runs npm ci --omit=dev. This installs @elgato-stream-deck/node,
node-hid, and all locked transitive dependencies, including native HID and
JPEG modules. A .runtime-ready marker records the package/Node/platform
signature. Downloads can also create npm cache and logs (normally ~/.npm/,
or the configured npm cache location). These are shared with other npm projects.
The local installer’s --offline option copies the checkout’s entire
node_modules instead, which can include development dependencies.
Setup seeds actions/voxtype/ from the bundled example only if absent;
it does not install the VOXtype application. Optional action applications and
user action-pack dependencies are not automatically installed.
Normal use creates profile.json, optionally a migration backup
profile.before-pages.json, and profile.lock in the configuration directory.
The state directory holds status.json, light-inventory.json,
runtime-status.json, daemon/setup lock files, and temporary files used for
atomic writes. Cache files include generated RGB artwork, SVGs, and PNG previews.
Enabling changes Omarchy Shell’s plugin enablement/bar placement configuration;
logs are written to the existing user journal. It does not install another
journal or logging service.
The local installer builds dist/ in the checkout, stages files under
.omarchy-elgato-stage-<UUID> in the plugin directory, validates them, and
removes its staging directory on completion or failure. Replacing an existing
local installation moves it into the backup location above. Development
npm ci also creates node_modules/ in the checkout, including TypeScript
and Node type definitions; those are separate from ordinary plugin setup.
OMARCHY_ELGATO_RUNTIME can override the dependency location.
OMARCHY_ELGATO_FONT can select a font file; otherwise Fontconfig resolves the
system’s sans-serif font. Applications and icons use XDG data directories.
Update
omarchy plugin update dxun-dev.omarchy-elgato
Omarchy reloads the plugin. The service refreshes runtime dependencies when needed, preserving profiles, icons, action packs, and bar placement.
Disable or remove
omarchy plugin disable dxun-dev.omarchy-elgato
omarchy plugin remove dxun-dev.omarchy-elgato
Disabling stops the daemon but retains all files. There is no project-specific
uninstall script: omarchy plugin remove unloads the plugin and handles its
installed directory. For a Git checkout it deletes that directory; for a local
non-Git installation it moves the directory to the hidden backup path in
User files. For a symlink installation it removes only the link.
Optional cleanup after removal
Removal leaves profiles, icons, action packs (including the seeded VOXtype pack), state, generated artwork, runtime dependencies, install/removal backups, npm cache/logs, system packages, the udev rule, and Avahi’s service configuration. Back up your settings before deleting them. To remove plugin-owned user data, delete these directories, substituting your XDG locations when set:
~/.config/omarchy-elgato/: mappings, migration backup, custom icons and action packs.~/.local/state/omarchy-elgato/: status, inventory and locks.~/.cache/omarchy-elgato/: generated artwork.~/.local/share/omarchy-elgato/runtime/: npm runtime; use yourOMARCHY_ELGATO_RUNTIMElocation if overridden.
Delete only this plugin’s timestamped backups listed in User files;
omarchy-plugin-backups/ and npm’s cache may contain other projects’ data.
Development checkouts and their dist/ and node_modules/ also remain.
Existing user-journal entries follow your system’s normal retention policy.
To remove the USB access rule after removing the plugin:
sudo rm -- /etc/udev/rules.d/70-omarchy-elgato.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=hidraw --action=add
Disconnect and reconnect the devices to reapply access under the remaining rules. If you had a custom rule at that path before setup, restore your own backup instead. Another Elgato integration may still need this rule.
If setup enabled Avahi and no other application needs it, you can reverse that
change with sudo systemctl disable --now avahi-daemon.service. Keep it if
other applications rely on local-network discovery. Likewise, review the package
table above and your package-manager history before removing packages with
omarchy pkg remove <package>; many are shared Omarchy desktop requirements.
There is no automatic package removal or restoration of prior service/rule
state, because setup does not keep an ownership or before-state record.
Compatibility and limitations
Model layouts cover Classic variants, Plus, Mini, XL, Neo, Pedal, Studio, Plus XL, and supported Modules. Multiple units of the same model share mappings and page state. Additional models and dial LEDs have automated mock coverage; physical hardware verification is incomplete. The Neo information screen has clock/date, page, microphone mute, and light status. Touch gestures, automatic touch navigation, Studio NFC, Network Dock transport, Wave-specific controls, and Facecam controls are not implemented.
Action packs provide command actions and status queries. Live tile providers and column reservations, such as Herdr agent columns, are future work.