Elgato Stream Deck × Omarchy

Fifteen keys.
Zero friction.

omadeck makes the Stream Deck feel like it shipped with Omarchy. Launch apps, run scripts, play sounds, open sites and drive Hyprland — with your theme painted on every key. Written in Rust. Lives in 9 MB.

    --:--

    Features

    Everything a key should do.
    Nothing it shouldn't.

    Five kinds of action

    • Launch appPick from your installed apps — icon and name come along. Launched through uwsm-app, exactly like Omarchy does.
    • Run scriptAny executable, optionally in a terminal so you can watch it run.
    • Play soundStraight to PipeWire with per-key volume.
    • Open websiteOne click fetches the site's icon for the key.
    • HyprlandLua dispatchers or classic syntax — workspace 3 just works on Lua-config Hyprland.

    Theme-aware by default

    Backgrounds, labels, glyphs and the press ring come from your Omarchy theme — and follow it live when you switch.

    Icons your way

    PNG, JPEG, SVG, WebP — or any Nerd Font glyph tinted in your accent colour. Labels render in your Omarchy font.

    Live, tactile editing

    Edits land on the hardware as you type. Drag to rearrange. Press a physical key and the editor jumps to it.

    Featherweight

    A Rust daemon using ~9 MB and 0% CPU at idle. Survives replugs and keeps your last good layout through config typos.

    Scriptable

    omadeckd press 3 fires a key from any script or Hyprland binding. list and snapshot round out the CLI.

    Portable

    One folder — ~/.config/omadeck — holds the layout and every icon. Copy it to your next machine and go.

    How it works

    Two small programs.
    One plain-text file.

    omadeck writes config.toml; omadeckd watches it and the Omarchy theme, drives the Stream Deck over USB, and streams key events back to omadeck over a Unix socket. omadeckGTK4 + libadwaita app config.toml~/.config/omadeck omadeckdRust · systemd --user Stream DeckUSB HID · 72px JPEG keys Omarchy themecolors.toml · font apps · scriptsuwsm · pw-play · hyprctl writes watches live recolour keys ⇄ pixels runs events · omadeck.sock
    The configurator only ever writes the config file. The daemon watches it — and your theme — and repaints. Both render keys with the same Rust code, so the preview is the hardware.

    The configurator

    Click a key.
    Make it yours.

    A native libadwaita app that tiles beautifully under Hyprland. Pick an app and its icon arrives with it. Pick a site and grab its favicon. Paste a Nerd Font glyph and it's tinted with your accent colour.

    • Drag keys to rearrange
    • Press a physical key to jump to it
    • ▶ to test any action from the editor
    • Starts the daemon for you if it isn't running
    The omadeck configurator: a Stream Deck with the starter layout above an editor showing a Launch app action for the Terminal key.

    Plain text, forever

    Your deck is
    one TOML file.

    Edit it by hand, keep it in your dotfiles, diff it in git. The daemon reloads the moment you save — and a typo never blanks your deck; it keeps the last good layout.

    Prefer the command line? omadeckd press 3 fires a key from any script or Hyprland binding, and omadeckd snapshot deck.png renders your layout.

    ~/.config/omadeck/config.toml
    brightness = 70
    
    [style]
    follow_theme = true   # colours from Omarchy
    
    [[key]]
    index = 0
    label = "Terminal"
    icon = "icons/utilities-terminal.png"
    [key.action]
    type = "app"
    command = "xdg-terminal-exec"
    
    [[key]]
    index = 7
    label = "3"
    [key.action]
    type = "hyprland"
    dispatch = "workspace 3"
    
    [[key]]
    index = 11
    label = "Night light"
    glyph = "f0594"       # Nerd Font moon
    [key.action]
    type = "app"
    command = "omarchy toggle nightlight"

    Install

    Up and running
    before your coffee cools.

    1. 1 Install from the AUR

      yay -S omadeck-bin

      Prebuilt binaries. Prefer to build it yourself? Use yay -S omadeck, or clone the repo and run scripts/install.sh.

    2. 2 Start the daemon

      systemctl --user enable --now omadeckd

      A tiny user service that starts with your desktop. If the deck isn't detected straight away, replug it once so the udev rule applies.

    3. 3 Open omadeck

      Super + Space → omadeck. Your deck lights up with the starter layout.

    DecksOriginal · V2 · MK.2 · Mini · XL · Neo · +
    Built forOmarchy · Hyprland · PipeWire · uwsm
    StackRust · GTK4 · libadwaita · hidapi
    LicenseMIT